
Apple's iOS 14.5+ privacy changes broke browser-based Meta Pixel tracking. The Conversions API (CAPI) sends event data server-to-server, bypassing browser restrictions. Set it up on ClickFunnels with no coding required.
TL;DR: Apple's iOS 14.5+ privacy changes broke browser-based Meta Pixel tracking for a significant portion of your audience. The Conversions API (CAPI) sends event data server-to-server, bypassing browser restrictions. This guide walks you through setting it up on ClickFunnels using the native integration -- no coding required.
If you are running Meta ads and wondering why your reported conversions do not match your actual leads, you are not imagining things.
Since Apple's iOS 14.5 update in 2021, Safari and iOS users can opt out of browser-based tracking. When they do, your Meta Pixel cannot see them. They click your ad, they opt in to your funnel, but Meta never records the conversion. Your ad reports show fewer leads than you actually got, your cost-per-lead looks inflated, and the algorithm cannot optimize because it is missing data.
The Conversions API fixes this. Instead of relying on the browser to send event data (which users can block), CAPI sends event data directly from your server to Meta's servers. The user's browser is not involved. Privacy choices are respected, but Meta still gets the conversion signal it needs to optimize your campaigns.
Here is how to set it up on ClickFunnels.
```
WITHOUT CAPI (Browser Pixel Only):
User clicks ad → Lands on your page → Browser fires pixel → Meta records event
↑ BLOCKED by iOS 14.5+
WITH CAPI (Server-Side + Browser):
User clicks ad → Lands on your page → Browser fires pixel → Meta records event
→ Server sends event → Meta records event
↑ NOT blocked by iOS 14.5+
```
When both the pixel and CAPI fire the same event, Meta deduplicates them automatically using the `event_id` parameter. You do not get double-counted conversions. You get more complete data.
If you have not installed the Meta Pixel yet, do that first. CAPI supplements the pixel -- it does not replace it. You need both running together for maximum data accuracy.
Security note: This access token gives server-level access to your pixel data. Do not share it publicly, commit it to a public repository, or paste it in a document others can access. Treat it like a password.
ClickFunnels has a native Conversions API integration. No custom code, no third-party middleware, no Zapier.
ClickFunnels will now send the following events server-side:
This is critical. Without deduplication, every event fires twice (once from the browser pixel, once from CAPI), and your conversion counts are inflated.
ClickFunnels handles deduplication automatically when using the native integration. It sends a matching `event_id` with both the browser pixel event and the server event. Meta sees both, recognizes they are the same event, and counts it once.
To verify deduplication is working:
If you see two separate events without deduplication, the `eventid` parameter is not matching. This usually means the pixel was installed via GTM with custom code rather than ClickFunnels' native integration. In that case, you need to ensure your GTM pixel tag passes the same `eventid` that ClickFunnels sends server-side.
AEM is Meta's response to iOS 14.5+ restrictions. It limits you to 8 prioritized conversion events per domain. When a user opts out of tracking, Meta can only report the single highest-priority event from that session.
To configure AEM:
<style>.cf-tbl-1{width:100%;max-width:720px;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.04),0 4px 12px rgba(0,0,0,0.06);font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:#1a1a2e}.cf-tbl-1 thead th{background:#1a1a2e;color:#fff;font-weight:600;font-size:13px;letter-spacing:0.03em;text-transform:uppercase;padding:16px 24px;text-align:left}.cf-tbl-1 thead th:not(:first-child){text-align:center}.cf-tbl-1 tbody tr{transition:background 0.15s ease}.cf-tbl-1 tbody tr:hover{background:#f8f7ff}.cf-tbl-1 tbody td{padding:18px 24px;font-size:14.5px;line-height:1.5;border-bottom:1px solid #f0f0f5}.cf-tbl-1 tbody tr:last-child td{border-bottom:none}.cf-tbl-1 tbody td:first-child{font-weight:600;color:#1a1a2e;position:relative;padding-left:36px}.cf-tbl-1 tbody td:first-child::before{content:'';position:absolute;left:24px;top:50%;transform:translateY(-50%);width:4px;height:20px;border-radius:4px}.cf-tbl-1 tbody td:not(:first-child){text-align:center;color:#555}.cf-tbl-1 tbody tr:nth-child(6n+1) td:first-child::before{background:#6366f1}.cf-tbl-1 tbody tr:nth-child(6n+2) td:first-child::before{background:#f59e0b}.cf-tbl-1 tbody tr:nth-child(6n+3) td:first-child::before{background:#10b981}.cf-tbl-1 tbody tr:nth-child(6n+4) td:first-child::before{background:#ec4899}.cf-tbl-1 tbody tr:nth-child(6n+5) td:first-child::before{background:#8b5cf6}.cf-tbl-1 tbody tr:nth-child(6n+6) td:first-child::before{background:#06b6d4}@media(max-width:540px){.cf-tbl-1 thead th,.cf-tbl-1 tbody td{padding:12px 14px;font-size:13px}.cf-tbl-1 tbody td:first-child{padding-left:26px}.cf-tbl-1 tbody td:first-child::before{left:14px}}</style><table class="cf-tbl-1"><thead><tr><th>Priority</th><th>Event</th><th>Why</th></tr></thead><tbody><tr><td>1</td><td>Purchase</td><td>Highest business value</td></tr><tr><td>2</td><td>Schedule</td><td>Strategy call booked</td></tr><tr><td>3</td><td>Lead</td><td>Email opt-in</td></tr><tr><td>4</td><td>CompleteRegistration</td><td>Application submitted</td></tr><tr><td>5</td><td>ViewContent</td><td>Page view with intent</td></tr><tr><td>6</td><td>PageView</td><td>Basic page load</td></tr></tbody></table>
Why this order matters: If an iOS user opts out of tracking, visits your opt-in page (ViewContent), and then submits the form (Lead), Meta will only report the Lead event because it is higher priority. If they also book a call (Schedule), Meta reports only the Schedule. You always get the most valuable event.
Domain verification tells Meta that you own your domain and have authority to configure events for it.
DNS verification is the most reliable because it does not depend on your website platform. Add the TXT record, wait 15--30 minutes for propagation, then verify.
Do not skip this step. Run through the full flow as if you were a new lead:
<style>.cf-tbl-2{width:100%;max-width:720px;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.04),0 4px 12px rgba(0,0,0,0.06);font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:#1a1a2e}.cf-tbl-2 thead th{background:#1a1a2e;color:#fff;font-weight:600;font-size:13px;letter-spacing:0.03em;text-transform:uppercase;padding:16px 24px;text-align:left}.cf-tbl-2 thead th:not(:first-child){text-align:center}.cf-tbl-2 tbody tr{transition:background 0.15s ease}.cf-tbl-2 tbody tr:hover{background:#f8f7ff}.cf-tbl-2 tbody td{padding:18px 24px;font-size:14.5px;line-height:1.5;border-bottom:1px solid #f0f0f5}.cf-tbl-2 tbody tr:last-child td{border-bottom:none}.cf-tbl-2 tbody td:first-child{font-weight:600;color:#1a1a2e;position:relative;padding-left:36px}.cf-tbl-2 tbody td:first-child::before{content:'';position:absolute;left:24px;top:50%;transform:translateY(-50%);width:4px;height:20px;border-radius:4px}.cf-tbl-2 tbody td:not(:first-child){text-align:center;color:#555}.cf-tbl-2 tbody tr:nth-child(6n+1) td:first-child::before{background:#6366f1}.cf-tbl-2 tbody tr:nth-child(6n+2) td:first-child::before{background:#f59e0b}.cf-tbl-2 tbody tr:nth-child(6n+3) td:first-child::before{background:#10b981}.cf-tbl-2 tbody tr:nth-child(6n+4) td:first-child::before{background:#ec4899}.cf-tbl-2 tbody tr:nth-child(6n+5) td:first-child::before{background:#8b5cf6}@media(max-width:540px){.cf-tbl-2 thead th,.cf-tbl-2 tbody td{padding:12px 14px;font-size:13px}.cf-tbl-2 tbody td:first-child{padding-left:26px}.cf-tbl-2 tbody td:first-child::before{left:14px}}</style><table class="cf-tbl-2"><thead><tr><th>Problem</th><th>Likely Cause</th><th>Fix</th></tr></thead><tbody><tr><td>No Server events</td><td>CAPI access token not saved correctly</td><td>Re-enter the token in ClickFunnels integrations</td></tr><tr><td>Server events but no Browser events</td><td>Pixel not installed or ad blocker active</td><td>Verify pixel installation, test in incognito without ad blocker</td></tr><tr><td>Events not deduplicating</td><td>Mismatched event_id</td><td>Use ClickFunnels native integration (not custom GTM code) for CAPI</td></tr><tr><td>Events delayed by 5+ minutes</td><td>Normal for CAPI</td><td>Server events can have a slight delay -- this is expected and does not affect optimization</td></tr><tr><td>Domain not verified</td><td>DNS propagation pending</td><td>Wait 30 minutes and try again</td></tr></tbody></table>
The Conversions API (CAPI) sends conversion event data directly from your server to Meta's servers, bypassing the browser. This means conversion events are tracked even when users block cookies or use iOS 14.5+ privacy settings that prevent the Meta Pixel from firing.
Yes. Run both together. The pixel handles real-time browser events and enables features like dynamic ads. CAPI fills in the gaps for users who block browser tracking. Together they give you the most complete picture.
No, as long as deduplication is working. Both the pixel and CAPI send a matching `event_id` for each event. Meta sees both, recognizes they are the same action, and counts it once. Verify deduplication in Events Manager > Test Events.
It is not technically required, but it is strongly recommended. Without CAPI, you are likely under-reporting conversions by 20--40% depending on your audience's device mix. This directly impacts Meta's ability to optimize your campaigns.
Yes. ClickFunnels has a built-in Conversions API integration. You enter your Pixel ID and CAPI access token in the integration settings, and ClickFunnels handles the server-side event sending and deduplication automatically.
Estimates vary, but most advertisers see 15--40% of conversions go unreported when relying on the browser pixel alone. The exact percentage depends on your audience's iOS vs. Android split and their tracking opt-out rate.
Carlos Vargas is the founder of Bezalel Digital, a technology consulting firm that helps entrepreneurs and small business owners implement AI, funnels, and automation to scale their businesses. Need help setting up your tracking infrastructure? [Book a free strategy call](/strategy-call).
Disclaimer: Tracking accuracy improvements depend on your audience's device mix, browser settings, and platform configurations. The percentages cited in this article are industry estimates and may vary for your specific situation.

CEO Of Bezalel Digital
Get the latest insights on digital marketing, entrepreneurship, leadership, and faith-based topics from CEO Carlos Vargas. At Best Blog Ever, you'll find the best information available to help you level up your success and grow your business. With content tailored to your individual needs, you'll be equipped to take on any challenge. Get started today and join the Best Blog Ever community!

Bezalel Digital © 2023 | All Rights Reserved | CarlosVargas.com
Terms | Income Disclaimer