The complete guide to conversion tracking

The operator's guide to trustworthy conversion data: what conversion tracking is, how signals break, and how to set up, fix, and harden tracking on every platform.

Kay Vink
Kay Vink

A consent banner update ships on a Tuesday. By Friday reported conversions are down by a third, and Smart Bidding has read the drop as demand going cold and pulled back bids on the campaigns that were winning. Nothing on the site looks broken. The tracking is. Conversion tracking is the practice of reporting the outcomes that matter (purchases, leads, signups) back to the ad platforms and analytics tools that optimize toward them, and the quality of that reporting decides what your budget actually buys.

That silent failure is the shape of the whole subject. Automated bidding executes whatever conversion data arrives: complete or broken, deduplicated or doubled, on time or late, valued or blank. It never pauses to ask whether the data is right. Your bids are only as good as your signal, which makes tracking less like plumbing under the marketing and more like the input your spend runs on.

This guide maps the territory job by job. By the end you'll know how to stand up tracking on each platform to one standard, why no two tools report the same number and which gaps are normal, how to keep events flowing as browsers and consent rules tighten, how to get CRM revenue back to the click that earned it, and how to feed bidding values instead of counts. Every section links to the full article on its subject, and the grid at the bottom holds the complete library.

#The short answer

If you only take one thing from this page, take this sequence. It builds a setup you can defend:

  1. Define one conversion per real outcome, per platform. The purchase, the qualified lead, the trial start. The bidder optimizes toward whatever you call a conversion, so calling every scroll and button click a conversion is a spend decision, not a reporting one.
  2. Capture click IDs and UTMs first-party, the moment they arrive. Store gclid, fbclid, and their cousins on your own domain and write them into the lead or order record, before short cookie lifetimes erase them.
  3. Send events through the browser and the server, deduplicated. The pixel is easy to block; the server is durable but partially blind. Run both with a shared event ID and let the platform drop the duplicate.
  4. Attach a real value to every conversion. A rough value beats a count. Value-based bidding only works when the values it runs on are trustworthy.
  5. Close the loop from your CRM. The deal that closes three weeks after the click is the conversion that matters; send it back so bidding learns what actually made money.
  6. Re-test on a schedule. Tracking decays. Audit it like code, because the failure mode is silence.

The rest of this page is why that order works and how each step goes wrong in practice, starting with what the pipeline actually is.

#Conversion tracking is a reporting pipeline, and you own it

Mechanically, conversion tracking is a match between two events. An ad click arrives carrying an identifier: a click ID like gclid or fbclid, or the UTM parameters you wrote yourself. Later, an outcome fires: a tracking pixel event in the browser, a server call, a key event in GA4. The platform pairs the outcome with the click inside its attribution window, and that pair becomes both a line in a report and a training example for the bidding algorithm.

Two properties of that pipeline set up everything below. First, you own more of it than the setup wizards suggest: identifiers survive only if your pages, forms, and first-party data practices carry them through. Second, its primary audience is no longer human. The reports were built for people, but the consumer that acts on every row, immediately and with your full budget, is the machine. The Meta Pixel is not really reporting to you. It is reporting to the delivery system.

Keep that audience in mind; everything below follows from one fact about it. The machine never checks the report before acting on it.

#Bad signal doesn't sit in a report; it gets spent

A conversion feed fails in exactly four ways: events that never arrive, events counted twice, events that land days late, and events that carry no value. None of them stays a reporting problem. Smart Bidding runs on the feed, Advantage+ does the equivalent on Meta, and Google's own bidding guidance is explicit that the strategies optimize toward the conversion values you report.

So each defect becomes its own misspend. Missing events read as failure, and the platform starves the campaigns that were actually winning. Duplicates inflate ROAS, and the platform doubles down on fiction. Late CRM imports leave the auction bidding on stale truth. And value-less counts tell the algorithm a $99 signup equals a $50,000 contract, so it correctly buys the cheap one. The tracking bottleneck is the full argument: signal quality caps everything downstream, no matter how sophisticated the layers above it are.

And none of the four defects introduces itself by name. What you see instead is the symptom one level up: dashboards that disagree.

#No two tools will ever report the same number

Pull the same week in Shopify, Meta Ads Manager, Google Ads, and GA4 and you get four conversion counts. All four are working as designed. Each tool counts by its own rules: its own attribution, its own windows, its own clock. The skill is not forcing them to match, because they never fully will. The skill is knowing which gaps are designed and which are broken.

