Skip to content
Skayle Marketing

Conversion Tracking & Tag Management

Most reported conversions are wrong in a way nobody has checked

This is the collection layer: what fires, when, how many times, and whether it survives a consent banner, a checkout on somebody else’s domain and a browser that stopped honouring the cookie. When it is wrong, every report built on top of it is wrong too, quietly, for months at a time.

The test

Four questions any conversion number has to survive

If a reported figure cannot answer all four, it is not measuring what the person reading the report believes it is measuring.

  • What did you decide to count?

    A conversion is a choice, not an observation. Every form submission, or only the ones from a real enquiry form? A quote request and a newsletter sign-up together, or separately? A purchase at order placement or after payment settles? None of these is the correct answer. Whichever you pick has to be written down, because the alternative is a permanent argument about whose number is right.

  • Does it fire exactly once?

    The most common fault we find. A tag on a thank-you page fires again when the visitor refreshes or comes back to it from history. An event is attached both in the container and in the page code by two people who did not talk. A single-page application fires on every route change. The count inflates smoothly and nothing looks broken.

  • What happens when consent is declined?

    A banner that does not actually govern the tags means measurement continues regardless of the choice, which is a compliance problem. A banner that blocks everything means conversions vanish for a share of visitors with no explanation in the report. Consent mode is the mechanism that lets tags adjust their behaviour instead of choosing between those two failures.

  • Does it survive the journey crossing a domain?

    Checkouts, booking engines and payment providers frequently sit on another domain. Without cross-domain measurement the visitor arrives there as a new person from a new source, the session splits, and your own website turns up as a leading referrer in your own reports. It is a configuration problem that looks like a traffic mystery.

How it breaks

The failures that do not look like failures

Every one of these has been running in a client account for months before anybody looked. None produced an error, an alert, or an empty report.

The conversion count includes page refreshes.
The tag fires on arrival at a confirmation page. A visitor refreshes, or returns to the page from their history, or leaves the tab open and the page reloads. Each one records another conversion. The inflation is proportional and stable, so nothing about it looks anomalous, and every efficiency number built on it is wrong in the same flattering direction.
The same event is implemented twice.
An agency added the conversion in the tag container. A developer added it in the page code during a later release. Both are correct implementations, neither knows about the other, and the number roughly doubles from a specific date nobody has connected to it. Finding this takes minutes if you look at the network requests and never happens if you only look at reports.
Conversions dropped when the consent banner launched.
A consent platform went live and began blocking tags before consent was granted, which is the correct behaviour. Reported conversions fell by whatever share of visitors decline, the drop was attributed to seasonality or a campaign change, and budget decisions were made against a number that had changed meaning rather than performance.
Your own domain is one of your biggest referral sources.
This is nearly always missing cross-domain configuration. A visitor moves from your site to a booking or checkout system on another domain, and the receiving system records them as a fresh arrival referred by you. Original sources are lost across the whole conversion path, so paid and organic look worse and direct traffic looks unaccountably strong.
A release quietly removed the trigger.
The confirmation page URL changed, or a button class was renamed, or a form moved into an embedded frame. Tracking that relied on any of those stops firing without producing an error anywhere. The gap is discovered weeks later during a reporting cycle, and by then the missing period cannot be recovered, only annotated.

Where collection happens

Collecting in the browser, or collecting on a server you control

What changes and what does not when collection moves server-side
DimensionClient-side collectionServer-side collection
Where the request is builtIn the visitor’s browser, by JavaScript running on your pageOn a server endpoint you control, which then forwards on to each destination
What you gainSpeed of deployment and compatibility with almost every tag out of the boxControl over exactly what each platform receives, fewer third-party scripts, longer-lived first-party identifiers
What it does not changeA declined consent choice still limits what may be collectedA declined consent choice still applies, and a wrongly defined event is still wrong
Effect on the pageEvery additional tag is more script for the browser to download and runLess work in the browser, in exchange for infrastructure to run and monitor
What it costsImplementation time, and maintenance when the site changesImplementation time, plus hosting and ongoing maintenance every month
When we recommend itMost sites, most of the time, done properlyWhen signal quality to ad platforms, page weight or data control genuinely justify the cost

What we check

The audit, item by item

Most engagements start here, because it is cheap, it is fast, and it usually explains a discrepancy somebody has been arguing about for a year.

  • Every tag, trigger and variable in the container listed, with what it does and whether anything still needs it
  • Each conversion traced from the user action to the network request, so the count can be observed rather than assumed
  • Duplicate detection: the same event implemented in the container and in page code, or in two containers
  • Refresh, back-navigation and repeat-view behaviour tested on every confirmation page
  • The consent platform checked against the tags it is supposed to govern, in both the granted and the denied state
  • Consent mode configuration verified, and modelled conversions identified separately from observed ones in reporting
  • Cross-domain configuration checked wherever a journey leaves the main domain, including payment and booking systems
  • Campaign tagging reviewed for consistency, because inconsistent UTMs corrupt attribution before any tag runs
  • Ad platform conversion actions checked against analytics definitions and against the CRM record of the same period
  • Data retention and thresholding settings reviewed, so nobody is surprised by a report that cannot be produced later
  • A written record of what each conversion means, in language sales and finance both accept

