If you manage GTM containers for clients, you have probably already seen the banner: Google is migrating the old GA4 Configuration Tag to the unified Google Tag, and it is doing a lot of that migration automatically. The messaging is reassuring - "no action needed, your data keeps flowing." For most simple setups, that is true.
But "most simple setups" is not what agencies run. You run containers with consent gating, multiple measurement IDs, Google Ads conversions linked through GA4, custom field overrides, and a stack of dependent event tags that assume a config tag fired first. For those containers, an unsupervised auto-migration is exactly the kind of silent change that shows up three weeks later as a 12% dip in recorded conversions that nobody can explain.
This is the calm version of the upgrade. No panic, no rushing. Just what actually changes, how to deploy it safely with a dual-ID model, what to audit before you touch anything, what to test in staging, and how to roll back if it goes wrong.
What "Destinations" actually changes
The headline change is that the GA4 Configuration Tag in GTM is being replaced by the Google Tag. Functionally they look similar - you still drop a tag, give it a measurement ID, and fire it on All Pages. The important difference is underneath.
A single Google Tag can now load configuration for multiple destinations from one tag instance. A "destination" is any Google product that accepts that tag's data - a GA4 property, a Google Ads account, a Floodlight configuration. Crucially, those additional destinations can be attached to the tag's ID in the Google tag settings UI (in GA4 Admin or Google Ads), outside of your GTM container.
That last point is the one that bites agencies. Read it again: configuration that used to live entirely inside the container you control can now be added by someone with access to the Google Ads or GA4 account, and it will load through your tag without a single container change. Your container can be pristine and version-locked while the actual behavior on the page drifts.
- One tag, many destinations: a Google Tag firing for your GA4 ID may also initialize a linked Google Ads destination automatically.
- Config can live outside GTM: destinations and some settings are managed in the product UI, not the container.
- Shared settings groups: Google Tag settings can be defined once and referenced by multiple tags, which is convenient and easy to change in the wrong place.
- Automatic event collection may behave differently depending on which destinations are attached.
The single biggest risk of the migration is not data loss - it is configuration drift. The Google Tag makes it possible for tracking behavior to change without a corresponding GTM container version. If your governance model assumes "the container is the source of truth," that assumption no longer fully holds. Document where every destination lives before you migrate.
The dual-ID deployment model
The safest way to migrate a real client container is not to flip the existing tag and hope. It is to run the old and new configurations in parallel against separate destinations long enough to prove parity, then cut over. We call this the dual-ID model.
The principle: introduce the new Google Tag pointed at a shadow measurement ID (a second GA4 data stream or property), firing alongside your existing, untouched configuration. Both collect for the same traffic. You compare the two streams. When they match within tolerance across the metrics that matter, you promote the new tag to the production ID and retire the old one.
- Stand up a shadow stream. Create a parallel GA4 data stream (or a dedicated validation property) with its own measurement ID. This is your control surface - nothing in production depends on it.
- Add the Google Tag pointed at the shadow ID. Configure it the way you intend production to look: consent settings, field overrides, linked destinations. Fire it on the same triggers as the live config tag.
- Run both in parallel. For a defined window - typically one to two full weeks to capture weekday and weekend patterns - both the legacy config and the new Google Tag collect simultaneously.
- Compare for parity. Sessions, users, key events, conversions, e-commerce revenue, and channel attribution should track together. Differences over ~2-3% need an explanation before you proceed.
- Cut over. Once parity holds, repoint the Google Tag to the production measurement ID, confirm Google Ads conversion import still resolves, and pause (do not yet delete) the legacy config tag.
- Decommission. After a clean week on the new tag, remove the legacy config tag and the shadow stream in a clearly labeled container version.
The dual-ID approach costs you a couple of weeks of patience. What it buys you is the ability to say, with data, exactly what changed - instead of discovering it in a client's monthly report.
The pre-upgrade audit: know your container before you change it
You cannot migrate safely what you have not mapped. Before the Google Tag goes anywhere near production, run this audit on the container. It is the same discipline we apply in our GA4 audit checklist - container hygiene first, change second.
Which tags actually move
Not everything migrates, and not everything that can migrate should in the same step. Sort your container into three buckets:
- Moves directly: the GA4 Configuration Tag itself becomes the Google Tag. This is the core swap.
- Depends on it: every GA4 Event tag that relies on the config tag having fired first. These do not change, but they break if the config-equivalent is misconfigured.
- Quietly affected: Google Ads conversion and remarketing tags, especially if conversions are imported from GA4 rather than fired as native tags. A destination change can double-count or zero them out.
Inventory checklist
- Every GA4 measurement ID in the container is documented, with which property it maps to
- All config-tag field overrides (cookie settings, custom dimensions, send_page_view, server_container_url) are recorded
- Consent settings on the config tag are captured exactly - default state, regions, and which storage types are gated
- Every dependent GA4 Event tag and its trigger is listed (so you can confirm none silently stop firing)
- Google Ads linkage is mapped: native tags vs. GA4-imported conversions (and whether both exist for the same action)
- Any destinations already attached in the GA4 or Google Ads UI are written down - this is the off-container config that causes drift
- Server-side container involvement is noted (server_container_url present?) - see our server-side tagging breakdown
- The current container version is exported and archived as your known-good baseline
What to test in staging
Use GTM Preview against a staging environment (or production with a debug condition) and verify each item before publishing:
- The Google Tag fires once, on the right trigger, with no duplicate page_view
- DebugView shows the page_view and all key events landing in the correct property
- Consent Mode signals still pass through - tags stay gated when consent is denied, fire when granted
- Google Ads conversions register in the conversions report (not "no recent conversions")
- No unexpected destination is initialized - check the network tab for collect calls you did not configure
- Custom dimensions/metrics still populate (field overrides survived the move)
- E-commerce events carry full item arrays and revenue matches the platform within tolerance
- Cross-domain linking still decorates URLs where required
The most commonly missed test: consent behavior after the swap. The Google Tag and the legacy config tag can handle default consent state slightly differently depending on how your CMP wires the update. Always re-verify, in incognito, that no marketing destination fires before the user makes a choice.
The rollback plan
A migration without a rollback plan is a gamble, not a deployment. Because GTM is versioned, your rollback is mostly about discipline before the change, not heroics after it.
- Snapshot first. Before any edit, note the current published container version number and export it. This is your one-click revert target.
- Name the migration version clearly. "Google Tag migration - cutover" beats "v47." Future-you needs to find it fast under pressure.
- Pause, do not delete. During cutover, pause the legacy config tag rather than deleting it. A paused tag can be re-enabled in seconds; a deleted one must be rebuilt.
- Define your trip-wire. Decide in advance what triggers a rollback - e.g. key-event volume drops more than 10% day-over-day, or Google Ads conversions flatline for 24 hours.
- Know the off-container risk. Reverting the container does not undo destinations added in the GA4/Google Ads UI. If you attached destinations there, your rollback runbook must include detaching them too.
- Re-publish the baseline. If the trip-wire fires, restore the archived version, re-enable the legacy tag, and confirm data resumes in real-time before you start diagnosing.
Watch real-time and DebugView for the first hour after cutover, then check key-event and conversion volumes at 24 and 72 hours. Most migration problems surface inside three days. If you cross a clean week with parity holding, you are done.
Want a second set of eyes before you migrate? We will run a free pre-migration container review - we map your tags, destinations, consent wiring, and Google Ads linkage, and flag exactly what the Google Tag swap will touch. Request a container review, or start with a free scan of your overall setup at rawsoft.com/dmi.