Where you lookWhat it counts
Your store or CRMOrders and deals: the money truth, with no idea which ad deserves credit
Meta Ads ManagerEvery conversion Meta can claim within its windows, view-through included, modeled where consent hides the user
Google AdsConversions its clicks earned, reported on the date of the click and restated as late conversions land
GA4Key events credited by its own attribution model, on the date of the event

Add the platform columns together and you will count more conversions than you had customers, because every platform claims the same conversion. The two highest-traffic versions of the mismatch each have a triage guide: Meta versus Shopify and GA4 versus Google Ads.

Product analytics joins the disagreement from its own angle. Mixpanel, Amplitude, and PostHog sessionize and attribute differently again, which is why Mixpanel rarely matches your ad platforms and neither do Amplitude or PostHog. Those tools answer product questions well; where they sit next to an ad-measurement stack is its own short read.

All of those triages start in the same place: the setup underneath. That part is worth doing once, properly.

#Set up each platform once, to the same standard

Platform setup is where tracking is won or quietly lost, and the standard is the same everywhere: the outcome is defined, the click ID survives through to the conversion, a value rides along, and deduplication is stated rather than assumed. Hold every platform to those four and setup becomes a checklist instead of archaeology.

The setup guides, per destination: Google Ads, including the seven ways it breaks without ever showing an error; Meta end to end, with pixel and Conversions API deduplicating properly; GA4 key events without the naming confusion; LinkedIn for long B2B pipelines; and Shopify with Google Ads without double counting, plus Shopify's native pixels done right. For every other destination, one reference table covers the remaining ad platforms.

Setup is also the high-water mark. From the day it goes live, the environment starts taking pieces back.

#The browser is no longer a reliable messenger

For a decade tracking lived in the browser; the browser is now the least dependable link in the chain. Safari's tracking prevention caps script-set cookies at seven days, content blockers remove pixels outright, and consent choices lawfully switch tags off for a share of every audience. Each limit trims the same thing: the platform's ability to connect a conversion back to its click.

The failure modes are specific, and each has a fix. Third-party cookies are effectively gone, and what still works is first-party by construction. Consent Mode v2 is the price of admission for EEA measurement, and configured well it recovers modeled conversions instead of reporting zeros. A checkout on a second domain severs the session at the moment of highest intent unless you deliberately carry it across. And when one customer shows up as three device-shaped strangers, identity resolution is the stitching that reassembles them.

Each fix buys signal back. But the structural answer to an unreliable messenger is not a better message. It is a second messenger.

#Server-side delivery is redundancy, not a loophole

Server-side tracking re-sends the same conversion events from infrastructure you control, which blockers and browser limits cannot silence. That recovers delivery, not permission: consent still governs what you collect, and a server cannot invent context the browser never captured. Run it as a second transport beside the pixel, deduplicated by a shared event ID, not as a replacement for it.

Whether the upgrade is worth it is a real question with a budget attached. Server-side tracking covers what it fixes, what it costs, and who actually needs it; server-side tagging with sGTM is the run-it-yourself version, with hosting and maintenance bills that only pay off past a certain spend; and Shopify stores have three realistic routes that don't involve operating a tag server at all. Below those thresholds, the platforms' managed integrations already deliver most of the benefit.

Even flawless delivery has a boundary, though: it covers the events your site can see. In a sales-led business, the conversions that matter most never happen on the site at all.

#Your CRM knows which conversions mattered; the ad platforms don't

A form fill is not revenue. In every sales-led motion the outcome that matters closes days or weeks after the click, inside the CRM, and until you send it back, the platforms keep optimizing toward form fills with perfect efficiency. Closing that loop is the highest-leverage tracking work in B2B.

On Google, enhanced conversions send hashed first-party identifiers so conversions survive cookie loss, enhanced conversions for leads extend the same match back to CRM stages, and offline conversion imports land closed revenue on the originating click, on a cadence worth automating rather than remembering. Meta's equivalent runs the CRM upload through the Conversions API. The result is bidding that hunts pipeline instead of volume.

Closing the loop settles which conversions happened. Half the report is still missing: what each one was worth.

#Counts train bidding to buy cheap; values train it to buy revenue

An algorithm fed counts treats every conversion as equal and correctly buys the cheapest ones. Feeding values changes the objective from "more conversions" to "more of what they're worth", which is the entire promise of tROAS and its siblings, and it holds only as long as the values you send are trustworthy.

Real values come from different places by motion. Stores have order totals. Lead and subscription motions estimate: customer lifetime value turns average revenue into a defensible per-conversion number, and predictive LTV produces one early enough to bid on, before the revenue has actually landed. Rough-but-honest values beat precise-looking counts every week of the quarter.

