Verify your first event
How to prove a browser event and a server event were paired — the exact evidence to look for, and what a healthy result looks like.
updated
A healthy setup produces one event with two sources: the browser copy and the server copy, carrying the same event ID. This page walks you to that evidence. If you only ever read one Getting Started page, make it this one — every other check on this site is a proxy for what you are about to look at directly.
Before you look
Three things will make a working setup look broken:
- You are logged in as an administrator. If “Don’t track administrators” is on, nothing fires for you at all. Use a private window, logged out.
- Your page cache is serving old HTML. Purge it after installing or updating.
- You are watching Test Events in a different browser session than the one you are browsing in. This one produces a very specific and very convincing false alarm — see below.
Step 1 — set a Test Event Code
Copy the code from the Test Events tab in Events Manager and paste it into PixelCapi. With a test code set, server events go to the Test Events tab instead of your live reporting, and the plugin sends synchronously so results appear immediately instead of waiting for the queue.
Step 2 — browse your own site, logged out, in the same browser
Open a private window, load a product page, add something to the cart. Keep the Events Manager Test Events tab open in the same browser profile.
This matters more than it sounds. Test Events only displays browser events from the session that has the tab open. Browse in incognito while watching in your normal profile and you will see exactly one row, sourced Server, which flips to “deduplicated” after a few seconds — and no browser source, ever. That looks like a broken browser pixel. It is not. It is the Test Events tab doing what it is designed to do.
Step 3 — read the result
The healthy picture is one event row showing Processed from 2 sources: the browser copy processed, the server copy deduplicated. That is Meta telling you it received both halves and collapsed them into a single conversion.
If you only see a server source, and the row says deduplicated, that is still evidence the browser event arrived — Meta cannot deduplicate against something it never received. See Processed vs Deduplicated.
Step 4 — get the actual proof
Events Manager tells you what Meta thinks. Dedup Doctor tells you what was sent, from both sides, with the IDs to compare. Open it and look for rows like this:
Purchase fdf4dd5f-9c31-4e02-9a8d-1c7b2f0e0476 browser sent
Purchase fdf4dd5f-9c31-4e02-9a8d-1c7b2f0e0476 server sent fbtrace_id …
InitiateCheckout 0f2a91c4-77bd-4c19-9f0a-3b6d5e2c8e11 browser sent
InitiateCheckout 0f2a91c4-77bd-4c19-9f0a-3b6d5e2c8e11 server sent fbtrace_id …
Two rows per event, identical event IDs, both sent, and a platform trace ID on the
server row. That trace ID is Meta’s own receipt for that specific send. A matched pair with a
trace ID beside it is the strongest evidence available from outside Meta’s systems.
A full healthy funnel looks like this all the way down: PageView, ViewContent, AddToCart, InitiateCheckout and Purchase, each with the same ID on both sides.
If the IDs do not match
That is a real deduplication problem, not a display artifact. Open your browser’s network
tab, find the facebook.com/tr request, read its eid parameter, and compare it with the
event ID recorded in the plugin’s logs for that same page load. If those two differ, the
browser and server halves are not paired, and every event is being counted twice. Start at
Duplicate events.
Next
Was this page helpful?