How to Debug GTM Tags Properly
Preview mode tells you a tag fired. It does not tell you the data was correct or that it arrived. Here is the debugging process that finds real problems.

Most people debug tags by opening preview mode, seeing a green tag fired message, and declaring the job done.
Tag fired means the tag ran. It does not mean the data was correct, that the platform accepted it, or that it only ran once. Those are separate questions and each has its own check.
The four layers, in order
Work through these in sequence. Skipping ahead is why problems take three days instead of twenty minutes.
Layer one: did the trigger fire?
Open preview mode and perform the action. Look at the event in the left panel.
If the tag did not fire, the problem is the trigger, not the tag. Check the trigger conditions against the actual page values. A trigger looking for a URL containing the words thank you will not match a page whose address says order confirmation instead.
Layer two: was the data correct?
This is the layer everyone skips.
Click the tag in preview and look at the values it actually sent. Not the variable names, the resolved values.
Common findings: a revenue value of undefined, a transaction ID that is empty, a currency that says USD on a store that sells in euros, a product array that is empty. The tag fired perfectly and sent nonsense.
Layer three: did the request leave the browser?
Open the browser network tab and filter for the platform’s endpoint. You should see the request going out, and you can inspect exactly what was in it.
This catches things preview mode cannot see, including tags blocked by consent tools, requests stopped by ad blockers, and tracking hardcoded in the theme that GTM knows nothing about.
It is also the only reliable way to count how many requests went out, which is how you catch duplicates.
Layer four: did the platform accept it?
Check the destination. GA4 realtime, Meta Events Manager, Google Ads diagnostics.
A request can leave the browser correctly and still be rejected for a malformed value or a missing required field. Only the receiving end tells you that.
Things that make debugging much faster
Use an incognito window so extensions and cached consent choices do not confuse the results.
Test on a real device too. Mobile behaves differently, particularly on iOS.
Change one thing at a time. Change five and you will never know which one worked.
Test the failure path, not just the happy one. What happens on a validation error, or when someone goes back and resubmits?
Check with consent declined, not only accepted. Half your traffic may be in that state.
The bugs that hide from preview mode
Some problems never appear in preview, which is why people insist everything is fine while the numbers say otherwise.
Hardcoded tags in the theme. GTM does not know they exist, so preview shows one tag firing while two requests leave the browser.
Consent tools that behave differently in preview, because preview sometimes bypasses the banner.
Race conditions, where the tag fires but the page navigates away before the request completes. These look intermittent and drive people mad.
Server side processing, where the browser request is fine but something downstream drops or reshapes the data.
Container never published. Everything works in preview and nothing works in production. Check this first when a fix appears to have no effect.
A quick routine
When something looks wrong, in order: confirm the real numbers from your store or CRM, run one test conversion in preview, check the resolved data values, check the network request, then check the platform. Stop as soon as you find the break.
If everything looks correct at every layer and numbers are still wrong, the problem is usually attribution rather than tracking. That is a different investigation, starting with why platform numbers never match.
Need this fixed properly?
If you have a tracking problem that survives preview mode and nobody can explain it, that is exactly the kind of thing worth a second pair of eyes. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.
Have a look at what I do, or book a call and we can go through your setup together.






