One part of the signal never touches a tag at all, and it fails in its own way.

#The labels you write today decide what you can measure tomorrow

UTMs and campaign names are the only part of the signal humans author by hand, which makes them the only part that fails by typo. A UTM convention held under change control keeps "paid-social", "paidsocial", and "Paid_Social" from becoming three different channels in every report downstream.

The stakes run longer than this quarter's dashboard. Attribution joins on identifiers, but budget models read labels: your future media mix model depends on the data you label today, because nobody can re-label last year's spend after the fact. Naming is tracking you do with your keyboard. Treat the convention as schema, not housekeeping.

Schema is the right frame for everything else on this page too, because every piece of it shares a property: it was correct the day it shipped.

#Tracking is an operations discipline, not a launch task

Tracking decays because the world changes underneath it. Browsers tighten every year, consent rules shift, platform APIs migrate, and your own site ships a new form with a missing hidden field on a random Thursday. None of it announces itself; each shows up weeks later as "performance got worse", which is the wrong diagnosis at the wrong altitude. Signal quality is a monitored property, like uptime, not a box checked at launch.

The discipline is small and concrete. Watch four numbers as trends: event coverage, dedup rate, import recency, value presence. Audit on a schedule, from a checklist, the way you'd regression-test code. And treat every site release, consent update, and platform migration as a tracking event that earns a re-check.

Watching those numbers is a standing job, and handing it off is what Buron is for. Its pixel keeps a first-party record of every click and conversion on your own domain, its warehouse lines platform claims up against your CRM and store truth, and its health checks turn a blocked tag, a stalled import, or a dedup drift into a finding in your inbox this week, not a bad quarter explained in hindsight.

#Fix the signal first; everything else inherits it

Every measurement question downstream gets its answer from this layer. An attribution model can only divide credit among the touches your tracking captured. A media mix model can only read the history your labels preserved. Every "which channel is working" debate is numerology while the conversion feed underneath is broken, duplicated, late, or blank. Signal first is not a preference; it's an ordering the arithmetic imposes.

The encouraging part: unlike attribution, tracking has right answers. The event either carries its click ID or it doesn't. The duplicate is either dropped or it isn't. The value either arrives or it doesn't. Work through the short answer at the top of this page, test it this week, and put the re-check on a calendar. Your bids follow your signal either way. Make it a signal worth following.

Articles in this guide

Where Buron fits alongside your product analytics

Wondering whether Buron and your product-analytics tool do the same job? They don't, and this draws the line: what each one answers, what Buron deliberately is not, and how to decide for your own stack.

Kay Vink
Kay Vink
Read

The tracking bottleneck: your bids are only as good as your signal

Smart Bidding and Advantage+ optimize toward whatever conversion data arrives. Broken, duplicated, late, or value-less signals don't just mis-report; they mis-spend. The four signal defects, why tracking decays after setup, and what running signal quality as an operations discipline looks like.

Kay Vink
Kay Vink
Read

Why your Mixpanel attribution doesn't match your ad platforms

Your Mixpanel numbers and your ad platform's numbers will never match, and mostly that's fine. Here's how to tell an expected gap from a real defect, and the one-page memo to bring to the budget review instead of a panic.

Kay Vink
Kay Vink
Read

Why your future MMM depends on the data you label today

Marketing mix modeling is sold as a modeling problem. It's really a labeling problem, and the campaign names you write this week decide how much of it you'll be able to run in two years. Here's why history can't be re-labeled, and the naming system that fixes it going forward.

Kay Vink
Kay Vink
Read

Every platform claims the same conversion: why ad platforms overreport

Sum your Meta, Google, and TikTok dashboards and you'll get more conversions than you have customers. That's not fraud and not a bug: each platform attributes within its own window, independently, view-through included. What each number is actually for, and where the real count lives.

Kay Vink
Kay Vink
Read

Smart Bidding is a signals problem: what the algorithm actually runs on

Which Smart Bidding strategy you pick matters less than the conversion data you send it. Get the four strategies in one table, then the five inputs that decide whether any of them work: conversion completeness, value variance, freshness, consent-modeled data, and volume. Audit the inputs before you blame the algorithm.

Kay Vink
Kay Vink
Read

Value-based bidding needs values you can trust

Cost per conversion treats a $99 signup and a $50,000 deal as the same win, and Smart Bidding believes it. Here's what value-based bidding actually changes, how to build values you can trust, and the honest checklist for when switching will make things worse instead of better.

Kay Vink
Kay Vink
Read

Tracking after third-party cookies: what actually still works

