Google Consent Mode Integration

AdSimple Consent Manager – CMP Partner Validation

Overview

This document describes the technical implementation and validation of Google Consent Mode v2 using the
AdSimple Consent Manager (CMP). It explains how consent signals are correctly communicated to Google
before and after user interaction and covers both configuration models defined by Google:
Basic Mode and Advanced Mode.

The implementation has been tested with both gtag.js and Google Tag Manager (GTM).
The Advanced Mode is supported and optional.

Implementation Details

CMP Name AdSimple Consent Manager
Consent Mode Version Google Consent Mode v2
Integration Types gtag.js & Google Tag Manager
Test Domains ipl-haarentfernung.at (gtag.js),
familylife.at (GTM)
Tested In Chrome Incognito Mode + DevTools Console
Mobile SDK Not available (web-only)

1. How Consent Mode Works

At initial page load, all consent types default to <code>denied</code> until the user provides consent.

1.1 Basic Mode

In Basic Mode, Google tags are blocked until the user makes a consent choice.
Before consent, no data collection or consent signals are sent to Google, and Google tags do not run.

  1. The CMP initializes Consent Mode with all consent types set to denied.
  2. After the user selects “Accept all” or confirms a selection, the CMP triggers gtag('consent','update', ...) (or GTM Consent APIs).
  3. From that point on, Google tags are allowed to run.

1.2 Advanced Mode

In Advanced Mode, Google tags load before the user choice with default values (typically denied).
During this phase, tags may send cookieless pings (signals without cookies or personal identifiers).
After the user grants consent, full data collection is enabled via a consent update.

In Advanced Mode, Google tags load before the user choice with default values (typically denied).
During this phase, tags may send cookieless pings (signals without cookies or personal identifiers).
After the user grants consent, full data collection is enabled via a consent update.
The Advanced Mode can be enabled as an optional configuration within the AdSimple CMP interface under the Basic Mode settings.

Advanced Mode is supported and optional. Use cases include improved measurement continuity through cookieless pings prior to the user decision. UI Label: In the AdSimple CMP interface, this option appears as “Advanced Mode enabled”.

Note: In Advanced Mode, cookieless pings are sent only if the scripts are implemented in the correct order.

The required order is:

1) Consent Mode script
2) gtag / GTM script
3) CMP banner script.

Incorrect sequencing may prevent cookieless pings from being sent.

2. Technical Implementation

2.1 gtag.js Integration (ipl-haarentfernung.at)

Setup

  • GA4 implemented via gtag.js.
  • The CMP injects the Consent Mode script.

Initialization (before user interaction)

Note: The wait_for_update parameter is available only in the AdSimple custom GTM template and is not managed directly by the CMP.

Consent update after user decision

gtag('consent', 'update', {
  'ad_storage': 'granted',
  'analytics_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted'
});

2.2 Google Tag Manager Integration (familylife.at)

Setup

  • GA4 implemented via Google Tag Manager.
  • Consent Mode initialized via the CMP (e.g., HFCM snippet or native integration).

Note 1: The ads_data_redaction setting is applied only when using the AdSimple custom GTM template; it is not configured by the CMP.

Note 2: When using the AdSimple custom GTM template, the CMP applies Google’s official Consent APIs — setDefaultConsentState and updateConsentState — to manage consent signals.

Default state (before user interaction)

// Recommended: use GTM Consent APIs
consentAPI.setDefaultConsentState({
  ad_storage: 'denied',
  analytics_storage: 'denied',
  ad_user_data: 'denied',
  ad_personalization: 'denied'
});

Update on user grant

consentAPI.updateConsentState({
  ad_storage: 'granted',
  analytics_storage: 'granted',
  ad_user_data: 'granted',
  ad_personalization: 'granted'
});

3. Supported Consent Types

Availability: ads_data_redaction is available only via the AdSimple custom GTM template and is not set by the CMP.

4. Regional Defaults

Google Consent Mode supports specifying region-based default values via the region parameter.
The current AdSimple CMP implementation does not support regional defaults;
the same consent logic is applied across all regions.

5. Behavior When Consent Is Denied

In Advanced Mode with denied defaults:

  • No new cookies are set and existing cookies are not read for the affected consent types.
  • Google tags may send cookieless pings to maintain basic measurement signals,
    provided that scripts are implemented in the correct order (Consent Mode → gtag/GTM → CMP).
  • When ads_data_redaction is enabled (GTM template only) and ad_storage is denied,
    advertising click parameters (e.g., gclid) are redacted.
  • Google may apply modeling to estimate conversions where direct data is unavailable.

6. Timing and Sequencing

In Basic Mode, Google tags do not fire before consent is granted.
In Advanced Mode, only cookieless pings are sent until user consent is received.

The following sequence ensures correct consent signaling and avoids race conditions:

  • Set default consent values before Google tags load.
  • Trigger the consent update immediately after the user action (accept/confirm).
  • Optionally use wait_for_update (available only in the AdSimple custom GTM template) to provide a short grace period for asynchronous banner initialization
    before tags proceed.

Implementation note: The AdSimple custom GTM template uses Google’s official Consent API methods (setDefaultConsentState / updateConsentState) to ensure proper timing and signaling.

7. Validation

7.1 Before user interaction

Check via DevTools Console:

window.google_tag_data.ics.entries

Expected structure:

{
  ad_storage:          { default: "denied", update: false },
  analytics_storage:   { default: "denied", update: false },
  ad_user_data:        { default: "denied", update: false },
  ad_personalization:  { default: "denied", update: false }
}

7.2 After consent grant

Expected structure (updates reflect the user decision):

{
  ad_storage:          { update: true },
  analytics_storage:   { update: true },
  ad_user_data:        { update: true },
  ad_personalization:  { update: true }
}

In Advanced Mode, cookieless pings can be verified in the browser’s Network tab under requests containing gcs parameters.

8. Debugging & Tools

  • Chrome DevTools Console: Inspect window.google_tag_data.ics.entries.
  • Tag Assistant / GA4 DebugView: Validate tag behavior and events.
  • Network Inspection: Review request parameters (e.g., consent-related indicators) to verify signaling.
  • AdSimple CMP Debug Mode: Add ?acm_debug=true to any page URL to enable internal logging of consent-related events in the browser console.

9. Banner Configuration and UI Template

The AdSimple Consent Manager provides a configurable banner template that includes:

  • A clear description of data usage purposes.
  • A direct link to Google’s privacy page: https://business.safety.google/privacy/
  • Visible options such as “Accept all”, “Decline”, and “Settings”.

10. Summary

    • AdSimple CMP supports Google Consent Mode v2 with both Basic and Advanced configurations.
    • Default values are initialized as denied and updated upon user interaction.
    • In Advanced Mode, tags can load prior to user choice and send cookieless pings until consent is granted.
    • The Advanced Mode can be enabled as an optional configuration within the AdSimple CMP interface under the Basic Mode settings.
    • The related UI option in the CMP is labeled “Advanced Mode enabled.”
    • Validation can be performed via the browser console, Tag Assistant, and network inspection.
    • For testing, add ?acm_debug=true to any URL to activate the CMP debug console.

    Validation video: https://youtu.be/KHbmDirBDgU

    11. References