Conversion tracking and troubleshooting in Google Tag Manager
Most "GTM is broken" tickets are not GTM problems - they are data layer problems, consent-gating problems, or attribution-model mismatches that look like tracking bugs. Here is how to tell the difference and fix the one that is actually yours.
Common failure patterns
| Symptom | Usual cause | Where to look |
|---|---|---|
| GA4 not tracking an event | Trigger condition never matches, or tag is unpublished | GTM Preview mode on the live page |
| GA4 data discrepancy vs. Ads | Different attribution models and session definitions | Compare methodology before assuming a bug |
| Duplicate conversions | Tag fires on page refresh or back-button navigation | Deduplication logic in the data layer push |
| Tag works in Preview, not production | Version never published, or consent/caching differs | Container publish history; CMP consent state |
| Ecommerce values look wrong | Currency, price, or quantity mismatched in the data layer | Live dataLayer object via browser console |
Setting up ecommerce conversion tracking
Reliable ecommerce tracking starts before GTM is involved: a standardized purchase (or equivalent) event pushed to the data layer with a transaction ID, value, and currency at minimum, fired exactly once per transaction. GTM's job is then to read that event and route it to GA4, Google Ads, and any other destination - not to reconstruct the transaction from page content.
Using debug mode properly
GTM's Preview mode shows every tag that fired or did not fire on a given page load, plus the data layer and variable state at that moment. GA4's DebugView shows the same story from the analytics side. Used together, they usually answer "why didn't this fire" in minutes rather than hours of guessing.
Google Ads conversion setup (goals, attribution windows, bid strategy) lives in the ad account, not the tracking layer. We verify that conversion tags fire correctly; we do not manage the ad account itself.
When troubleshooting turns into a rebuild
If the same class of discrepancy keeps recurring across campaigns and pages, that is usually a sign the underlying data layer needs a proper specification rather than another one-off fix - see Google Tag Manager implementation or start with a runtime audit to scope it.
Common questions
Why does GA4 show a different conversion count than Google Ads?
They measure differently by design - GA4 uses its own attribution model and session definition, Google Ads uses click-based attribution with its own lookback window. Some gap is expected; a large or growing gap usually means one side is double-counting or the other is missing events, which a tag audit can isolate.My GTM tag fires in Preview mode but not in production - why?
Preview mode runs the current workspace; production runs the last published version. If the tag was never published, or a load rule behaves differently under real consent/cache conditions than in preview, it will pass one and fail the other. Confirm the version is published, then check for consent gating and caching differences.How do I set up ecommerce conversion tracking in GTM?
Start from a data layer that pushes a standardized purchase (or equivalent) event with transaction ID, value, and currency at minimum, deduplicated so a page refresh cannot fire it twice. The GTM tag then reads that event rather than parsing the page - the data layer is the part worth getting right first.What is GTM's debug/preview mode and how do I use it?
Preview mode opens a side panel showing every tag that fired or did not fire on a page load, along with the data layer values and variable values at that moment - it is the fastest way to see why a tag did or did not fire before assuming the container is broken.
Stop guessing at tracking discrepancies.
We reconcile what fires against what your reports show, and tell you which side is wrong.
Get a Free Google Tag Manager Audit