Veröffentlicht: 20. März 2025

GTM Template: Consent Mode v2 für Webflow mit Finsweet — DSGVO-konform

Kostenloses GTM-Template für Google Consent Mode v2 mit Finsweet Cookie Consent in Webflow. DSGVO-konform tracken ohne Datenverlust.

Daniils Visnakovs
· Lesedauer: 6 Min.
GTM Consent Mode v2 Template für Webflow

Seit März 2024 ist Google Consent Mode v2 Pflicht für Werbetreibende in der EU. Wer Webflow nutzt, greift in der Regel auf Finsweet’s Cookie Consent Solution zurück. Dieses GTM-Template verbindet beides — korrekt konfiguriert und sofort einsatzbereit.

Was das Template enthält

  • 5 Consent-State Tags — Default State (denied) + 4 Kategorien (essential, analytics, marketing, personalization)
  • 5 Custom Event Trigger — feuern, wenn der Nutzer eine Kategorie akzeptiert
  • Consent Mode v2 Integration — Advanced Mode mit ad_storage, analytics_storage, ad_user_data, ad_personalization

Ohne Consent Mode verlierst du nach einem „Ablehnen”-Klick 100 % der Conversion-Daten dieses Nutzers. Mit Consent Mode v2 im Advanced Mode sendet Google cookieless Pings — keine personenbezogenen Daten, aber genug Information für Conversion-Modellierung.

Das Ergebnis: 40–70 % mehr Conversion-Daten in deinem Google Ads Konto, ohne die DSGVO zu verletzen.

So funktioniert das Setup

Finsweet’s Cookie Consent Solution ist der Standard für Webflow. Du brauchst:

  • Das Finsweet-Attribut fs-cc auf deiner Webflow-Seite
  • Die korrekten Consent-Kategorien (essential, analytics, marketing, personalization)

2. GTM-Template importieren

  1. Container importieren → JSON-Datei hochladen
  2. Zusammenführen → Umbenennen bei Konflikten
  3. Sofort funktionsfähig — keine weiteren Anpassungen nötig

3. Was passiert technisch?

Beim Laden der Seite wird der Default State gesetzt — alle Consent-Kategorien auf denied. Sobald der Nutzer im Finsweet-Banner eine Kategorie akzeptiert, feuert der entsprechende Custom Event (analytics-activated, marketing-activated, etc.) und der Consent-State wird auf granted aktualisiert.

Google Tags (GA4, Google Ads) reagieren automatisch auf den geänderten Consent-State.

Häufige Fehler vermeiden

  • Default State fehlt: Ohne initialen denied-State ist Consent Mode wirkungslos
  • Essential-Kategorie vergessen: Consent Linker und Conversion Linker brauchen functionality_storage
  • Basic statt Advanced Mode: Im Basic Mode gehen alle Daten vor Consent verloren — Advanced Mode ermöglicht Modellierung

Template herunterladen

Kopiere den JSON-Code, speichere ihn als .json-Datei und importiere sie in deinem Google Tag Manager Container unter Admin → Container importieren.

Kein E-Mail, kein Formular — direkt loslegen.

