Why this is worth an afternoon
Broken conversion tracking does not look broken. It looks like a number in a dashboard, and every decision downstream — which campaign to scale, which keyword to pause, whether the channel works at all — is made from it.
The failure modes are worse than reporting zero. Tracking that over-counts makes a losing campaign look profitable, so you scale it. Tracking that under-counts makes a winner look like a failure, so you switch it off. Both are more expensive than no tracking, because no tracking at least makes you cautious.
Before you start
Write down what you expect. Which events should exist, what should trigger each one, and where it should appear. If you cannot write that down, that is the first finding — nobody can verify a system with no specification, and “leads” is not a specification.
Have open: your site in a private window, Google Analytics, your ad platform, and wherever enquiries actually land — inbox, CRM or database.
Step 1: submit a real test enquiry
Use the form like a customer. Write something obviously identifiable in the message — “TEST, please ignore” with the date — so you can find and delete it later, and so nobody mistakes it for a lead.
Then confirm where it arrived. Not whether you saw a thank-you message, but whether the enquiry is actually recorded somewhere you would find it tomorrow. A form that shows a success message and stores nothing is a fault that exists more often than anyone expects, and it is invisible until someone asks why a client never got a reply.
Step 2: watch the event fire as it happens
Use GA4’s DebugView. Install the Google Analytics Debugger extension, or add ?debug_mode=true to the URL, and open DebugView in the GA4 admin. You will see events appear in near real time as you move through the site.
Submit the form again and watch. You are checking three things:
- The conversion event fires at all.
- It fires once, not twice.
- It fires on submission, not on page load.
That third check finds the most damaging fault in this article, so it gets its own step.
Step 3: prove it does not fire on page load
Open the thank-you page directly, by typing its address into the browser, without submitting anything. Watch DebugView.
If a conversion registers, your tracking is counting visitors rather than enquiries. Every bot, every refresh and every person who bookmarked that page is a conversion. This is the most common serious tracking fault I find, and it always makes campaigns look better than they are.
The fix is to make the conversion depend on evidence that a submission really happened — a parameter the server added, a value only a real submission can produce — rather than on the page simply existing.
Step 4: check it arrives in the ad platform too
GA4 seeing an event does not mean Google Ads or Meta did. They are separate pipelines, and either can be broken alone.
In Google Ads, look at the conversion action’s status and the “last conversion recorded” date. In Meta Events Manager, use the Test Events tool, which shows events arriving from your browser live. A conversion action showing “no recent conversions” while your enquiry inbox is busy is a broken link between the two.
Step 5: test on a phone
Do the whole thing again on a real phone, on mobile data. Mobile is where most traffic is and where most faults hide: a form that fails validation on a small screen, a consent banner covering the submit button, a script blocked by a mobile browser’s stricter defaults.
A tracking setup verified only on a desktop in the office has been tested on the minority of your traffic.
Step 6: test with consent refused
If you have a cookie banner, run through the form again and decline. Then check what was recorded.
You are not looking for a particular answer — you are looking for a known one. Many businesses discover here that a large share of traffic is invisible, or conversely that the banner does nothing at all and consent is being ignored, which is a different and more serious problem.
Step 7: reconcile the numbers for one week
Take a settled week and put three numbers side by side: enquiries you actually received, conversions in GA4, conversions in the ad platform.
They will not match, and they are not supposed to — the platforms count differently and that is normal. What you are checking is whether the relationship is sensible. The ad platform usually reports the most, your own records the fewest. If your platform reports more conversions than you have enquiries, go back to step three.
The four faults this finds most often
- Conversion firing on page load. Counts visitors as enquiries. Inflates everything.
- Double-firing. Usually a tag installed both directly and through a tag manager. Halves your apparent cost per lead.
- The event fires but never reaches the ad platform. The account shows no conversions while the inbox fills up, and bidding has nothing to optimise towards.
- The form succeeds visually but stores nothing. The worst of the four, because you lose the actual lead and not just the record of it.
Afterwards
Delete your test enquiries so nobody treats them as real, and keep a note of the date you ran the check and what you found. Re-run it after any site change, any theme or plugin update, any new consent banner, and any change to the thank-you page. Those are exactly the moments tracking breaks, and the break is silent.
If you would rather have it done properly, and get a written account of what fires, when, and whether it arrives, a tracking audit does that. If you want to check the underlying setup first, the GA4 and GTM setup checklist covers the configuration.