Last updated November 5, 2026 · Ghazanfar · 10 min read
Facebook Ads conversion tracking records purchases and leads with the Meta Pixel in the browser and the Conversions API from a server, then deduplicates the two using a shared event ID. Meta uses those events to report results, build audiences and optimize campaigns, so missing or doubled events change how your budget is spent.
The screen I open first in a Meta audit is the Overview tab in Events Manager. It tells me in under a minute whether the Pixel and server events are both arriving, whether they are being deduplicated, and how well Meta can match them to people. Most problems I fix show up right there, and most of them trace back to three things: no Conversions API, an event ID that doesn’t match, or customer data that never gets sent.
It works through two channels that report the same events. The Meta Pixel is a JavaScript snippet that sends events from the visitor’s browser. The Conversions API (CAPI) is a server-to-server connection that sends the same events from your server, your store platform or a server-side tag container.
Meta combines them, removes duplicates, and matches each event to a Meta account using cookies, click IDs and hashed customer data. Matched events are credited to ads based on the attribution setting, which defaults to 7-day click and 1-day view. That default is why Meta often claims sales that GA4 credits to another channel, something I explain in my guide to conversion tracking.
Because each one loses events the other keeps. The browser misses visitors with blockers, declined consent and restricted cookies. The server can miss browser-only context unless you pass it through. Together they give Meta the most complete picture.
Meta’s Conversions API documentation describes it as a direct connection between your server and Meta. In practice, the server event is where I add the customer data that raises match quality, such as the email from the order and the visitor’s IP address and user agent, which the browser either can’t or shouldn’t expose to a third-party script.
Meta treats two events as one when they share the same event name and the same event ID and arrive within 48 hours of each other. It generally keeps the one it received first and discards the later duplicate.
The rules come from Meta’s guide to deduplicating Pixel and server events. The Pixel passes the ID as eventID in the fourth argument of the fbq call, and the server sends it as event_id. For purchases I use the order ID, because both the browser and the server already know it:
fbq('track', 'Purchase',
{ value: 120.00, currency: 'USD' },
{ eventID: 'order-10482' }
); For events without a natural ID, like ViewContent or Lead, I generate a random ID in the browser, push it into the data layer, and send the same value to the server container. Meta also supports a fallback that matches on fbp or external_id, but it only works when the browser event arrives first, so I don’t rely on it. LinkedIn and Microsoft Advertising also match browser and server events by ID, with different rules, which I cover in my LinkedIn conversion tracking and Microsoft Advertising conversion tracking guides.
Event Match Quality is Meta’s score, out of 10, for how well the customer information on an event lets Meta match it to an account. You raise it by sending more of the customer parameters you legitimately have, formatted and hashed correctly.
Meta lists the fields and their formats in its customer information parameters reference. Contact fields such as email, phone and name must be normalized and SHA-256 hashed. The fbp and fbc cookie values, IP address and user agent are sent unhashed. The fixes that move the score most in my audits:
Meta relaxed it in 2023. Advertisers no longer have to configure and prioritize eight conversion events per domain, and domain verification stopped being mandatory, though Meta still recommends it.
Aggregated Event Measurement is the protocol Meta introduced to measure web conversions from iOS users under Apple’s tracking restrictions. Meta still processes those events with privacy limits, so iOS conversions can be delayed or modeled, but there is no event ranking to manage any more. The background is on Meta’s Aggregated Event Measurement help page. When I audit older accounts I still find campaigns built around the old eight-event list. They can be simplified.
Run a server-side GTM container on Stape, send your browser events into it, and use a Meta Conversions API tag to forward them to Meta with the same event IDs. The steps I follow:
More on how I build server containers is on my server-side tracking with Stape page, and the full Meta service is on Meta Pixel and Conversions API setup.
Use Test Events for a live check and the Overview and Diagnostics tabs for the ongoing picture. Then compare Meta’s purchases with your store’s orders over a full week.
If Events Manager shows duplicates, low match quality or missing server events, I can rebuild the Pixel and Conversions API setup and verify it with real orders.
For most advertisers, yes. Meta recommends running both, deduplicated, because the browser and the server each catch events the other misses. The Pixel also powers features that rely on browser signals, while the server event carries richer customer data.
Usually because the Pixel and the Conversions API send the same purchase without a matching event ID, or because two Pixel installs fire at once, such as a platform integration plus a GTM tag. Check the event ID on both sides in the Test Events tool.
Meta scores match quality out of 10 per event. I aim to send every customer parameter the business legitimately collects, hashed correctly, and treat the score as a symptom: a low score means data is missing or malformed, which the diagnostics usually point to.
Meta removed the requirement to configure and prioritize eight events per domain in 2023, and domain verification became optional. I still verify the domain, because it helps with ownership and some Business Manager features.
Yes. Server-side GTM hosted on Stape has a Meta Conversions API tag template, and Shopify and WooCommerce have their own integrations. The data still has to be right in the browser first, especially the event ID and customer data.
Meta counts view-through conversions and uses its own attribution windows, so it will credit sales GA4 or your store attribute elsewhere. Duplicate events inflate it further. Compare purchases by order ID before deciding what is real.
About the author
I’m Ghazanfar, founder of Analytigrow and a conversion tracking specialist. For 7+ years I’ve audited and rebuilt Meta Pixel and Conversions API, Google Ads, GA4, Google Tag Manager, server-side tracking on Stape and Consent Mode v2 setups for ecommerce and lead-gen businesses in the US, UK, EU and UAE. I’m Top Rated on Upwork with 100% Job Success. Reach me at [email protected] or on WhatsApp.
A tracking audit tells you exactly which events are wrong, why, and what it takes to fix them. No pitch deck, just the findings.