This article only applies to you if you use Google Tag Gateway (GTG) on your site.
What is Google Tag Gateway and what is its impact on consent?
Google Tag Gateway (GTG) is a mechanism offered by Google that allows you to serve Google tags (gtag.js, gtm.js) from your own domain instead of googletagmanager.com. In practice, GTG transforms third-party scripts into first-party scripts.
Activation is done with a single click from the Google Tag Manager interface: Google then injects a CDN configuration that modifies the source of the script loaded on the site.
Once GTG is activated, a tag that was previously loaded from
https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX is now loaded from https://your-domain.com/gtm.js?id=GTM-XXXXXX
What is GTG for?
GTG offers a lightweight alternative to server-side tracking for sites that want to:
Bypass ad blockers that block requests to
googletagmanager.com.Improve performance by reducing third-party DNS requests.
Strengthen tracking resilience against browser restrictions (ITP, ETP).
Unlike server-side tagging (which requires a dedicated GTM server), GTG activates with a single click from the GTM interface.
Impact on consent: the late consent risk
For Axeptio to work correctly, two signals must be emitted before Google tags execute:
the Consent Mode
defaultcommand (gtag('consent', 'default', {...}))the TCF stub (
window.__tcfapi), for sites subject to the IAB TCF v2.2 framework
If this is not the case — that is, if the default command and/or TCF stub load after Google tags have already started — this is called late consent.
When consent is late, the first events sent by Google tags may be sent without the user's chosen consent state being taken into account, which violates Consent Mode implementation requirements.
This issue can occur independently of GTG, particularly in the following situations:
Axeptio integration via manual script, if Axeptio is not positioned before GTM in the HTML
use of the Axeptio GTM tag template without the "Consent Initialization - All Pages" trigger
integration via CMS plugin, depending on how it injects the script
If you have followed our integration recommendations — both on the Axeptio integration method and on Consent Mode v2 configuration — the default command is emitted before Google tags: GTG then has no impact on your configuration.GTG can amplify this existing issue: by serving gtm.js from your own domain, the script potentially loads faster (no external DNS resolution), which reduces tolerance for loading order issues. GTG acts as a revealer: it makes visible a problem that could have gone unnoticed until now.
What GTG does not do
GTG does not bypass the user's consent choices. Consent Mode continues to adapt tag behavior based on consent reported by Axeptio.
GTG does not collect any additional data compared to
gtag.js/gtm.js. GTG only modifies the way the script is loaded, not what it does once loaded.
How to check if you are using GTG?
Important: verification of GTG activation must be performed manually by you. Axeptio detects the symptoms (late consent) but it is up to you to correlate with GTG using the steps below.
For formal verification steps, consult the Google Tag Manager help center: https://support.google.com/tagmanager
Additionally, here are three practical checks you can perform in a few minutes.
In the page source code
Open the page in question in a browser.
Display the source code (right-click → View page source or
Ctrl+U/Cmd+Option+U).Search for the
<script>tag that loadsgtm.jsorgtag/js.
Tag served via GTG:https://your-domain.com/gtm.js?id=GTM-XXXXXXTag NOT served via GTG:https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX
The verification criterion is the source domain of the script: it must be yours (e.g. https://example.com/gtm.js) and not https://www.googletagmanager.com/gtm.js.
The script name may have been customized. GTG allows you to change the container file name (default gtm.js). If this name has been changed, the search in the source code will return nothing. In this case, use the Network + Initiator method described below.
In the browser's Network tab
Open the browser's developer tools (
F12orCmd+Option+I).Go to the Network tab.
Filter on
gtm.jsorgtag.Reload the page.
Inspect the Domain / Initiator column of each request.
If you see your-domain.com/gtm.js?id=… → ✅ Tag served via GTG
If you see www.googletagmanager.com/gtm.js?id=… → ❌ Tag not served via GTG
Special case: custom container name
GTG allows you to change the container file name (default gtm.js). If you have customized this name — or if you don't know if it has been changed — searching for gtm.js in the Network tab will return no results. Here's how to proceed in this case:
Note: Axeptio cannot automatically detect whether GTG is activated — there is no public API for this. This verification is therefore always manual.
Step 1 — Check the tag's original URL
If the tag is served from a URL starting with https://www.googletagmanager.com/, GTG is not activated. You can stop here.
If the loading URL is different (own domain or unknown), proceed to the next step.
Step 2 — Identify the network request of the tag in question
Navigate to the site and open the developer tools (
F12orCmd+Option+I).Go to the Network tab.
Identify an HTTP request issued by the tag in question. For Google Analytics (GA4), filter for example on the word
collect— GA4 data collection requests contain this term.
⚠️ This step is the trickiest. The request may be partially obfuscated depending on the tag configuration. If you can't find it, search for requests to Google Analytics or Google Ads domains (analytics.google.com, google-analytics.com, doubleclick.net).
Step 3 — Trace back to the initiating URL
Click on the request identified in step 2.
Open the Initiator tab.
The call stack displays the chain of calls that triggered this request. Trace back to the source script: this is the one that corresponds to the tag loaded via GTG (or not).
If this source script is served from your own domain (and not googletagmanager.com), GTG is activated for this tag.
In the Google Tag Manager interface
Containers deployed via GTG display a badge or dedicated mention in the Admin section of the container. Refer to the Google Tag Manager Help documentation for the exact labels: https://support.google.com/tagmanager
What to do with this result?
If none of your Google tags are served via GTG: no GTG action needed. Continue using Axeptio as today.
If some of your Google tags are served via GTG and you see a late consent warning: proceed to the section below.
If you use GTG
Axeptio helps you detect late consent issues
Shake — Google Consent Mode Check automatically performs a monthly scan of your site to detect late consent issues. Available for all Axeptio customers.
Results are visible directly from your back-office, in the Google Consent Mode Check section.
A PDF report is sent automatically after each scan.
It is not possible to manually trigger a scan before the next 30-day deadline.
Shake does not detect GTG directly (no public API allows it), but it identifies problematic symptoms (late consent, missing signals) and guides you toward the actions to take.
What to do if Axeptio detects late consent and GTG is activated?
Late consent issues related to GTG are caused by a tag loading order that is beyond Axeptio's control. These issues must be resolved in your tag configuration or deployment strategy — Axeptio cannot fix them alone.
💡 If you have followed Axeptio integration recommendations and you do not observe late consent — no action is required, your configuration is compliant.
If you use GTG and your configuration has a late consent issue, three resolution options are possible, in order of decreasing recommendation.
(Recommended) Option A — Adopt advanced consent mode
Switch to advanced consent mode: Google tags trigger immediately by sending cookieless pings (limited measurement). Once consent is obtained, full measurement resumes; if refused, only cookieless pings are retained.
⚠️ Behavioral modeling eligibility: your GA4 property must reach a minimum threshold of 1,000 consenting visitors per day (on at least 7 of the last 28 days). Below this threshold, modeling will not activate. → Learn more
Enable Data Transmission Controls in your Google tag settings according to your needs — Google documentation
Global Consent Defaults are automatically managed by Axeptio.
Why this option is recommended:
This is the mechanism explicitly recommended by Google for GTG deployments.
Basic mode is more fragile in this context: it relies on strict control of loading order. If this is not the case, GTG can highlight this existing issue.
Points to consider:
Verify that your Google tags support advanced mode.
Behavioral modeling requires a minimum of 1,000 consenting visitors/day.
Data Transmission Controls must be configured according to your needs.
📖 For detailed advanced Consent Mode configuration with Axeptio, consult our dedicated support article: Configure Google Consent Mode v2
Option B — Migrate all tags into a GTM container then deploy GTM via GTG
This option applies to you if you don't use GTM — manual script in Axeptio or CMS plugin (WordPress, Drupal, Shopify, etc.).
Centralize all marketing/analytics tags in a single Google Tag Manager container.
Activate GTG at the GTM container level, not at the individual tag level.
The GTM container is thus served from your domain, and it is GTM that orchestrates the loading order of the tags it contains.
Points to consider:
Requires implementing GTM. Axeptio must be configured with the "Consent Initialization - All Pages" trigger.
Axeptio must be configured with the "Consent Initialization - All Pages" trigger to guarantee loading order.
Option C — Manual GTG configuration
What it involves:
Set up GTG "manually": host the redirect to Google's CDN yourself on your own server / CDN and explicitly control the order of script imports in the HTML.
Ensure that the Axeptio tag is loaded and executed before the GTG tag.
Points to consider:
Requires technical expertise on the server / CDN side.
Loading order is entirely your responsibility — a configuration error can reintroduce the issue.
See Google documentation for manual configuration.
Quick decision matrix
Situation | Recommended option |
You want the most robust and easy-to-maintain solution | Option A — Advanced mode |
You don't use GTM (manual script or Axeptio CMS plugin) and want to regain control of loading order | Option B — Migrate to GTM via GTG |
You have a technical team and want full control without changing consent mode | Option C — Manual GTG |
You don't know where to start | Option A — Advanced mode (recommended by Google and Axeptio) |
Appendix — References and documentation
Axeptio documentation
Google documentation
The Google pages above are the authoritative sources. In case of discrepancy, Google pages take precedence.