Third-party cookies didn't die the way everyone braced for. The exposure that's actually truncating your attribution is first-party cookie lifetime, and it hits every stack, consent banner or not. A per-browser status check, the lifetime table to bookmark, and the three tracking mechanisms that still work.

Kay Vink
Kay Vink
Read

First-party data: the definition and the operating model

What first-party data actually is, versus second-, third-, and zero-party, and the three-move operating model (collect, connect, activate) shown on a real stack: first-party pixel, CRM and order feeds, identity map, warehouse. No CDP required.

Kay Vink
Kay Vink
Read

Google Ads conversion tracking: setup and the 7 ways it silently breaks

Set up Google Ads conversion tracking so the numbers stay trustworthy: the counting, value, and attribution decisions that matter more than the tag, both install paths (gtag and GTM), where to find your conversion ID and label, and the seven ways tracking silently breaks, each with a detection step.

Kay Vink
Kay Vink
Read

GA4 conversion tracking: setting up key events

Events, key events, conversions, imported conversions: one table that ends the GA4 naming confusion, then the setup path that actually feeds Google Ads. Define the event, promote it to a key event, import it, and skip the double-counting trap that catches most imports.

Kay Vink
Kay Vink
Read

Meta conversion tracking end to end: pixel, CAPI, and events that dedup

Meta conversion tracking is one pipeline, not three products. Install the pixel, add the Conversions API on whichever of three paths fits your stack, and make sure Meta counts each sale once instead of twice. Includes the four reasons that count quietly doubles.

Kay Vink
Kay Vink
Read

Conversions API vs the Meta Pixel: what actually changes

The Meta pixel and the Conversions API carry the same conversions by different routes, so it's almost never one or the other. Here's what changes in your numbers when you run both, the shared-ID mistake that silently double-counts them, and why Meta's free 2026 setup removed the old reason to skip it.

Kay Vink
Kay Vink
Read

Conversion tracking on every ad platform: the reference table

Check one maintained table instead of ten platform docs: the click-ID parameter, client and server tracking, value support, offline import, and consent handling for every ad platform, plus a 60-second setup pointer for each, from X and TikTok to Bing, Reddit, and phone calls.

Kay Vink
Kay Vink
Read

The conversion tracking QA checklist: test it like you'd test code

Conversion tracking breaks silently after launch, and month-end is a bad time to find out. Here's a re-runnable checklist you run like a test suite after every site change: what to check, which tool checks it, and what a pass looks like, plus how to fire test conversions without polluting your data.

Kay Vink
Kay Vink
Read

Click IDs: what gclid, fbclid, and wbraid do

The ?fbclid= and ?gclid= codes in your URLs are how each platform matches an ad click to the conversion it caused. Here's what every click ID (fbclid, gclid, wbraid, msclkid, ttclid, li_fat_id) actually does, where they get lost in transit, and why stripping them quietly breaks your measurement.

Kay Vink
Kay Vink
Read

UTM parameters: the reference

Every UTM parameter, the GA4 dimension it populates, and the failure cases that silently break attribution: case splits, redirect stripping, fbclid pile-ups, auto-tagging precedence, and self-tagged internal links.

Kay Vink
Kay Vink
Read

Tracking pixels: how they work and where they're going

What a tracking pixel actually is, from 1×1 image beacon to JavaScript event tag, taken apart on a live first-party pixel: the fields one request carries, what browsers now strip or cap, and why pixels are moving server-side rather than dying.

Kay Vink
Kay Vink
Read

The Meta Pixel: what it is, what it sees, where to find your ID

The Meta (Facebook) pixel, explained for how it actually behaves in 2026: what it does, where your pixel ID lives, the pixel-vs-dataset-vs-CAPI vocabulary sorted out, and the part most guides skip, which is what it can no longer see after ITP, ATT, and consent.

Kay Vink
Kay Vink
Read

Shopify pixel setup: native web pixels and the Meta Pixel, done right

Installing the Meta pixel on Shopify isn't a theme edit anymore: checkout is sandboxed, and the old snippet tutorials leave you with a pixel that goes blind at the one moment that pays. Here's the channel app vs custom pixel call, how to keep purchases from counting twice, and how to prove it fired.

Kay Vink
Kay Vink
Read

Shopify and Google Ads conversion tracking without double counting

Most Shopify stores quietly count every purchase two or three times: the Google & YouTube app, a leftover manual tag, and a GA4 import all firing at once. Here's how to pick one to trust, silence the rest, and stop Smart Bidding from chasing conversions that never happened.

Kay Vink
Kay Vink
Read

