Meta Pixel and Conversions API: A Setup Guide
The Pixel alone stopped being enough some time ago. Running both without deduplicating them is worse than running neither — you get confident numbers that are wrong.
Almost every Meta account we look at has a Pixel installed.
Rather fewer have one that reports correctly.
And the accounts that added the Conversions API without deduplicating events are in the worst position of all — they now have two sources confidently reporting the same purchase, and a reported return on ad spend that is roughly double reality.
What each one does
| Meta Pixel | Conversions API | |
|---|---|---|
| Runs where | In the visitor's browser | On your server |
| Blocked by | Ad blockers, browser tracking restrictions, cookie refusals | Nothing on the browser side |
| Captures | On-site behaviour as it happens | Confirmed actions, including offline and delayed ones |
| Setup effort | Low — a tag | Higher — server work or a platform integration |
| Still needed? | Yes | Yes |
They are not alternatives. The Pixel sees things the server does not, and the server sees things the browser cannot report. Meta expects both.
Deduplication — the step that breaks silently
Once both are sending, Meta receives two reports of the same purchase. It needs a way to recognise them as one.
That is deduplication, and it works on two matching values: the event name and the event ID. Send the same pair from browser and server and Meta pairs them. Send a different ID from each and it counts two purchases.
- Generate one event ID per action — not per page load. The same purchase must carry the same ID in both places.
- Send identical event names. "Purchase" from the Pixel and "purchase" from the API will not pair.
- Pass the ID to both. This is the part custom implementations get wrong; the ID is generated in one place and never reaches the other.
- Verify in Events Manager. Deduplicated events are labelled as such. If nothing is being deduplicated, nothing is being paired.
- Complete a real transaction yourself. One purchase, one event. If you see two, it is not working, whatever the setup guide said.
- Re-check after every site change. Theme updates, checkout changes and plugin updates all break this quietly.
Which events to set up
The temptation is to implement every standard event. Resist it.
Every event you send is something the delivery system could be told to optimise toward. A cluttered event set makes it easier to optimise for the wrong thing.
Start with the one that represents money. Purchase for e-commerce. A qualified lead for services — not a form submission, which is a different and much weaker thing, as covered in Meta lead ads.
Then the steps before it, so you can see where people drop out. View content, add to cart, initiate checkout for e-commerce. For services, the step that separates a serious enquiry from a casual one.
Send accurate values. If you are targeting return on ad spend, the value on the purchase event has to be the real order value. A flat placeholder makes every ROAS figure meaningless, and a good ROAS becomes impossible to judge.
What the Pixel powers beyond reporting
It is easy to think of tracking as a measurement job. It is also the input for two things that decide performance.
Optimisation. The delivery system finds more people like the ones who triggered your conversion event. Feed it the wrong event and it will get very good at finding the wrong people, confidently and at scale.
Audiences. Every remarketing audience and every lookalike is built from Pixel and API data. Broken tracking means thin audiences, which means expensive delivery — usually diagnosed as a targeting problem when it is a measurement one.
The checks worth running quarterly
- Test Events in Events Manager, with a real transaction. Not a test mode click.
- Event Match Quality — Meta grades how well it can match your events to people. Passing more customer parameters from the server side improves it.
- Deduplication status — confirm events are being paired, not just received.
- Diagnostics tab — it flags missing parameters and dropped events, and nobody reads it.
- Reconcile against your own numbers — Meta-reported conversions against your back office for the same window. A persistent gap is a problem, in either direction.
None of this is glamorous, and all of it comes before campaign work. Launching before tracking is verified is the most expensive sequencing error available in paid media — the same point made in Facebook Ads structure and in conversion tracking.
Frequently asked questions
What is the Meta Pixel?
A piece of code on your website that reports visitor actions back to Meta — page views, add to cart, purchases. Those events are what campaigns optimise against and what remarketing audiences are built from. Without it, Meta has no idea what happened after someone clicked your ad.
Do I need the Conversions API as well as the Pixel?
Yes, if you want reliable data. The Pixel runs in the browser, where ad blockers and tracking restrictions can stop it firing. The Conversions API sends the same events from your server, which is not affected by any of that. Running both, properly deduplicated, is the current standard setup.
Why are my Meta events being counted twice?
Because the Pixel and the Conversions API are both reporting the same action and nothing is telling Meta they are the same. The fix is deduplication — send a matching event ID and event name from both sources so Meta can recognise the pair and count it once.
Which Meta events should I set up?
The one that represents a real business outcome, first — purchase for e-commerce, or a qualified lead for services. Then the steps leading to it, so you can see where people drop off. Do not set up every standard event just because the list exists; each one you add is something the algorithm might optimise toward.
How do I check my Meta Pixel is working?
Use Events Manager's Test Events tool and complete a real transaction or form fill yourself. Confirm the event arrives, arrives once rather than twice, and carries the right value. Checking that the Pixel is merely installed is not the same as checking that it reports correctly.
We fix the tracking before we touch the campaigns
Pixel and Conversions API deduplicated properly, events verified with real transactions, and reporting you can reconcile.
