Blog · Tag gateway
Google tag gateway is not server-side GTM. First-party mode was renamed, not replaced.
Google tag gateway is not server-side GTM. First-party mode was renamed, not replaced. The Cloudflare toggle serves gtag from your domain. It does not enrich, consent-gate, or fan out to Meta.
Tag Manager release notes now say it in one heading: First-party mode is now Google tag gateway for advertisers. The product is generally available. It supports client-side and server-side tags. You can choose domain names along with Google tag IDs when you enable it. That is a rename of the first-party serving path, not a new processor that replaced your server container.
The first integration most stacks will ship is the Cloudflare or CDN toggle, then a ticket to delete the sGTM cluster because the UI said first-party. Teams that did that lost the CAPI hop. The gateway still sends Google measurement toward Google. It does not become a Meta Conversions API worker, a consent gateway, or an event fan-out. Complementary, not a swap.
What the gateway actually is
The setup guide is for people who want to deploy Google tag gateway for advertisers. Google recommends it for the most durable tag configuration. You already have a Google tag or a Tag Manager container, plus a CDN, load balancer, or web server that can forward requests to external endpoints. That infrastructure sits between your website and Google's services.
In the standard setup, the page requests the Google tag from a Google domain, and when the tag fires it sends measurement to the Google product. With the gateway, the website loads the Google tag from your first-party domain. When the tag fires, some measurement requests go to Google using your first-party domain. Some, not every vendor hit you wish you had. The hop is still Google tags talking to Google, with your hostname in the middle.
You reserve a unique measurement path on the site for each tag or container. Google's examples use readable paths such as /gtm, /metrics, or /analytics, or a random letter-number string so it does not collide with a real route. The page then loads the script from that path instead of www.googletagmanager.com. That is first-party script serving plus a first-party collect path for Google. It is not a tagging server you debug in Preview.
sGTM is still a container on a server you control
Server-side tagging is a different product. The intro is explicit: a server container does not run in the user's browser or on their phone. It runs on a server you control, in Google Cloud or another environment you choose. Only you have the data until you choose to send it elsewhere. You shape it. You route it. Tags are sandboxed JavaScript. Permissions show what a tag can do. Policies set boundaries.
Clients are the adapters. They receive a request, turn it into events, run the container, and package the response. A typical sGTM setup has a Google Analytics client claiming GA4 hits, then tags that forward to Google Analytics, Google Ads, and whatever else you wired. That is the fan-out. If you also POST Meta CAPI or another vendor from that container, that hop lives in sGTM, not in the CDN rule that serves gtag.js.
To send browser traffic into sGTM you point gtag at server_container_url, or you send the web container to the first-party collector host. Preview lists requests and events. Production wants the server on your first-party domain. None of that is the gateway toggle. The gateway can sit in front of scripts. The server container is still the processor.
Google's own recommended setup is both
The CDN plus sGTM guide is the sentence that should have stopped the deletion tickets. Both products can function independently. Using them together is the most robust and controlled tagging setup. Option 1: CDN serves Google scripts from your domain and data goes to Google through that domain. Option 2: the sGTM server handles both script serving and data collection. Option 3, recommended: the CDN serves Google scripts from your first-party domain, and a separate sGTM server manages data collection, enrichment, and control.
Enrichment and control are the words the gateway does not claim. The combined architecture uses two different same-origin paths. Their example uses /scripts for the gateway tag-serving path and /metrics for sGTM. Same site, two paths. A Cloudflare mapping that only implements the gateway path is option 1. It is durable Google script serving. It is not option 3.
The May 2025 Google Ads help post framed the gateway as a rollout that lets you run Google tags, client-side or server-side, through your own website infrastructure. Implementation requires no change to the existing tag code on the pages. Cloudflare is named as a one-click partner. That is why the toggle got clicked. The same month, Tag Manager still had a diagnostic that a supported CDN was present and first-party mode was not enabled. People enabled it to clear the alert. Then they shut off App Engine because the alert went green.
Starting April 10, 2025, Tag Manager containers with Google Ads and Floodlight tags automatically load a Google tag first, before sending events. Google recommended adding the Google tag on Initialization - All Pages so you can preview the impact. That change is about the Google tag loading inside the web container. It is not a reason to delete the server container that was forwarding purchases to other vendors.
The loader people treat as sGTM
A first-party Google tag load. There is no server_container_url and no Meta CAPI tag.
<!-- Google tag (gtag.js) via first-party path -->
<script async src="https://www.example.com/metrics/"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-123456789');
</script>
That snippet is a legal gateway-style load if /metrics is the reserved path and the CDN forwards it. It is not a server container. There is no client claiming the request. There is no tag that hashes an email and POSTs graph.facebook.com. When the purchase fires, Google Ads may still get a conversion from the Google tag. Meta, TikTok, and Pinterest will not, unless a browser pixel or a separate CAPI worker still runs.
CNAME cloaking is a third shape, and it is not this product. Cloaking is a DNS alias from collect.yoursite.com to a vendor hostname so the browser treats the cookie as first-party. Safari already classified that pattern. Google tag gateway is Google's documented first-party serving path for Google tags. sGTM on infrastructure you own is a process you forward through. Do not mix the three in a postmortem.
Names that do not translate
- First-party mode is Google tag gateway for advertisers. Same product, new name.
- A CDN path such as /metrics is not a server container. Preview will not list clients.
- server_container_url is sGTM. The gateway setup does not set it for you.
- Cloudflare one-click is Google script serving. It is not Meta CAPI.
- Clients, tags, triggers, and variables on a server you control are sGTM.
- Option 1 (CDN only) is not option 3 (CDN plus sGTM). Google recommends both.
- A first-party Google collect path does not consent-gate a facebook.com/tr tag.
What you lost when you deleted the server
sGTM was where a lot of stacks stripped PII, applied consent, and fanned a single browser event into Google Ads, GA4, and a Conversions API. The gateway does not do that job. If the only remaining hop is a first-party gtag load, Google still sees Google. Everyone else sees a hole. That is the week ROAS on non-Google channels goes quiet while Google Ads still looks internally consistent.
Consent is the other miss. Consent Mode still has to run in the page or in the CMP template. A CDN that serves gtag.js from example.com does not default ad_storage to denied. It does not wait_for_update. It does not map TCF purposes. If you were using the server container to drop events when consent was denied, that policy died with the container.
You can put the gateway and sGTM on the same origin with two paths, which is what Google now documents as the durable setup. Keep the CDN for script bytes. Keep the server for the event graph. If you only needed Google Ads durability, option 1 may be enough. If you were using sGTM as the CAPI bus, the Cloudflare toggle never replaced it.
The CDN serves Google scripts directly from your first-party domain for durability, while a separate SGTM server manages data collection, enrichment, and control.
Google for Developers: Google tag gateway with CDN + SGTM
What to do
Inventory the hostname. If the page loads gtag or gtm.js from a first-party path and you have no server container URL, you have the gateway, not sGTM. If Preview on a server container still lists clients, you still have sGTM. You may want both. Google's recommended architecture is two paths on the same origin.
If someone already deleted the server, restore the purchase fan-out before you argue about script durability. Direct CAPI from the shop backend is a valid replacement for an sGTM Meta tag. A first-party Google tag is not. Persist event_id, hashed email, and the click ids you actually need, then emit each vendor envelope at the edge.
The contract pages are the gateway setup guide and the server-side tagging intro. This post is the market fact: first-party mode was renamed to Google tag gateway for advertisers, and it is not a server container. Pixellint is not affiliated with Google. Passing a linter means the artifact matches the published envelope. It does not mean the CDN rule is sGTM, and it does not prove attribution.
Checklist
- Read the Tag Manager release notes: first-party mode is Google tag gateway for advertisers.
- Keep sGTM if you enrich, consent-gate, or fan out to vendors other than Google.
- If you combine them, use two different same-origin paths. Do not point both at /metrics.
- Do not treat a Cloudflare or CDN toggle as a CAPI replacement.
- Confirm server_container_url or the sGTM collector host still receives purchase events.
- A first-party Google tag load is not CNAME cloaking and is not a Meta pixel.
Sources
Contract pages
The dated argument is above. These pages are the field lists.