GTM Container JSON anzeigen
{
    "exportFormatVersion": 2,
    "exportTime": "2024-05-01 11:42:45",
    "containerVersion": {
        "path": "accounts/6075459192/containers/103965921/versions/0",
        "accountId": "0000000000",
        "containerId": "000000000",
        "containerVersionId": "0",
        "container": {
            "path": "accounts/6075459192/containers/103965921",
            "accountId": "0000000000",
            "containerId": "000000000",
            "name": "Test Container",
            "publicId": "GTM-XXXXXX",
            "usageContext": [
                "WEB"
            ],
            "fingerprint": "0000000000000",
            "tagManagerUrl": "https://tagmanager.google.com/#/container/accounts/0000000000/containers/000000000/workspaces?apiLink=container",
            "features": {
                "supportUserPermissions": true,
                "supportEnvironments": true,
                "supportWorkspaces": true,
                "supportGtagConfigs": false,
                "supportBuiltInVariables": true,
                "supportClients": false,
                "supportFolders": true,
                "supportTags": true,
                "supportTemplates": true,
                "supportTriggers": true,
                "supportVariables": true,
                "supportVersions": true,
                "supportZones": true,
                "supportTransformations": false
            },
            "tagIds": [
                "GTM-XXXXXX"
            ]
        },
        "tag": [
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "tagId": "10",
                "name": "Finsweet - personalization-activated",
                "type": "cvt_000000000_9",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "ad_storage",
                        "value": "notset"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "ads_data_redaction",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendDataLayer",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_user_data",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "security_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "command",
                        "value": "update"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "functionality_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "personalization_storage",
                        "value": "granted"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "url_passthrough",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "analytics_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_personalization",
                        "value": "notset"
                    }
                ],
                "fingerprint": "0000000000000",
                "firingTriggerId": [
                    "8"
                ],
                "parentFolderId": "6",
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "tagId": "11",
                "name": "Finsweet - marketing-activated",
                "type": "cvt_000000000_9",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "ad_storage",
                        "value": "granted"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "ads_data_redaction",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendDataLayer",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_user_data",
                        "value": "granted"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "security_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "command",
                        "value": "update"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "functionality_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "personalization_storage",
                        "value": "notset"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "url_passthrough",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "analytics_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_personalization",
                        "value": "granted"
                    }
                ],
                "fingerprint": "0000000000000",
                "firingTriggerId": [
                    "5"
                ],
                "parentFolderId": "6",
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "tagId": "12",
                "name": "Finsweet - Default State (denied)",
                "type": "cvt_000000000_9",
                "parameter": [
                    {
                        "type": "BOOLEAN",
                        "key": "eea",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "wait_for_update",
                        "value": "500"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendDataLayer",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "regionsEEA",
                        "value": "eea"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "command",
                        "value": "default"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "functionality_storage",
                        "value": "denied"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "url_passthrough",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_storage",
                        "value": "granted"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "ads_data_redaction",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_user_data",
                        "value": "denied"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "security_storage",
                        "value": "denied"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "personalization_storage",
                        "value": "denied"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "analytics_storage",
                        "value": "granted"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_personalization",
                        "value": "denied"
                    }
                ],
                "fingerprint": "0000000000000",
                "firingTriggerId": [
                    "2147479572"
                ],
                "parentFolderId": "6",
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "tagId": "13",
                "name": "Finsweet - analytics-activated",
                "type": "cvt_000000000_9",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "ad_storage",
                        "value": "granted"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "ads_data_redaction",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendDataLayer",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_user_data",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "security_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "command",
                        "value": "update"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "functionality_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "personalization_storage",
                        "value": "notset"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "url_passthrough",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "analytics_storage",
                        "value": "granted"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_personalization",
                        "value": "notset"
                    }
                ],
                "fingerprint": "0000000000000",
                "firingTriggerId": [
                    "4"
                ],
                "parentFolderId": "6",
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "tagId": "14",
                "name": "Finsweet - essential-activated",
                "type": "cvt_000000000_9",
                "parameter": [
                    {
                        "type": "TEMPLATE",
                        "key": "ad_storage",
                        "value": "notset"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "ads_data_redaction",
                        "value": "true"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "sendDataLayer",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_user_data",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "security_storage",
                        "value": "granted"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "command",
                        "value": "update"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "functionality_storage",
                        "value": "granted"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "personalization_storage",
                        "value": "notset"
                    },
                    {
                        "type": "BOOLEAN",
                        "key": "url_passthrough",
                        "value": "true"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "analytics_storage",
                        "value": "notset"
                    },
                    {
                        "type": "TEMPLATE",
                        "key": "ad_personalization",
                        "value": "notset"
                    }
                ],
                "fingerprint": "0000000000000",
                "firingTriggerId": [
                    "7"
                ],
                "parentFolderId": "6",
                "tagFiringOption": "ONCE_PER_EVENT",
                "monitoringMetadata": {
                    "type": "MAP"
                },
                "consentSettings": {
                    "consentStatus": "NOT_SET"
                }
            }
        ],
        "trigger": [
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "triggerId": "3",
                "name": "uncategorized-activated",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "uncategorized-activated"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "uncategorized-activated"
                            }
                        ]
                    }
                ],
                "fingerprint": "0000000000000"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "triggerId": "4",
                "name": "analytics-activated",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "analytics-activated"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "analytics-activated"
                            }
                        ]
                    }
                ],
                "fingerprint": "0000000000000"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "triggerId": "5",
                "name": "marketing-activated",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "marketing-activated"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "marketing-activated"
                            }
                        ]
                    }
                ],
                "fingerprint": "0000000000000"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "triggerId": "7",
                "name": "essential-activated",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "essential-activated"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "essential-activated"
                            }
                        ]
                    }
                ],
                "fingerprint": "0000000000000"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "triggerId": "8",
                "name": "personalization-activated",
                "type": "CUSTOM_EVENT",
                "customEventFilter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{_event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "personalization-activated"
                            }
                        ]
                    }
                ],
                "filter": [
                    {
                        "type": "EQUALS",
                        "parameter": [
                            {
                                "type": "TEMPLATE",
                                "key": "arg0",
                                "value": "{{Event}}"
                            },
                            {
                                "type": "TEMPLATE",
                                "key": "arg1",
                                "value": "personalization-activated"
                            }
                        ]
                    }
                ],
                "fingerprint": "0000000000000"
            }
        ],
        "folder": [
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "folderId": "6",
                "name": "Consent",
                "fingerprint": "0000000000000"
            }
        ],
        "builtInVariable": [
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "PAGE_URL",
                "name": "Page URL"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "PAGE_HOSTNAME",
                "name": "Page Hostname"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "PAGE_PATH",
                "name": "Page Path"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "REFERRER",
                "name": "Referrer"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "EVENT",
                "name": "Event"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "CLICK_URL",
                "name": "Click URL"
            },
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "type": "CLICK_TEXT",
                "name": "Click Text"
            }
        ],
        "fingerprint": "0000000000000",
        "tagManagerUrl": "https://tagmanager.google.com/#/versions/accounts/0000000000/containers/000000000/versions/0?apiLink=version",
        "customTemplate": [
            {
                "accountId": "0000000000",
                "containerId": "000000000",
                "templateId": "9",
                "name": "Consent Mode (Google tags)",
                "fingerprint": "0000000000000",
                "templateData": "___TERMS_OF_SERVICE___\n\nBy creating or modifying this file you agree to Google Tag Manager's Community\nTemplate Gallery Developer Terms of Service available at\nhttps://developers.google.com/tag-manager/gallery-tos (or such other URL as\nGoogle may provide), as modified from time to time.\n\n\n___INFO___\n\n{\n  \"type\": \"TAG\",\n  \"id\": \"cvt_temp_public_id\",\n  \"__wm\": \"VGVtcGFsdGUtQXV0aG9yX0NvbnNlbnRNb2RlLVNpbW8tQWhhdmE\\u003d\",\n  \"version\": 1,\n  \"securityGroups\": [],\n  \"displayName\": \"Consent Mode (Google tags)\",\n  \"categories\": [\n    \"UTILITY\",\n    \"ANALYTICS\",\n    \"ADVERTISING\"\n  ],\n  \"brand\": {\n    \"id\": \"github.com_gtm-templates-simo-ahava\",\n    \"displayName\": \"gtm-templates-simo-ahava\",\n    \"thumbnail\": \"data:image/png;base64,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\\u003d\\u003d\"\n  },\n  \"description\": \"Adjust tag behavior based on consent. This template utilizes Google\\u0027s Consent API and can be used to adjust how Google\\u0027s advertising and analytics tools use cookies and process ad identifiers.\",\n  \"containerContexts\": [\n    \"WEB\"\n  ]\n}\n\n\n___TEMPLATE_PARAMETERS___\n\n[\n  {\n    \"type\": \"SELECT\",\n    \"name\": \"command\",\n    \"displayName\": \"Consent Command\",\n    \"selectItems\": [\n      {\n        \"value\": \"default\",\n        \"displayValue\": \"Default\"\n      },\n      {\n        \"value\": \"update\",\n        \"displayValue\": \"Update\"\n      }\n    ],\n    \"simpleValueType\": true,\n    \"help\": \"\\u003cstrong\\u003eDefault\\u003c/strong\\u003e means that you establish consent settings the site falls back on until such a time that the Update command is executed. You can have multiple Default tags on the page, each corresponding to a different region, for example.\\n\\u003cstrong\\u003eUpdate\\u003c/strong\\u003e is what you\\u0027d use once you\\u0027ve retrieved a consent status from the user.\",\n    \"defaultValue\": \"default\",\n    \"alwaysInSummary\": true\n  },\n  {\n    \"type\": \"TEXT\",\n    \"name\": \"wait_for_update\",\n    \"displayName\": \"Wait for Update\",\n    \"simpleValueType\": true,\n    \"valueUnit\": \"milliseconds\",\n    \"defaultValue\": 0,\n    \"help\": \"How long to wait (in milliseconds) for an \\u003cstrong\\u003eUpdate\\u003c/strong\\u003e command before firing Google tags that have been queued up.\",\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"command\",\n        \"paramValue\": \"default\",\n        \"type\": \"EQUALS\"\n      }\n    ],\n    \"valueValidators\": [\n      {\n        \"type\": \"NON_NEGATIVE_NUMBER\"\n      }\n    ]\n  },\n  {\n    \"type\": \"CHECKBOX\",\n    \"name\": \"eea\",\n    \"checkboxText\": \"Include EEA regions\",\n    \"simpleValueType\": true,\n    \"help\": \"Check this box to apply this tag only to visitors from the European Economic Area.\",\n    \"defaultValue\": false,\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"command\",\n        \"paramValue\": \"default\",\n        \"type\": \"EQUALS\"\n      }\n    ]\n  },\n  {\n    \"type\": \"TEXT\",\n    \"name\": \"regions\",\n    \"displayName\": \"Regions\",\n    \"simpleValueType\": true,\n    \"defaultValue\": \"all\",\n    \"help\": \"Apply this setting to users from these \\u003ca href\\u003d\\\"https://en.wikipedia.org/wiki/ISO_3166-2\\\"\\u003eregions\\u003c/a\\u003e (provide a comma-separated list). If you type \\u003cstrong\\u003eall\\u003c/strong\\u003e, the setting will apply to all users. If you type \\u003cstrong\\u003eeea\\u003c/strong\\u003e as one of the regions, the tag will automatically include all European Economic Area regions as geographical targets for this command.\",\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"eea\",\n        \"paramValue\": false,\n        \"type\": \"EQUALS\"\n      }\n    ],\n    \"valueValidators\": [\n      {\n        \"type\": \"NON_EMPTY\",\n        \"errorMessage\": \"Set to \\\"all\\\" for all regions or add a comma-separated list of regions.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"TEXT\",\n    \"name\": \"regionsEEA\",\n    \"displayName\": \"Regions\",\n    \"simpleValueType\": true,\n    \"defaultValue\": \"eea\",\n    \"help\": \"Apply this setting to users from these \\u003ca href\\u003d\\\"https://en.wikipedia.org/wiki/ISO_3166-2\\\"\\u003eregions\\u003c/a\\u003e (provide a comma-separated list). If you type \\u003cstrong\\u003eall\\u003c/strong\\u003e, the setting will apply to all users. If you type \\u003cstrong\\u003eeea\\u003c/strong\\u003e as one of the regions, the tag will automatically include all European Economic Area regions as geographical targets for this command.\",\n    \"enablingConditions\": [\n      {\n        \"paramName\": \"eea\",\n        \"paramValue\": true,\n        \"type\": \"EQUALS\"\n      }\n    ],\n    \"valueValidators\": [\n      {\n        \"type\": \"NON_EMPTY\",\n        \"errorMessage\": \"Set to \\\"all\\\" for all regions or add a comma-separated list of regions.\"\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"settings\",\n    \"displayName\": \"Consent Settings\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"required\",\n        \"displayName\": \"Required for Google services\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"ad_storage\",\n            \"displayName\": \"ad_storage\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\",\n            \"help\": \"If set to \\u003cstrong\\u003edenied\\u003c/strong\\u003e, Google\\u0027s advertising tags and pixels will not be able to read or write first-party cookies. The use of third-party cookies is limited to only spam and fraud detection purposes. \\u003ca href\\u003d\\\"https://support.google.com/analytics/answer/9976101#behavior\\\"\\u003eMore information\\u003c/a\\u003e.\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"analytics_storage\",\n            \"displayName\": \"analytics_storage\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\",\n            \"help\": \"If set to \\u003cstrong\\u003edenied\\u003c/strong\\u003e, Google Analytics tags will not read or write analytics cookies, and data collected to Google Analytics will not utilize persistent cookie identifiers (the identifiers are reset with every page load). \\u003ca href\\u003d\\\"https://support.google.com/analytics/answer/9976101#behavior\\\"\\u003eMore information\\u003c/a\\u003e.\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"ad_user_data\",\n            \"displayName\": \"ad_user_data\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\",\n            \"help\": \"If set to \\u003cstrong\\u003edenied\\u003c/strong\\u003e, user data cannot be used with Google\\u0027s advertising solutions for audience building.\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"ad_personalization\",\n            \"displayName\": \"ad_personalization\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\",\n            \"help\": \"If set to \\u003cstrong\\u003edenied\\u003c/strong\\u003e, data collected on this website will not be used for remarketing in Google\\u0027s advertising solutions.\"\n          }\n        ]\n      },\n      {\n        \"type\": \"GROUP\",\n        \"name\": \"optional\",\n        \"displayName\": \"Other signals\",\n        \"groupStyle\": \"NO_ZIPPY\",\n        \"subParams\": [\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"personalization_storage\",\n            \"displayName\": \"personalization_storage\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"functionality_storage\",\n            \"displayName\": \"functionality_storage\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\"\n          },\n          {\n            \"type\": \"SELECT\",\n            \"name\": \"security_storage\",\n            \"displayName\": \"security_storage\",\n            \"macrosInSelect\": true,\n            \"selectItems\": [\n              {\n                \"value\": \"granted\",\n                \"displayValue\": \"granted\"\n              },\n              {\n                \"value\": \"denied\",\n                \"displayValue\": \"denied\"\n              },\n              {\n                \"value\": \"notset\",\n                \"displayValue\": \"Not set\"\n              }\n            ],\n            \"simpleValueType\": true,\n            \"defaultValue\": \"denied\"\n          }\n        ]\n      }\n    ]\n  },\n  {\n    \"type\": \"GROUP\",\n    \"name\": \"other\",\n    \"displayName\": \"Other Settings\",\n    \"groupStyle\": \"ZIPPY_OPEN\",\n    \"subParams\": [\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"url_passthrough\",\n        \"checkboxText\": \"Pass Ad Click Information Through URLs (url_passthrough)\",\n        \"simpleValueType\": true,\n        \"help\": \"Check this if you want internal links to pass advertising identifiers (\\u003cstrong\\u003egclid\\u003c/strong\\u003e, \\u003cstrong\\u003edclid\\u003c/strong\\u003e, \\u003cstrong\\u003egclsrc\\u003c/strong\\u003e, \\u003cstrong\\u003e_gl\\u003c/strong\\u003e, \\u003cstrong\\u003ewbraid\\u003c/strong\\u003e) in the link URL while waiting for consent to be granted. \\u003ca href\\u003d\\\"https://developers.google.com/tag-platform/security/guides/consent#passthroughs\\\"\\u003eRead more here\\u003c/a\\u003e.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"ads_data_redaction\",\n        \"checkboxText\": \"Redact Ads Data (ads_data_redaction)\",\n        \"simpleValueType\": true,\n        \"help\": \"If this is checked \\u003cstrong\\u003eand\\u003c/strong\\u003e ad_storage consent status is \\u003cstrong\\u003edenied\\u003c/strong\\u003e, Google\\u0027s advertising tags will drop all advertising identifiers from the requests, and traffic will be routed through cookieless domains.\"\n      },\n      {\n        \"type\": \"CHECKBOX\",\n        \"name\": \"sendDataLayer\",\n        \"checkboxText\": \"Push dataLayer Event\",\n        \"simpleValueType\": true,\n        \"help\": \"When consent is set to \\\"default\\\", a dataLayer event with \\u003cstrong\\u003eevent: \\u0027gtm_consent_default\\u0027\\u003c/strong\\u003e is sent, together with all the consent states. When an \\\"update\\\" is fired, a dataLayer event with \\u003cstrong\\u003eevent: \\u0027gtm_consent_update\\u0027\\u003c/strong\\u003e is pushed together with details about the updated consent state.\"\n      }\n    ]\n  }\n]\n\n\n___SANDBOXED_JS_FOR_WEB_TEMPLATE___\n\nconst dataLayerPush = require('createQueue')('dataLayer');\nconst gtagSet = require('gtagSet');\nconst log = require('logToConsole');\nconst makeNumber = require('makeNumber');\nconst makeTableMap = require('makeTableMap');\nconst setDefaultConsentState = require('setDefaultConsentState');\nconst updateConsentState = require('updateConsentState');\n\nconst eeaRegions = [\n  \"AT\",\n  \"BE\",\n  \"BG\",\n  \"HR\",\n  \"CY\",\n  \"CZ\",\n  \"DK\",\n  \"EE\",\n  \"FI\",\n  \"FR\",\n  \"DE\",\n  \"GR\",\n  \"HU\",\n  \"IE\",\n  \"IT\",\n  \"LV\",\n  \"LT\",\n  \"LU\",\n  \"MT\",\n  \"NL\",\n  \"PL\",\n  \"PT\",\n  \"RO\",\n  \"SK\",\n  \"SI\",\n  \"ES\",\n  \"SE\",\n  \"NO\",\n  \"IS\",\n  \"LI\"\n];\n\nconst regions = data.regions || data.regionsEEA;\n  \n// Determine the command and the setting object\nconst consentApi = data.command === 'default' ? setDefaultConsentState : updateConsentState;\n\nconst settingsObject = {};\n\nif (data.ad_storage !== 'notset') settingsObject.ad_storage = data.ad_storage;\nif (data.analytics_storage !== 'notset') settingsObject.analytics_storage = data.analytics_storage;\nif (data.ad_user_data !== 'notset') settingsObject.ad_user_data = data.ad_user_data;\nif (data.ad_personalization !== 'notset') settingsObject.ad_personalization = data.ad_personalization;\nif (data.personalization_storage !== 'notset') settingsObject.personalization_storage = data.personalization_storage;\nif (data.functionality_storage !== 'notset') settingsObject.functionality_storage = data.functionality_storage;\nif (data.security_storage !== 'notset') settingsObject.security_storage = data.security_storage;\n\n\n// Settings specific to the \"default\" command\nif (data.command === 'default' && makeNumber(data.wait_for_update) > 0) {\n  settingsObject.wait_for_update = makeNumber(data.wait_for_update);\n}\n\nif (data.command === 'default' && regions !== 'all') {\n  let setRegions = regions.split(',').map(r => r.trim());\n  // Check if EEA regions are included\n  if (setRegions.indexOf('eea') > -1) {\n    setRegions = setRegions.concat(eeaRegions);\n    // Remove duplicates & eea\n    setRegions = setRegions.filter((val, idx) => setRegions.indexOf(val) === idx && val !== 'eea');\n  }\n  settingsObject.region = setRegions;\n}\n  \n// Set advanced settings\ngtagSet({\n  url_passthrough: data.url_passthrough || false,\n  ads_data_redaction: data.ads_data_redaction || false\n});\n\n// Set the consent state\nconsentApi(settingsObject);\n\n// Push to dataLayer if needed\nif (data.sendDataLayer) {\n  settingsObject.event = 'gtm_consent_' + data.command;\n  dataLayerPush(settingsObject);\n}\n\n// Call data.gtmOnSuccess when the tag is finished.\ndata.gtmOnSuccess();\n\n\n___WEB_PERMISSIONS___\n\n[\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"logging\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"environments\",\n          \"value\": {\n            \"type\": 1,\n            \"string\": \"debug\"\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_globals\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keys\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"key\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"execute\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"dataLayer\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": false\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"access_consent\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"consentTypes\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"analytics_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"personalization_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"functionality_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"security_storage\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_user_data\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              },\n              {\n                \"type\": 3,\n                \"mapKey\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"consentType\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"read\"\n                  },\n                  {\n                    \"type\": 1,\n                    \"string\": \"write\"\n                  }\n                ],\n                \"mapValue\": [\n                  {\n                    \"type\": 1,\n                    \"string\": \"ad_personalization\"\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  },\n                  {\n                    \"type\": 8,\n                    \"boolean\": true\n                  }\n                ]\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  },\n  {\n    \"instance\": {\n      \"key\": {\n        \"publicId\": \"write_data_layer\",\n        \"versionId\": \"1\"\n      },\n      \"param\": [\n        {\n          \"key\": \"keyPatterns\",\n          \"value\": {\n            \"type\": 2,\n            \"listItem\": [\n              {\n                \"type\": 1,\n                \"string\": \"url_passthrough\"\n              },\n              {\n                \"type\": 1,\n                \"string\": \"ads_data_redaction\"\n              }\n            ]\n          }\n        }\n      ]\n    },\n    \"clientAnnotations\": {\n      \"isEditedByUser\": true\n    },\n    \"isRequired\": true\n  }\n]\n\n\n___TESTS___\n\nscenarios:\n- name: default settings sent\n  code: |-\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('setDefaultConsentState').wasCalledWith({\n      analytics_storage: 'denied',\n      ad_user_data: 'granted',\n      ad_personalization: 'denied',\n      personalization_storage: 'denied',\n      functionality_storage: 'denied',\n      security_storage: 'denied',\n      region: ['US-CA'],\n      wait_for_update: 500\n    });\n\n    assertApi('gtmOnSuccess').wasCalled();\n- name: updated settings sent\n  code: |-\n    mockData.command = 'update';\n\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('updateConsentState').wasCalledWith({\n      analytics_storage: 'denied',\n      ad_user_data: 'granted',\n      ad_personalization: 'denied',\n      personalization_storage: 'denied',\n      functionality_storage: 'denied',\n      security_storage: 'denied'\n    });\n    assertApi('gtmOnSuccess').wasCalled();\n- name: extra settings sent\n  code: |-\n    mock('gtagSet', (obj) => {\n      assertThat(obj.url_passthrough).isEqualTo(true);\n      assertThat(obj.ads_data_redaction).isEqualTo(true);\n    });\n    // Call runCode to run the template's code.\n    runCode(mockData);\n\n    // Verify that the tag finished successfully.\n    assertApi('gtmOnSuccess').wasCalled();\n- name: dataLayer events generated\n  code: \"mockData.sendDataLayer = true;\\n\\nlet dlCalled = false;\\n\\nmock('createQueue',\\\n    \\ name => {\\n  return o => {\\n    if (o.event === 'gtm_consent_default' && \\n\\\n    \\        o.analytics_storage === 'denied' && \\n        o.ad_user_data === 'granted'\\\n    \\ &&\\n        o.ad_personalization === 'denied' &&\\n        o.personalization_storage\\\n    \\ === 'denied' &&\\n        o.functionality_storage === 'denied' &&\\n        o.security_storage\\\n    \\ === 'denied' &&\\n        o.region[0] === 'US-CA') dlCalled = true;\\n    \\n \\\n    \\ };\\n});\\n    \\n// Call runCode to run the template's code.\\nrunCode(mockData);\\n\\\n    \\n// Verify that the tag finished successfully.\\nassertApi('gtmOnSuccess').wasCalled();\\n\\\n    assertThat(dlCalled, 'dataLayer not called with correct arguments').isEqualTo(true);\"\nsetup: |-\n  const mockData = {\n    command: 'default',\n    ad_storage: 'notset',\n    analytics_storage: 'denied',\n    ad_user_data: 'granted',\n    ad_personalization: 'denied',\n    personalization_storage: 'denied',\n    functionality_storage: 'denied',\n    security_storage: 'denied',\n    wait_for_update: 500,\n    regions: 'US-CA',\n    url_passthrough: true,\n    ads_data_redaction: true,\n    sendDataLayer: false,\n  };\n\n\n___NOTES___\n\nCreated on 07/10/2020, 10:39:35\n\n\n",
                "galleryReference": {
                    "host": "github.com",
                    "owner": "gtm-templates-simo-ahava",
                    "repository": "consent-mode",
                    "version": "8de6b75da0bf250f42f0a0a9fe357b7e2408eea3",
                    "signature": "d2a7d018d74c047ccb6b7965d9d2592f4821b142e85b2a58de86f31aa934a4b4"
                }
            }
        ]
    }
}

Consent Mode v2 richtig aufsetzen? Jetzt Beratung anfragen →


Daniils Visnakovs

Über den Autor

Daniils Visnakovs

Ex-Google-Berater, Speaker (u.a. Nomad World Fest) und Coach. Spezialisiert auf Conversion-Tracking, Google Ads und datenbasiertes Marketing. Hilft Unternehmen, Werbebudgets messbar einzusetzen — in 1:1 Beratung, Workshops oder auf der Bühne.

Beratung anfragen