Conversion tracking
Your reports are wrong,and the algorithmknows it.
When events go missing two things break at once. You make budget decisions on numbers that undercount reality, and Meta optimises on a thinner signal than it should. Server-side tracking closes both gaps.
Where events disappear
Four leaks. None of them visible in Ads Manager.
Blocked at the browser
Content blockers stop the pixel loading at all. The visit happens, the purchase happens, the event never exists. Nothing anywhere tells you it occurred.
Cookies expire early
Safari and Firefox cap the lifetime of the cookies connecting a click to a conversion. Longer consideration cycles fall outside the window and attribute to nothing.
Thin identifiers
Events arriving with only a browser ID match poorly to real people. Low Event Match Quality means weaker attribution and worse optimisation on identical spend.
Double counting
Server events added without a shared ID inflate conversions instead of recovering them. The numbers look better and the decisions get worse.
The build
What we actually install.
Audit and baseline
Every tag catalogued: what fires, what duplicates, what is missing, match quality per event, consent behaviour. Written up with fixes ranked by what they are costing you. Yours to keep whether or not we work together.
- Price
- $490
- Turnaround
- 3–5 days
Server-side container
A tagging server on your own subdomain, so requests are first-party rather than third-party. The browser talks to your domain; your server talks to Meta.
Deduplicated event pairs
Each conversion fires twice carrying one shared event_id. Meta merges the pair,
keeps whichever arrived, and counts it once. This is the difference between recovering data
and inventing it.
Match quality repair
Hashed email, phone, name and location added to the server payload alongside click and browser identifiers, so Meta can resolve events to real accounts.
Offline and CRM conversions
For businesses closing on the phone or on site, the sale is uploaded back to Meta and joined to the ad that started it. The highest-leverage fix available to anyone with a sales call in the middle.
TikTok, built the same way
TikTok has its own server-side route, the Events API, and it deduplicates on a shared
event_id exactly as Meta does. If you run TikTok alongside Meta, the same event
feeds both from one source, so neither platform double-counts and neither is left guessing.
Verification and handover
Tested in Events Manager against live traffic, documented, and handed over inside your own accounts. No agency-owned containers holding your data hostage.
Screenshots, not claims
What a finished build actually looks like.
These are from ZenithCart, a demonstration store we built and instrumented end to end so this page would have something to show. Nobody commissioned it. It exists because a tracking agency that only describes its work is asking you to take a lot on trust.
event_id. Meta marks the second copy Deduplicated and counts one sale.
POST 200 to graph.facebook.com. Not a tag that exists
— a tag that returned.
event_id, the click and
browser IDs, and hashed customer identifiers. Values blurred here; in production they are
hashed before they leave the server.
ZenithCart is a demonstration build, so the orders in it are test orders. What is real is the configuration — the same container structure, the same deduplication, the same identifier set we install on a live account.
Evidence
A full implementation, screenshot by screenshot.
Claims about tracking are cheap, so here is a build you can inspect. This is ZenithCart — a WooCommerce store we stood up ourselves to prove the stack end to end, because a client's dashboard is not ours to publish. Every screen below is from that build.
event_id, the click and browser IDs, and the hashed identity fields that let Meta match an event to a real account. Personal values blurred.
graph.facebook.com and Meta’s response beside it. A tag that fires is not the same as a tag that lands.
event_id, and Meta labelling the second copy deduplicated. This is the whole point of the build.
ZenithCart is our own store, not a client's. We built it so this page could exist. The same stack, wired the same way, is what goes onto your site — and you will get the same screenshots from your own dataset once it is running.
Check us first
Deduplicated events, running on this site right now.
Send the contact form. The browser fires a Lead event and
our own server fires the same event to the Conversions API, both carrying one shared
event_id. The panel on the home page prints both as they happen. Open Meta Pixel
Helper, open your network tab, do whatever you like.
A brochure site has one conversion, and it already happens on the server, so we send it from there directly. A full tagging server on your own subdomain is what we build for stores and lead-gen sites, where page views, product views and checkouts all need to survive an ad blocker. We would rather say which of the two you are looking at than let the distinction blur.
A tracking agency that asks you to take its own tracking on trust is the wrong agency.