Google Consent Mode in einem Shopify Custom Pixel (Google Tag Manager)
Übersicht
Manche Shops laden einen Google-Tag-Manager-Container (GTM) von Shopify custom pixel (Settings > Customer events) statt oder zusätzlich zum Storefront. Dieser Artikel zeigt, wie Sie Google Consent Mode Advanced auf die Tags anwenden, die dieser Container auslöst.
Mit GTM müssen Sie nur sehr wenig Code schreiben. Zwei Zeilen am Anfang des Pixels übergeben die Einwilligung des Besuchers an den Tag Pandectes CMP in Ihrem Container, und der Tag übernimmt den Rest.
Wenn Sie GTM nicht verwenden und Google Analytics 4 oder Google Ads direkt mit gtag.js laden, verwenden Sie stattdessen Google Consent Mode in einem Shopify Custom Pixel (gtag.js). Verwenden Sie für eine Google-Property immer nur eine der beiden Methoden, niemals beide.
Bevor Sie beginnen
- Der Pandectes-CMP-Tag muss in Ihrem Container sein. Fügen Sie ihn über die GTM Template Gallery hinzu, lösen Sie ihn bei Consent Initialization - All Pages aus und legen Sie die Einwilligung fest, die jeder Tag benötigt. Die Schritte finden Sie unter Integration mit Google Tag Manager (GTM): Offizielle Pandectes-Vorlage.
- Richten Sie zuerst die Storefront-Seite ein. Das Pixel erfasst nur, was innerhalb des Pixels läuft. Google-Tags auf dem Storefront selbst richten Sie wie unter So richten Sie Google Tag Manager mit Pandectes ein beschrieben ein.
- Prüfen Sie Ihren Tarif. Google Consent Mode und der Pandectes-CMP-Tag funktionieren ab dem Tarif Plus und höher.
Warum das Pixel eine eigene Einwilligungseinrichtung braucht
Ein Shopify Custom Pixel läuft in einem Sandbox-iFrame mit eigenem window und eigenem dataLayer. Es ist von der Storefront-Seite getrennt, und eine in einem der beiden gesetzte Einwilligung ist für das andere nicht sichtbar.
Deshalb kann ein Container, der im Pixel geladen wird, die Einwilligung, die der Storefront bereits hat, nicht sehen. Die beiden Zeilen unten übergeben sie. Alles in diesem Artikel gilt nur innerhalb des Pixels.
Die beiden Zeilen
Platzieren Sie diese Zeilen ganz am Anfang des Custom Pixels, vor dem GTM-Snippet und vor allem anderen:
window.pandectesPixelInit = init;
window.pandectesSubscribe = api.customerPrivacy.subscribe;
Das ist die gesamte Einwilligungseinrichtung. Der Pandectes-CMP-Tag in Ihrem Container liest sie aus, wendet den richtigen Standard-Einwilligungsstatus für den Besucher an und aktualisiert ihn, sobald der Besucher seine Auswahl im Banner ändert. Sie müssen weder default noch update schreiben und keine Liste von Regionen pflegen: Der Tag übernimmt die Richtlinie aus Ihren Banner-Einstellungen.
Zwei Platzierungsregeln:
- Die Zeilen kommen zuerst. Der Tag liest sie beim Start des Containers. Läuft das GTM-Snippet vorher, gibt es nichts zum Lesen.
- Die Zeilen gehören in dasselbe Pixel wie der Container. Jedes Custom Pixel ist eine eigene Sandbox. Wenn Sie die Zeilen in einem Pixel setzen, hat das für einen Container, der in einem anderen Pixel geladen wird, keine Wirkung.
Advanced-Modus und die Pixel-Berechtigung
Diese Einrichtung ergibt Google Consent Mode Advanced: Der Container lädt bei jedem Seitenaufruf, seine Tags senden cookielose Pings, solange die Einwilligung verweigert ist, und wechseln zur vollständigen Messung, sobald die Einwilligung erteilt wird.
Dafür muss das Pixel vor der Einwilligung laufen dürfen. Gehen Sie im Shopify-Admin zu Settings > Customer events, öffnen Sie Ihr Custom Pixel und setzen Sie unter Customer privacy den Wert Permission auf Not required. Bei Required hält Shopify das Pixel zurück, bis der Besucher zustimmt. Der Container wird dann nie geladen und es werden keine cookielosen Pings gesendet.
Wenn Sie stattdessen Basic mode möchten (nichts wird geladen, bis eine Einwilligung erteilt wird), setzen Sie Permission auf Required, wählen Sie die benötigten Kategorien aus und lassen Sie Shopify das Pixel zurückhalten.
Der Pixel-Code
- Gehen Sie im Shopify-Admin zu Settings > Customer events und klicken Sie auf Add custom pixel.
- Geben Sie dem Pixel einen Namen und fügen Sie den folgenden Code ein.
- Ersetzen Sie
GTM-XXXXXXXdurch Ihre Container-ID. - Fügen Sie unten Ihre eigenen Event-Abonnements hinzu.
- Legen Sie die Berechtigung wie oben beschrieben fest, klicken Sie auf Save und dann auf Connect.
/* Pandectes consent handover.
* Keep these two lines at the very top, above the GTM snippet.
* The Pandectes CMP tag in your container reads them. */
window.pandectesPixelInit = init;
window.pandectesSubscribe = api.customerPrivacy.subscribe;
/* START_MODIFY_FOR_YOUR_STORE */
const GTM_ID = "GTM-XXXXXXX"; // your container ID
/* END_MODIFY_FOR_YOUR_STORE */
/* Load the GTM container inside the pixel sandbox.
* This dataLayer is not shared with the storefront or other pixels. */
window.dataLayer = window.dataLayer || [];
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != "dataLayer" ? "&l=" + l : "";
j.async = true;
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, "script", "dataLayer", GTM_ID);
/* YOUR EVENT SUBSCRIPTIONS GO HERE, IN THIS SAME PIXEL.
*
* The code above sets consent and loads the container. On its own it
* pushes nothing to the dataLayer.
*
* The example below is sample code only, adapted from Shopify's GTM
* tutorial. Adapt the events and fields to your own GTM triggers.
* Shopify's original also pushes email, phone and address. Those are
* left out on purpose: putting personal data in the dataLayer is a
* privacy decision you need to make for your own store. */
// analytics.subscribe("checkout_completed", (event) => {
// window.dataLayer.push({
// event: "checkout_completed",
// timestamp: event.timestamp,
// id: event.id,
// token: event.data?.checkout?.token,
// url: event.context.document.location.href,
// client_id: event.clientId,
// orderId: event.data?.checkout?.order?.id,
// currency: event.data?.checkout?.currencyCode,
// subtotal: event.data?.checkout?.subtotalPrice?.amount,
// shipping: event.data?.checkout?.shippingLine?.price?.amount,
// value: event.data?.checkout?.totalPrice?.amount,
// tax: event.data?.checkout?.totalTax?.amount,
// });
// });
Jedes Event, das Sie senden, benötigt einen passenden Trigger vom Typ Custom Event in GTM mit exakt demselben Namen wie der Schlüssel event (checkout_completed im Beispiel).
Jedes Pixel, das einen Container lädt, braucht die beiden Zeilen
Sie können die beiden Zeilen nicht in einem Custom Pixel setzen und den Container in einem anderen laden. Jedes Pixel ist eine eigene Sandbox. Ein Container, der in einem Pixel ohne die beiden Zeilen geladen wird, hat keinen Einwilligungsstatus, und seine Tags werden nach den Standardeinstellungen von Google ausgelöst, ohne Warnung.
Dasselbe gilt für Ihre Event-Abonnements: Sie müssen im selben Pixel stehen, unterhalb des GTM-Snippets.
Prüfen Sie, ob es funktioniert
Tag Assistant und GTM Preview können das Pixel nicht sehen
Weder Google Tag Assistant noch GTM im Modus Preview verbinden sich mit einem Container, der in der Pixel-Sandbox läuft. Sie prüfen nur die Storefront-Seite und melden daher nichts (oder nur die eigenen Tags des Storefronts), selbst wenn das Pixel korrekt funktioniert. Das ist erwartet und kein Fehler.
Prüfen Sie das dataLayer im Frame des Pixels
- Öffnen Sie die Chrome DevTools und wechseln Sie zum Tab Console.
- Öffnen Sie in der Symbolleiste des Console-Tabs das Frame-Auswahlmenü (es zeigt normalerweise
top) und wählen Sie das Sandbox-Frame des Pixels aus (sein Name beginnt mitweb-pixel). Shopify erstellt ein Frame pro Custom Pixel, wählen Sie also das richtige aus, wenn Sie mehrere haben. - Führen Sie die folgenden Prüfungen aus.
Im Frame top ist dataLayer das dataLayer des Storefronts und sagt Ihnen nichts über das Pixel.
- Sind die beiden Zeilen gesetzt?
window.pandectesPixelInitundwindow.pandectesSubscribesollten beide definiert sein. - Kommt die Einwilligung vor den Tags? In
dataLayermüssen die Einwilligungseinträge erscheinen, bevor Ihre Tags ausgelöst werden. - Lädt das Pixel vor der Einwilligung? Das muss für den Advanced-Modus der Fall sein. Erscheint der Container erst, nachdem der Besucher zugestimmt hat, ist die Pixel-Berechtigung auf Required gesetzt und Sie befinden sich im Basic-Modus.
- Kommen Ihre Events an? Geben Sie eine Testbestellung auf und prüfen Sie, ob das Event in
dataLayermit dem Namen erscheint, den Ihr GTM-Trigger erwartet.
Häufige Fehler
Fehler | Was passiert |
|---|---|
Die beiden Zeilen stehen nach dem GTM-Snippet | Der Tag hat beim Start des Containers nichts zum Lesen. Tags werden nach den Standardeinstellungen von Google ausgelöst. |
Die beiden Zeilen stehen in einem Pixel und der Container in einem anderen | Getrennte Sandboxes. Der Container hat keinen Einwilligungsstatus. |
Der Pandectes-CMP-Tag fehlt im Container | Die Zeilen sind gesetzt, aber niemand liest sie. Kein Consent Mode in GTM. |
Pixel Permission auf Required gesetzt | Shopify hält das Pixel bis zur Einwilligung zurück, sodass der Container nie vorher geladen wird. Das ist der Basic-Modus, nicht Advanced. |
Test mit Tag Assistant oder GTM Preview | Diese Tools können die Pixel-Sandbox nicht sehen und melden nichts, selbst wenn alles funktioniert. |
Auslesen von | Das ist das dataLayer des Storefronts, nicht das des Pixels. |
Kein Trigger vom Typ Custom Event in GTM für ein gesendetes Event | Das Event erreicht das dataLayer, aber kein Tag wird ausgelöst. |
Unverändertes Einfügen von Shopifys Beispiel-Event | Event-Namen und Felder, die nicht zu Ihren Triggern passen, sowie personenbezogene Daten im dataLayer. |
Dieselbe Property wird über dieses Pixel und über ein gtag.js-Pixel geladen | Doppelte Treffer und zwei konkurrierende Einwilligungsstatus. |
Einstellungen, die dieser Artikel nicht behandelt
Einstellungen wie url_passthrough, ads_data_redaction, allow_enhanced_conversions und restricted_data_processing werden in GTM gesetzt (am Pandectes-CMP-Tag oder an Ihren eigenen Tags), nicht im Pixel.
Pandectes kann dazu nicht beraten. Die richtigen Werte hängen von Ihren Google-Ads- und Analytics-Konten, der Modellierung, auf die Sie sich verlassen, und der rechtlichen Situation Ihres Unternehmens ab. Besprechen Sie das mit der Person, die Ihr Google-Setup betreut, oder bei datenschutzrechtlichen Fragen mit Ihrer Rechtsberatung.
Aktualisiert am: 30/10/2026
Danke!
