- Published
- Byline
- GoHighLevel Partners Editorial
- Filed under
- GoHighLevel Automation
A conversion that does not register is worse than no tracking, because decisions get made on the number anyway.
Tracking code not firing: working through the causes in order
A conversion that does not register is worse than no tracking at all, because decisions get made on the number anyway. Advertising is optimised toward a figure that is missing a portion of its results, and the campaign that looks worst may be the one performing best.
The causes fall into a small number of families, and they are worth checking in order of how often they are responsible rather than in the order they occur to you. What follows is that order.
First: is the tag on the page at all?
Load the page in a private window and look at what it actually delivers, rather than at the builder’s settings. A surprising share of “not firing” reports are a tag that was added to one page and not another, added at account level but not applied, or lost when the page was duplicated — the general problem in what moves and what breaks on import.
Two specific cases account for most of the rest. The tag exists twice, once from the builder’s own integration field and once pasted by hand, which produces double counting rather than none — a different symptom with the same root. Or the tag sits on the page before the library it depends on, so it runs and fails silently, which is the ordering problem described in code in the page header.
Second: is something deliberately preventing it?
| Cause | Symptom | What to do |
|---|---|---|
| A consent tool blocking until a choice is made | No data from visitors who did not choose | Correct behaviour; do not move the tag above the consent layer |
| Browser or extension blocking | Missing a proportion of visitors, varying by audience | Expect it; measure the platform’s own numbers alongside |
| Privacy settings on the device | Similar, and concentrated on some platforms | Nothing to fix — account for it when comparing sources |
| The visitor left before it ran | Under-counting on slow pages | A speed problem rather than a tracking one |
The first row is the one people try to solve incorrectly. Moving tracking above the consent layer to restore the data defeats the mechanism, and the record of what was agreed to — the subject of what a consent record has to contain — stops matching what actually happened.
Third: is the trigger wrong?
A tag that loads correctly can still never fire because the thing it waits for does not occur. Check what the trigger actually is: a page view on a specific URL, a click on a selector, a form submission event.
- The confirmation URL changed. A tag firing on a specific thank-you path stops working the moment that path changes — which is why the thank-you step should be treated as part of the tracking setup rather than as a page someone can rename.
- The form submits without a page change. A form that confirms in place never produces the page view a tag is waiting for.
- The form is inside a frame. Events inside an embedded frame do not reach the parent page unless the embed passes them, which is the same boundary that causes why an embedded frame clips.
- A click selector no longer matches. Rebuilding a button changes what it looks like to a rule matching on classes.
- The redirect ate the event. A confirmation that immediately redirects can leave no time for the tag to run.
Fourth: is the data arriving somewhere you are not looking?
Sometimes the tag is firing perfectly and the data is going to the wrong place. The usual causes are a copied page carrying a different account identifier — one of the quiet consequences described in what moves and what breaks on import — or two properties configured for the same site with reporting looked at in only one.
Host mismatches produce the same effect. Where a site is reachable at more than one hostname, tracking configured against one records only part of the traffic, and the fix is the canonical decision in choosing one canonical host. Parameters matter too: if UTM parameters do not survive the journey to the confirmation, the conversion is recorded without a source and appears as direct traffic.
A diagnosis order that saves time
Work outward from the page rather than inward from the report:
- Load the page fresh in a private window and confirm the tag is present, once and only once.
- Watch the browser’s own network activity while completing the action, and see whether a request is sent at all.
- If nothing is sent, the problem is the tag or the trigger. If something is sent, the problem is where it is going.
- Complete a real conversion end to end rather than testing the confirmation page directly, since visiting it in isolation skips whatever the trigger depends on.
- Wait before concluding. Reporting delays vary by platform, and several hours of apparent silence is normal on some of them.
That fourth point catches a specific self-inflicted wound: testing by opening the confirmation URL directly, seeing a conversion recorded, and concluding the tracking works — when in fact the page is reachable to anyone, which is one of the reasons it should be kept out of what belongs in a sitemap.
Reduce your dependence on the tag
Client-side tracking will always miss a share of conversions, and the share grows. The durable answer is not a better tag but a second record: capture the source on the contact or order at the moment it is created, so the outcome can be attributed from your own data regardless of what any tag reported.
That record is what makes measuring conversion by stage possible and what keeps a campaign judgeable when platform-reported numbers disagree with reality. It is also what lets you interpret a paid social funnel honestly, and it is the only version of the data that survives a change of tag, of platform, or of consent regime.
Finally, re-verify after every structural change and before any comparison. A test run on a funnel whose tracking is broken produces a confident, wrong conclusion, which is a specific hazard of testing a funnel step — and the check takes a few minutes against a result you might act on for months.
Frequently Asked Questions
What should be checked first when a tracking code is not firing?
Whether the tag is on the page at all. Load it in a private window and look at what is actually delivered rather than at the builder’s settings — a tag added to one page and not another, or lost when a page was duplicated, accounts for a large share of reports.
Why might a tag be present but never run?
Because it sits before the library it depends on and fails silently, or because a consent tool is blocking it until the visitor chooses. The second is correct behaviour, and moving the tag above the consent layer to restore the data defeats the mechanism.
Why does a conversion tag stop working after a rebuild?
Usually because its trigger no longer matches. A tag firing on a specific thank-you path breaks when that path changes, and a click rule matching on classes breaks when the button is rebuilt. Forms that confirm in place never produce the page view a tag is waiting for.
Why do form submissions inside an embed go untracked?
Because events inside an embedded frame do not reach the parent page unless the embed deliberately passes them out. It is the same boundary that causes an embedded form to clip rather than resize.
Why does testing the confirmation page directly give a false result?
Because visiting it in isolation skips whatever the trigger depends on and still records a conversion, since the page is reachable to anyone. Complete a real conversion end to end instead — and keep the confirmation page out of the sitemap.
How can you reduce dependence on client-side tracking?
Capture the source on the contact or order at the moment it is created, so outcomes can be attributed from your own data regardless of what a tag reported. That record survives a change of tag, platform or consent regime, and it is what makes stage-by-stage measurement possible.
We build your GoHighLevel account for you
CRM, pipelines, funnels, SMS and automation — configured for your business, not left for you to figure out.
- Setup (one-time)$850
- Ongoing (per month)$38.80
No obligation quote · reply within 1 business day
This site is independently operated and is not officially affiliated with, endorsed by, or sponsored by HighLevel LLC. We do not receive referral commissions — this is our own flat-fee implementation service.