The container nobody cleans up
Google Tag Manager is the most widely used tool for deploying conversion pixels. It's also the most poorly maintained.
The story is always the same. A developer sets up the container when the site is built. A traffic manager adds the Meta pixel. An SEO consultant adds a tracking tag. An agency adds a TikTok pixel. An intern adds a "test" tag and forgets to remove it.
Two years later, the container holds 30 to 50 tags. Nobody knows exactly what each tag does or which ones are still useful, let alone which tags conflict with each other.
The numbers for a typical container
From audits of GTM containers on mid-market e-commerce sites:
| Metric | Average value |
|---|---|
| Number of tags | 30-50 |
| Obsolete tags (pixel removed, tool canceled) | 20-30% |
| Duplicate tags (same pixel, two configs) | 5-15% |
| Unused variables | 15-25% |
| Orphan triggers (linked to no active tag) | 10-20% |
| Tags with no consent condition | 30-50% |
The problem is the build-up without cleanup. Every tag added widens the conflict surface. Every obsolete tag is a dormant risk.
The 4 problems nobody sees
1. Duplicate tags = double counting
Two Meta Pixel tags firing on the same purchase event. Meta Ads sees two conversions per transaction. The displayed ROAS doubles. Smart Bidding overbids. Your real CPA soars without the reports showing it.
It's the most common and most expensive bug. All it takes is an agency installing its own tag without checking what's already there.
2. Trigger too broad = corrupted data
A trigger set to "All Pages" instead of "Confirmation page only". The purchase tag fires on every page view. The bidding algorithm sees thousands of phantom conversions. It takes days, even weeks, to repair the model's drift.
A single misconfigured trigger can corrupt all of a site's conversion data.
3. dataLayer conflict = silent pixel
Two tags writing to the dataLayer at the same moment. One overwrites the other's value. The GA4 pixel receives a zero transaction amount. The Meta pixel receives no event at all. No JavaScript error is visible, because the dataLayer accepts everything. The data is silently corrupted.
4. Tag without consent = GDPR breach
A tag added without a consent condition fires for 100% of visitors, including those who refused cookies. That's a GDPR breach that exposes you to penalties. And when the CNIL flags the problem, the fix (blocking the tag) makes data drop all at once, which looks like a dead pixel.
The 8-point audit guide
You don't need to be a developer to audit a GTM container. Here's the checklist, point by point.
| # | Check | Red flag | Corrective action |
|---|---|---|---|
| 1 | List all tags and their last modified date | Tags untouched for > 12 months | Check whether the tag is still useful; disable it if obsolete |
| 2 | Identify duplicates (same pixel ID, same event) | Two tags with the same Pixel ID or Measurement ID | Remove the duplicate, keep the one with the better configuration |
| 3 | Check the triggers on every purchase tag | Trigger on "All Pages" or "Page View" instead of a specific event | Restrict to the exact trigger (transaction completed, thank-you page) |
| 4 | Check the dataLayer variables in use | Variables referencing keys that don't exist in the dataLayer | Fix the mapping or remove the variable |
| 5 | Check consent conditions | Tags with no "Consent granted" condition in the trigger | Add the Consent Mode V2 condition to every tag |
| 6 | Test with GTM Preview mode | Tags that don't fire when they should, or fire twice | Investigate the conflict and fix it |
| 7 | Check the loading sequence | Tags that depend on a dataLayer not yet populated when they fire | Add a wait trigger (dataLayer ready, DOM ready) |
| 8 | Check the container's total weight | Container > 200 KB | Remove unnecessary tags and variables to reduce the weight |
GTM is the #1 cause of Korvus alerts
On sites monitored by Korvus, GTM configuration errors are the leading cause of pixel_dead and checkout_zero alerts. The pattern repeats:
- Someone changes the GTM container (adds a tag, changes a trigger, updates a variable)
- The conversion pixel stops firing correctly, or fires with corrupted data
- Nobody notices for 24 to 72 hours
- Korvus detects the anomaly within minutes and fires the alert with the cost in euros
The link is direct: a poorly maintained GTM container produces the anomalies Korvus detects. Auditing your GTM reduces the number of incidents. And when an incident happens anyway, Korvus immediately translates it into financial impact.
You don't need to understand the container's code. You need to know that something broke, how much it costs and who to call.
The 90-day rule
A GTM container should be audited every 90 days, rather than once a year or "when we have time".
Every quarter:
- Remove obsolete tags
- Check for duplicates
- Test the triggers on conversion tags
- Check consent conditions
That's 2 hours of work that saves weeks of corrupted data. And between two audits, continuous monitoring that detects the consequences of a GTM change is the only safety net.
Key points
- An average GTM container piles up 30 to 50 tags in 2 years, with 20 to 40% of them useless or dangerous
- Tag conflicts cause 15% of conversion pixel failures
- A single misconfigured trigger can corrupt all conversion data
- A GTM audit doesn't require technical skills: it requires a checklist and rigor
- GTM is the #1 cause of the dead pixel and zero-value checkout alerts detected by Korvus