Can I run two GTM containers on the same domain, and how do I stop them from conflicting?
Yes - GTM supports multiple containers on one page or domain, and they do not conflict at the platform level since each manages its own tags, triggers, and variables independently. The real conflicts come from both containers firing the same downstream tag (duplicate GA4 hits, duplicate ad pixels) or both writing to the same dataLayer keys with different values, which is a data layer governance problem, not a GTM limitation.
Why this happens
Multiple containers are a supported, common pattern - agencies often run their own container alongside a client's main container so they can manage their own tags without touching the primary setup. GTM does not prevent this; each container independently listens to the same shared window.dataLayer array and independently evaluates its own triggers against it. The problem people actually run into is that if both containers have a GA4 Event tag configured for the same purchase event, GA4 receives two separate hits for one purchase, harder to spot because the duplicate tag is hiding in a container you do not normally look at.
Fix it
- Get an explicit list of every container running on the domain (check View Page Source for multiple googletagmanager.com/gtm.js?id= script includes) and get access to all of them - you cannot audit for duplication if you can only see one container's tags.
- Cross-reference tag lists across containers for anything targeting the same destination (GA4 property, Google Ads conversion ID, Meta Pixel ID) - a duplicate here, not a technical container conflict, is the actual bug to fix.
- Establish an explicit ownership boundary per container in writing so future tag additions do not silently re-create the same overlap.
- Agree on a shared naming convention or namespace prefix for dataLayer keys between teams managing different containers, to avoid one container's push overwriting a key the other reads.
- If governance is the real underlying issue, that is worth solving structurally with a runtime container audit rather than container-by-container firefighting.
How to verify it worked
Open GTM Preview for each container in turn against the same live page, and for any conversion event, confirm exactly one container fires exactly one tag for it. If the same GA4 collect request or ad pixel fires from both Preview sessions, use the Network tab's request timing to confirm both are firing on the same real user action rather than one being a stale, inactive container still installed on the page.
Still stuck after working through this?
Send us what you are seeing in Preview and the Network tab. We trace GTM containers for a living and can usually tell you what is actually happening in one look.
Ask a GTM Engineer