Server-side tracking for Shopify: the sandbox, CAPI, and the three real routes

Generic server-side tracking advice breaks on Shopify, because the platform decides what any pixel is allowed to see before you install a thing. Here are the three routes that actually work, when each is worth the trouble, and how to keep browser and server events from counting every sale twice.

Kay Vink
Kay Vink
Read

Why Facebook Ads conversions don't match Shopify

Facebook and Shopify almost never report the same number of conversions, and usually that's fine: each counts something different. Here's how to tell a normal gap from a broken one, and how to fix the five things that cause a bad one.

Kay Vink
Kay Vink
Read

Why your GA4 and Google Ads conversions don't match

GA4 and Google Ads count different things on different dates with different attribution, so they never match exactly. Here are the six fixable failure modes, each with a detection step and a fix: date attribution, conversion lag, consent gaps, cross-domain loss, import mixing, and duplicate tags. Plus the residual gap that's supposed to be there.

Kay Vink
Kay Vink
Read

Consent Mode v2 without losing your signal

Denied consent isn't a lost conversion; it's a modeled one, but only if you deploy consent mode the right way. How the four signals work, why the basic-versus-advanced choice quietly decides how many EEA conversions you keep, and how to read your Ads and GA4 numbers once modeling is in them.

Kay Vink
Kay Vink
Read

Cross-domain tracking: the checkout-domain trap

When your funnel crosses to an external checkout, the session dies at the border and your best-converting clicks get credited to the checkout domain instead of the ad that earned them. How to spot it, fix the GA4 side and the ads side, and stitch the data when you don't control the other domain.

Kay Vink
Kay Vink
Read

Identity resolution: how user stitching actually works

Identity resolution stitches one person's scattered fragments (anonymous visitor, lead email, CRM contact, customer) into a single entity you can trust for revenue reporting. The match keys ranked, deterministic vs probabilistic settled honestly, a worked stitching pass, and where stitching fails.

Kay Vink
Kay Vink
Read

Enhanced conversions for leads: CRM matching for B2B

Match closed CRM revenue back to your Google Ads clicks with a hashed email instead of a click ID. The setup, the CRM half nobody wires up, why match rates crater, and when to run it beside GCLID imports.

Kay Vink
Kay Vink
Read

LinkedIn conversion tracking for B2B pipelines

On LinkedIn, a fired Insight Tag only tells you someone filled a form, which for B2B is the cheap half of the story. Here's how to track LinkedIn conversions all the way to pipeline: install the tag, count qualified stages instead of form loads, capture li_fat_id on every lead, and check LinkedIn's claims against real CRM revenue.

Kay Vink
Kay Vink
Read

Offline conversion tracking: send CRM deals back to Google Ads

Get your closed CRM deals back into Google Ads so bidding optimizes toward revenue, not form fills. The full setup, the 2026 Data Manager migration most guides miss, and the two silent failures that quietly zero out your imports.

Kay Vink
Kay Vink
Read

Meta offline conversions: the CRM upload path

Meta retired its standalone offline conversions tool, so CRM uploads now run through the Conversions API. Here's what your export has to send for events to match, and how to reuse the exact pipeline you already built for Google Ads instead of starting over.

Kay Vink
Kay Vink
Read

Predictive LTV and value-based bidding for B2B SaaS

Every predictive-LTV guide assumes repeat purchases, which leaves B2B SaaS uncovered. Here's how to predict a deal's value before the CRM knows it: the early-life signals that work, the data you need in place first, the Google plumbing to feed it into bidding, and an honest buy-vs-build call.

Kay Vink
Kay Vink
Read

Key definitions

Frequently asked questions

Do you need both a pixel and a conversions API?

Yes — run both. The browser pixel and the server-side conversions API carry the same events over different transports: the pixel is easy to block, the API is durable but blind to some on-page context. Send each event through both with a shared event ID and let the platform deduplicate; you keep coverage without double-counting.

Go deeper →

Why don't Google Ads and GA4 report the same conversions?

Because they count different things by design. Google Ads credits a conversion to the click date and applies its own attribution and conversion windows; GA4 credits the conversion date with its own model. Add consent-driven modeling and imported-versus-native events, and matching totals would be the surprise. Compare trends, not absolutes — and alert on divergence, not difference.

Go deeper →

How often should you audit conversion tracking?

Continuously, in practice. Tracking decays without anyone touching the ad account: a site release drops a dataLayer event, a consent banner update suppresses a tag, a platform changes an API version. Quarterly manual audits catch problems a quarter late; continuous automated checks on coverage, deduplication, and value presence catch them the week they start.