How we work

Changing the measurement without losing the history

  1. Document before changing anything

    Every tag, every trigger, and what each one currently sends. Nothing is deleted for looking unused, because the tag nobody recognises is occasionally the one feeding a report somebody senior relies on. This step alone often resolves the discrepancy that prompted the call.

    You get: A documented map of the current setup with faults marked

  2. Agree the definitions with the people who argue about them

    What counts as a conversion, which actions are primary and which are secondary, and how each maps to what sales and finance call a lead or an order. Written down and signed off before implementation, because a definition agreed afterwards never settles anything.

    You get: A written conversion definition, agreed across teams

  3. Rebuild on a data layer rather than on the page

    Events pushed deliberately by the site, with the parameters that matter, instead of tags guessing from page URLs and button text. It takes longer once and it stops a routine front-end change silently disabling measurement.

    You get: A data layer specification, implemented and tested

  4. Run new alongside old, then compare

    Where the platforms allow it, the new implementation runs in parallel with the existing one for a period so the two can be compared on the same traffic. Switching over then becomes an evidenced decision rather than an act of faith on a Friday.

    You get: A parallel-run comparison and a migration decision

  5. Annotate, monitor and hand over

    The change date recorded in the reporting, alerts set for conversions that stop arriving, and documentation written for whoever comes next. A release check is added so that site changes are tested against measurement before they ship rather than after.

    You get: Monitoring, annotations and handover documentation

Questions

What teams ask when the numbers stop agreeing

How would we know if our conversion tracking is wrong?

Compare three numbers for the same period: what the analytics property reports, what each advertising platform reports, and what your CRM or order system actually recorded. They will never match exactly, because they count different things over different windows, but the size and direction of the gaps tell you a great deal.

Specific warning signs are worth knowing. Ad platform conversions far exceeding recorded enquiries usually means double-firing or a trigger that fires on a page reload. A sudden step change with no campaign behind it usually means a site release. And a total that has been suspiciously round and stable for months usually means something is firing on every page view.

What does consent mode actually do?

It lets your tags respond to the choice a visitor made in your consent banner instead of ignoring it. When the relevant consent is granted, tags behave normally. When it is denied, Google tags adjust their behaviour so they do not read or write the identifiers they otherwise would, and send a limited signal instead of the full one.

Google then models some of the missing conversions to fill part of that gap in reporting. That is a legitimate approach and it is an estimate rather than a count, so a report that mixes observed and modelled conversions without labelling them will eventually be challenged by somebody in finance who is right to challenge it.

What consent mode is not is a way to keep collecting from people who said no. If a vendor describes it that way, they are describing a compliance problem.

Do we need server-side tagging?

Sometimes, and considerably less often than it is recommended. It genuinely helps with three things: control over exactly what data leaves for each platform, resilience against browser restrictions on how long a client-side cookie survives, and reducing the number of third-party scripts running in your visitors’ browsers.

It does not recover consent-declined data, it does not fix a badly defined event, and it costs money to run every month. We recommend it when the accuracy of the signal you send to advertising platforms is materially affecting bidding, or when page weight or data control is a genuine problem, and not simply because it is available.

Why do our numbers drop when a visitor moves to our booking system?

Because the booking system is usually on a different domain, and without cross-domain measurement configured the browser treats the arrival there as a brand new visit from a new person. The original source is lost, one session becomes two, and the conversion gets credited to a referral from your own website.

The fix is configuration rather than rebuilding anything: the domains have to be declared to each other, the identifier has to be passed across in the link, and the receiving system has to be set up to accept it. The tell-tale sign that it is missing is your own domain appearing as one of your largest referral sources.

Can you fix this without breaking what currently works?

That is the main constraint on how we work. Nothing is deleted on the basis of appearing unused. We document what each tag currently does, run the replacement alongside the existing setup where the platform allows it, and compare the two before anything is switched off.

Where a change is unavoidable, we do it at a defined point, record the date prominently, and annotate the reporting so that six months later nobody mistakes an implementation change for a change in performance.

Our developer set this up. Why would we need anyone else?

Often you do not, and where a developer has implemented a data layer properly we would rather build on that than replace it. The work is faster and better when the underlying implementation is sound.

The gap we usually find is not technical skill but definition. A developer implements what was requested. Whether a form submission on the contact page and a quote request should count as the same conversion, and how either reconciles with what sales calls a lead, is a commercial decision that was rarely made by anybody before the tags were written.

Find out whether your conversions have been wrong all year

Send us access and we will trace your main conversions from the click to the network request, compare the totals against your own records, and tell you what is double-counted, missing or firing on the wrong thing.

Book a Strategy Call

If we don't deliver the work we agreed to deliver for reasons within our control, you don't pay for the undelivered work. Read our guarantee

Last updated · Reviewed by Zubair Afzal

We use analytics to understand which pages are useful. Nothing runs until you choose, and we do not sell or share what we collect. What we would set.