# Google Consent Mode

### What is Google Consent Mode (GCM)?

Google Consent Mode (GCM) is a framework that allows a site to adjust how Google tags behave based on whether a user grants consent for marketing, analytics, and personalization cookies. As a user designates consent preferences for each cookie, GCM sends these consent statuses directly to Google. This enables Google services like Google Analytics and Google Ads to respect privacy preferences and stay compliant with privacy regulations (GDPR, ePrivacy, etc.) while still receiving limited, non-identifying data if consent is not granted by the user.

When consent is not granted, GCM uses modeled conversions and aggregated measurement to help fill in gaps in reporting, without using cookies or personal identifiers. This helps marketers and site owners maintain more accurate performance measurement and conversion attribution.

### Freshpaint Consent Manager and Google Consent Mode

When a user engages with Freshpaint Consent Manager and makes consent selections for each cookie category, the selections are saved to Freshpaint Consent Manager. When `Enable Google Consent Mode` is enabled in Freshpaint, these selections will pass through to GCM.&#x20;

Consent status values are `denied` or `granted`. When `Enable Google Consent Mode` is enabled, non-essential conset types will default to `denied` in GCM but be replaced with Freshpaint Consent Manager consent values when the Freshpaint SDK loads. User changes to consent in Freshpaint Consent Manager will be reflected in GCM. `functionality_storage` and `security_storage` are treated as essential and will always have a status of `granted`.

Freshpaint Consent Manager will map the status value of `denied` or `granted` to each of these consent types in GCM:

| GCM Consent Type          | Category        |
| ------------------------- | --------------- |
| `ad_storage`              | Marketling      |
| `ad_user_data`            | Marketing       |
| `ad_personalization`      | Marketing       |
| `analytics_storage`       | Analytics       |
| `personalization_storage` | Personalization |
| `functionality_storage`   | Essential       |
| `security_storage`        | Essential       |

For the extended definitions of these GCM consent types, and to understand how `granted` and `denied` status affects Google tag behavior, see the Google documentation [here](https://developers.google.com/tag-platform/security/concepts/consent-mode#consent-behavior).&#x20;

{% hint style="info" %}
Values that are changed directly in GCM will not be reflected in FPCM. Consent values in FPCM change only on user interaction with the banner.
{% endhint %}

### Setup

1. To enable passthrough to GCM, toggle on the  `Enable Google Consent Mode` option in Freshpaint.

<figure><img src="https://1666823438-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MA7aDqsXMFbUsWVqonF%2Fuploads%2FIXzLb8ixySkrAO9F8TuI%2FScreenshot%202026-01-09%20at%209.49.40%E2%80%AFAM.png?alt=media&#x26;token=1781e66f-de5e-4f93-84de-1f7102021a33" alt=""><figcaption></figcaption></figure>

2. In Google Tag Manger, [download and add](https://documentation.freshpaint.io/integrations/google-tag-manager-integration/quick-start-guide#ensure-gtm-installation) the `Freshpaint` template from Gallery. Create a new Tag using this template and select the `Freshpaint Google Consent Mode Initialization` tag type.

<figure><img src="https://1666823438-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MA7aDqsXMFbUsWVqonF%2Fuploads%2FSuKyEtKP1sRw7gq9g9qL%2FScreenshot%202026-01-09%20at%209.35.38%E2%80%AFAM.png?alt=media&#x26;token=19d0b2d0-2ecf-4bbc-b443-7fad6632a082" alt=""><figcaption></figcaption></figure>

3. Create a custom event trigger that fires on events named `fp_consent_update`. This trigger will fire when the Freshpaint Consent Manager initializes and on all subsequent consent updates. Use this trigger in addition to "Page View" triggers when a tag requires additional consent checks.

<figure><img src="https://1666823438-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MA7aDqsXMFbUsWVqonF%2Fuploads%2FMIZSJDswOYAVD3XBJPH0%2FScreenshot%202026-02-27%20at%2011.44.01%E2%80%AFAM.png?alt=media&#x26;token=1b8b9eb4-6d07-4f33-b920-967eb7c17f25" alt=""><figcaption><p>Configuration of Custom Event trigger for <code>fp_consent_update</code></p></figcaption></figure>

<figure><img src="https://1666823438-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MA7aDqsXMFbUsWVqonF%2Fuploads%2FYnd8vgcBSJVlEZBIa8gt%2FScreenshot%202026-02-27%20at%2011.46.05%E2%80%AFAM.png?alt=media&#x26;token=e46b306f-3d8d-4524-9d0b-18260693f3d7" alt=""><figcaption><p>Example of using the custom Freshpaint Consent Update trigger with an existing Page View trigger.</p></figcaption></figure>

### Impact of consent on tag behavior

The Freshpaint Google Consent Mode Initialization tag (shown above) will always set `ads_data_redaction` to `true`. To understand more about how that will interact with Google Tags, please see [Google's documentation](https://developers.google.com/tag-platform/security/concepts/consent-mode#consent-behavior) ("`ad_storage` and `ads_data_redaction`" section).
