Skip to content

Google

GA4 Measurement Protocol, the Google Ads tag, Consent Mode v2 and DebugView — including what is confirmed and what is not.

updated

Outline — facts still to be confirmed

This article is a structured outline. Its headings and scope are settled; the specific values, screens and steps are marked TODO(owner: verify) until they have been checked against the plugin itself. Blueprint §7 is explicit that no article may state plugin behaviour that has not been verified.

The working setup guide is Add Google, which covers the GA4/Ads split, why the GA4 tag is browser-mode only, Consent Mode v2, and the two limitations that are not yet resolved. This page is the deeper reference and is still an outline.

Confirmed today

  • GA4 and Google Ads are separate products sharing one tag, and are configured separately.
  • The GA4 configuration is emitted only in browser mode, to avoid a page_view double count against the Measurement Protocol.
  • The Ads configuration is emitted whenever any account carries an Ads conversion ID.
  • session_id is derived per account from the GA4 cookie and sent only when present — never as an empty string. Google’s debug endpoint accepts an empty session ID without complaint and would silently attach the event to a session that never existed.
  • Consent Mode v2 is a three-way setting: off, basic (default), advanced.
  • Server-side delivery to GA4 is proven against real credentials on a live site: HTTP 204 from the Measurement Protocol, and the events — including purchase with its revenue — arriving in a real GA4 property.
  • Consent Mode v2 has been verified live.

Outline still to fill

Measurement Protocol reference

TODO(owner: verify) — the exact parameter list sent per event, the 25-parameter budget and which keys are mapped, and how client IDs are derived for webhook-time sends.

Enhanced Conversions

Not sent yet. The plugin reports this to you as a missing requirement whenever an Ads conversion ID is configured. TODO(owner: verify) — rewrite this section when it ships.

Verified live against a real GA4 property. TODO(owner: verify) — write up the observed behaviour mode by mode: what the property records under granted and under denied, and what the gcs parameter reads in each case.

DebugView guide

TODO(owner: verify) — how to enable debug mode, what a server-side event looks like in DebugView versus a browser one, and why an event can be correct and still not appear there.

Why “check settings” is honest

Google’s verification endpoint cannot authenticate credentials without OAuth, so the plugin reports what it was able to confirm and names what it could not, instead of showing a green check that would pass either way.

This is independent of delivery. Events are proven to reach a real GA4 property with real credentials — an unverifiable credential check is not the same thing as an unverified integration, and conflating the two is exactly the mistake this wording exists to avoid.

TODO(owner: verify) — the exact on-screen wording in the shipped build.

Was this page helpful?