Part 3 · Operate
Conversion accuracy
Each conversion defined once, counted once, checked against its source of truth, sent once to each ad platform, and scored.
01What it is
An add-on to website analytics. You say once what each conversion is and what proves it happened (your Stripe, your backend, your booking tool, the site script or a deal stage). Every record of it, from the browser and from your backend, becomes one conversion with one id. Each night the count is checked against the truth and against what each ad platform took, and the top of the Analytics tab shows the share, the gap, the likely cause and the fix.
02Why it exists
A signup counted by the browser and again by your backend is two signups in a report and two purchases to an ad platform, and the platform learns from the wrong number. A submit that failed validation counted as a signup is worse. Most tracking is off by more than anyone has checked, because nothing measures it against the record that cannot be wrong: the payment, the booking, the account your backend created.
So the browser hands one id to your backend, the backend sends it back with its own event, and both become one conversion sent once with that id, so the platforms merge it too. Success is counted when it happens, not when a button is pressed. And every day the tracked number is measured against the truth, with the visitors who declined cookies set aside as their own, expected number rather than hidden inside a gap.
03How to use it
- 01Open Analytics setup, Conversions, and turn conversion accuracy on. The usual six are offered; confirm the ones you use and add your own.
- 02For each conversion, say what proves it (the source of truth) and how the site and your backend report it: an event name, a thank-you URL, the endpoint that answers the form, or an element that appears on success.
- 03Pass the id from the browser to your backend: the hidden ig_cid field on a plain form, or the one line shown for a single-page app, then send your server event with it.
- 04Choose where each conversion is sent and as which event, then open Test a conversion, start a test, complete it on your site through the test link, and check each step.
- 05Once a platform reads as ready, press Send platform tests: Google checks a made-up conversion without recording it, Meta takes one as a test event only if you paste the code from Events Manager, Test events (Meta keeps test events, so it carries no person and no value), and LinkedIn, which has no test mode, is checked for readiness. None of it reaches a report.
- 06Read the card at the top of Analytics each morning. Open a number to see the records behind it; follow the likely cause and its fix where tracking is short.
04What good looks like
- You give it
- A visitor signs up. The site script sees the thank-you page and records the success with its id; your backend sends signup_completed with the same id from the hidden field; the founder confirmed Signup with your backend as its truth and Meta as a destination.
- You get
- One conversion, two records linked to it, one send to Meta with that id. The card counts it as tracked and matched, and the dedup log shows the second record joined on the shared id.
- Why
- Records with the same id are one conversion by rule, the raw events are never changed, and the send uses the conversion’s one id, which Meta de-duplicates on.
Derived from the rules in the code
05What weak looks like, and what it costs
- You give it
- Twenty Stripe trials in a day, eighteen visitors who accepted cookies and were tracked, two who declined.
- You get
- Tracked reads 100%, and a separate line says 10% were not tracked because visitors declined cookies, which is expected. No alert fires.
- Why
- Accuracy is measured against the truth the visitors let us track. A declined visitor is never tracked or sent, so it is counted on its own line rather than as a fault.
Derived from the rules in the code