What GTAG traffic looks like
The Google tag is a loader and router: one script serving GA4, Ads, and Floodlight, with hits leaving toward each product's own endpoints.
- Endpoint pattern
googletagmanager.com/gtag/js?id=<TAG_ID>. The ID prefix tells you which Google product configured it:G-a GA4 measurement ID,AW-Google Ads,DC-Floodlight,GT-a combined Google tag- Transport
- Script load only. Actual hits leave toward each product's endpoints: GA4 to
/g/collectongoogle-analytics.com(or a first-party endpoint when sGTM is in play), Ads conversions togoogleadservices.com, and are attributed to those platforms, not to the Google tag - Key parameters
id: the tag ID in the loader URL; one loader can serve several destinations, since additionalgtag('config', ...)calls attach more IDs to the same script, so the loader ID is not necessarily the complete list of destinations firing- Data layer object
- the
gtag()function is a thin wrapper that pushes command objects intowindow.dataLayer: configs, events, and consent commands all ride that channel
Debugging GTAG with Event Watcher
- The loader request appears in the stream named and categorized as Google Tag, with query parameters parsed so the tag ID is readable directly.
- The Script Tree view shows what
gtag/jsloaded downstream and which hits each script sent. - Because
gtag()routes everything throughwindow.dataLayer, its command pushes are also visible in the intercepted dataLayer stream, including pushes from before DevTools opened, captured as historical.
GTAG and consent
Consent-exempt infrastructureThe Google tag is tagging infrastructure with no consent category of its own, but it is the transport for Google Consent Mode: gtag('consent', ...) default and update calls determine the gcs/gcd signals on every downstream Google hit.
Downstream hits are what gets consent-checked: Event Watcher reads Consent Mode state alongside the CMP's and marks each granted, denied, or pre-consent. A late consent default means the first hits carry no consent signal. See debugging Consent Mode v2.
Common debugging scenarios
- gtag and GTM on the same page. Both load from
googletagmanager.com. Distinguishgtag/jsfromgtm.jsin the stream; double-tagged GA4 setups produce duplicate events, and the Grouped view pivoted by Event Name makes the doubles obvious. - Which ID sent this hit? Multiple
configdestinations share one loader. Check thetidparameter on each downstream request rather than the loader URL. - Consent default never applied. Downstream Google hits missing
gcsentirely mean nogtag('consent', 'default')ran before they fired. - Events disappear silently. Confirm the
gtag('event', ...)push shows up in the data layer stream first. If it does but no network hit follows, the destination config or a Consent Mode denial is the suspect, not the call site. - Hardcoded gtag alongside a migration to GTM. Use the Script Tree to separate hits descending from
gtag/jsversusgtm.jsbefore removing the legacy snippet.