Two Google Tag Manager Containers on One Site: How It Happens and How to Find It
Here is a problem that hides in plain sight: your site is running Google Tag Manager twice. Two containers, both firing, both counting. You never planned it. Nobody did. It just accumulated.
When that happens, your conversions can double. Your remarketing tags can fire twice. Your page views inflate. And every number you use to make spending decisions gets a little bit fake. You end up optimizing your ad budget toward a version of reality that does not exist.
The frustrating part is that everything still looks fine. The site loads. Sales come in. Google Ads reports conversions. Nothing screams "broken." That is exactly why this one lives in accounts for months.
Let me walk you through how two containers end up on one site, what it does to your data, and how to check for it yourself in about ten minutes.
Why two containers happen in the first place
Google Tag Manager is the box that holds your tracking tags. Instead of pasting a dozen snippets into your site, you paste one GTM snippet, and then you manage everything else from inside GTM. Clean idea. Works great when there is one.
The trouble is that the GTM snippet gets added in more places than most people realize. Over the life of a store, it tends to sneak in through several doors at once.
- A theme update or a new theme. Someone hardcoded GTM into the theme files a year ago. Then you switched themes, or a developer pasted it into the new one too, and now both are live.
- A Shopify app. Plenty of apps offer to "add your GTM container for you." You fill in your container ID, it injects the snippet. If it was already in your theme, that is two.
- A new agency or freelancer. They did not find the old container, so they installed their own. Now yours and theirs both run.
- The old checkout vs the new one. Shopify has moved tracking around over the years. Snippets added under the old setup can linger alongside the new one.
- Header and footer both. Someone pasted GTM in the header, someone else later pasted it in the footer "to be safe." Two loads on the same page.
None of these are dumb mistakes. They are the normal result of a site being touched by more than one person over more than one year. Which is nearly every store.
What two containers actually do to your numbers
The damage depends on what the containers hold, but the pattern is usually the same: things fire more than once.
Say both containers have a Google Ads conversion tag for purchases. A customer buys once. Two containers each fire the purchase tag. Google Ads records two conversions from one real sale. Your reported conversions are now double your real orders.
That flows straight into your decisions. Your cost per conversion looks half of what it really is. Your return on ad spend looks twice as good. So you scale up campaigns that are actually mediocre, and you pause campaigns that were quietly fine. The data is not just wrong, it is confidently wrong in a direction that costs you money.
The worst tracking problems are not the ones that break loudly. They are the ones that keep reporting clean numbers that happen to be false.
It gets messier when the two containers are not identical. Maybe one fires GA4, one fires Google Ads, one has a purchase value and one does not. Then you get a mix: some events doubled, some single, some with values, some without. Your reports stop making sense in ways nobody can quite explain, and everyone blames "attribution."
We know this failure mode because our own store lived a version of it. Different root cause, same lesson: the reporting said 67,184 conversions when there were about 900 real orders, a 145% conversion rate that is mathematically impossible, and we spent 16 months optimizing toward events that were never real. Once the tracking was fixed, reporting matched to the cent. When your numbers are honest, decisions get easy. When they are inflated, every decision is a guess.
How to find it yourself
You do not need to be an analytics engineer to catch this. You need a browser and ten minutes.
Option 1: Use Google Tag Assistant
Google's own Tag Assistant is the fastest check.
- Go to tagassistant.google.com and click Add domain.
- Enter your site URL and let it open your site in a connected window.
- Browse a page or two, then look at the list of tags it detected.
If you see two different GTM container IDs (they look like GTM-XXXXXX), you have two containers. Write both IDs down. You will need them.
Option 2: View the page source
Even simpler, no tools required.
- Open your site in Chrome.
- Right click and choose View Page Source.
- Press Ctrl+F (or Cmd+F on a Mac) and search for
GTM-.
Count the results. If GTM- shows up with two different codes after it, that is two containers. Do this on a product page and on the checkout or thank you page too, since containers sometimes only load on certain pages.
Option 3: Check the network tab
For the slightly braver:
- Open your site, right click, choose Inspect, and go to the Network tab.
- Refresh the page.
- In the filter box, type
gtm.js.
Each gtm.js request is a container loading. Two rows with two different IDs means two containers firing on that page.
Then ask the obvious question
Once you find two IDs, do not delete anything yet. First figure out which one is the real one. Look inside each container in GTM and see which holds your active conversion tags. One is usually the "real" one your ads depend on, and the other is the accidental twin. Removing the wrong one breaks tracking entirely, so identify before you delete.
The quiet cost of leaving it
A store can run for a year like this and never notice, because doubled data still looks like data. Sales still happen. Reports still populate. The account just slowly optimizes toward numbers that are inflated, and the budget follows.
The fix is usually straightforward once you know it is there. The hard part is knowing.
If you would rather have someone confirm exactly what your site is loading and what those tags are really counting, that is what the AdProof Audit is for. We check your setup, touch nothing, and hand you a plain-English report plus a short recorded walkthrough of what we found. No pressure. Just a clear answer to a question most accounts never think to ask.