> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runconverge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Consent

> Configure how destinations handle consent

export const IconText = ({name, text, iconSource = "mintlify", iconLocation = "before", iconType = "solid"}) => {
  const sourceUrl = iconSource === 'local' ? `url('/images/icons/${name}.svg')` : `url('https://mintlify.b-cdn.net/v6.5.1/${iconType}/${name}.svg')`;
  return <>
            <div className="inline-block pl-2">
                {iconLocation === 'before' && <div className="h-3.5 w-3.5 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 inline-block align-middle mr-2">
                        <svg className="w-4 h-4 bg-gray-800 dark:bg-gray-100 " style={{
    maskImage: sourceUrl,
    maskRepeat: "no-repeat",
    maskPosition: "center center"
  }} />
                    </div>}
                <span className="inline-block align-middle font-semibold fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 pl-1 pr-2">{text}</span>
                {iconLocation === 'after' && <div className="h-3.5 w-3.5 fill-gray-800 dark:fill-gray-100 text-gray-800 dark:text-gray-100 inline-block align-middle mr-2">
                        <svg className="w-4 h-4 bg-gray-800 dark:bg-gray-100 pr-3" style={{
    maskImage: sourceUrl,
    maskRepeat: "no-repeat",
    maskPosition: "center center"
  }} />
                    </div>}
            </div>
        </>;
};

## Overview

You can configure how the Converge destinations should behave based on the visitor's consent preferences.

<Note>
  Check out the [Consent implementation](/sources/consent) to learn how to send consent preferences to Converge.
</Note>

<Warning>All Google and Microsoft destinations in Converge comply with Consent Mode and forward the current consent mode status, but it does not implement it. Please read [this](/guides/implementing-consent-mode) guide on how to implement Google and Microsoft Consent Mode.</Warning>

## Converge destinations

There are two ways to customize how Converge destinations handle consent: the **consent category** and the **consent mode**.

### Consent category

You can classify Converge destinations into two consent categories: `analytics` and `marketing`. Consent is tracked separately for each category.

The consent category can be set under the **Consent** subtab of the destination **Configuration**

<Frame>
  <img src="https://mintcdn.com/converge/Q83LRDHHVnQ06p5P/images/sources/consent-category-2026.png?fit=max&auto=format&n=Q83LRDHHVnQ06p5P&q=85&s=0f3d11a2f0b7b75dca15f4e173ebe776" alt="Consent categories" width="1280" height="558" data-path="images/sources/consent-category-2026.png" />
</Frame>

### Consent mode

The consent mode controls when Converge forwards events to a destination based on the user's consent preference for the selected category.

* **Always forward (client & server)** (default): Forward all events, ignoring user consent. Includes both client and server-side events.
* **Always forward (server only)**: Forward all server-side events, ignoring user consent. Client events respect the user's consent preference.
* **Implied consent**: Forward events unless the user has explicitly denied consent. If no consent preference was recorded, events are still sent.
* **Require consent**: Forward events only if the user has explicitly consented. If no preference was recorded, events are not sent.

<Frame>
  <img src="https://mintcdn.com/converge/Q83LRDHHVnQ06p5P/images/sources/consent-mode-2026.png?fit=max&auto=format&n=Q83LRDHHVnQ06p5P&q=85&s=dcaebd224dda3d4f92a1fca77657afa1" alt="Consent modes" width="1279" height="772" data-path="images/sources/consent-mode-2026.png" />
</Frame>

#### Choosing a mode

A few rules of thumb:

* **Always forward (client & server)** suits destinations that aren't subject to consent (internal analytics, server-to-server data warehouse pipelines, attribution platforms processing first-party data on your behalf).
* **Always forward (server only)** is useful when you want server-side conversions to keep flowing for measurement purposes while still respecting consent on the browser-side pixel.
* **Implied consent** fits an opt-out model: in regions or for visitors where tracking is allowed by default, only stopping when the user explicitly opts out. Use this when your cookie banner is opt-out (e.g. most US states under current state privacy laws) or only shown to specific regions.
* **Require consent** fits an opt-in model: nothing is forwarded until the user explicitly grants consent. Use this for GDPR-style regimes (EU/EEA, UK) where consent must be collected before any marketing tracking takes place.

## How consent is recorded

Converge stores consent in two places:

* **On the profile** (`profile_properties.$consent`), so server-side events for a known visitor inherit the most recent preference.
* **On each event**, snapshotting the consent state at the moment the event was tracked.
  Server-side forwarding always uses the profile-level consent. Client-side forwarding uses the event-level consent. This means that for a net-new visitor whose first hit is client-side (e.g. a `$page_load`), Converge needs to know their consent **before that event is tracked** — there's no earlier profile state to fall back on.

For that reason, if you've configured **Implied consent** or **Require consent**, make sure your site is sending a consent signal to Converge before the first event fires. You have two options:

1. Use one of the [automatically integrated CMPs](/sources/consent#automatic-cmp-integrations) (OneTrust, Cookiebot, CookieFirst, CookieYes, Cookie Information, Usercentrics, Avada).
2. Push a default consent state into Converge yourself, before the first `track` call. See the [default-consent snippet](/sources/consent#sending-consent).
   Without one of these, Converge defaults to `denied` for any visitor it hasn't seen before, and Implied/Require modes will drop client-side events for net-new visitors until consent is sent.

## Common pitfalls

<AccordionGroup>
  <Accordion title="Implied consent dropping client-side events for net-new visitors">
    Implied consent only forwards when consent is granted or unset — but Converge treats "never received any consent signal" as denied for client-side events. If you switch a destination to Implied consent and notice client-side events (`page_view`, `add_to_cart`, etc.) dropping for new visitors, you almost certainly need to push a default consent state from your site before the first event fires. See [Sending consent](/sources/consent#sending-consent).
    Server-side events and events from returning visitors with a stored profile-level consent will still flow.
  </Accordion>

  <Accordion title="Shopify checkout events dropping under Require consent">
    Cookie banners typically live on the main marketing site and don't always carry consent into Shopify's checkout context. If a destination is set to **Require consent** and you depend on checkout events (`begin_checkout`, `purchase`), those events may be dropped because the checkout-surface visitor has no consent signal attached. Either implement consent on the checkout surface as well, or use a less strict mode for destinations that need checkout events.
  </Accordion>

  <Accordion title="GA4 / Google Ads dropping client-side events after switching modes">
    Converge's consent mode and Google Consent Mode v2 are two separate gates. Even if Converge is set to **Always forward**, gtag.js may still throttle hits if Google's own consent state is unset or denied. To address this, make sure a `gtag('consent', 'default', ...)` snippet runs on the page before gtag.js loads. See the [Implementing Consent Mode guide](/guides/implementing-consent-mode) for the full pattern.
  </Accordion>
</AccordionGroup>
