DfGtagManager: volledige documentatie
Complete gids van de plugin DfGtagManager: GTM-container, GA4 Enhanced Ecommerce, Consent Mode v2, met SHA-256 gehashte Enhanced Conversions, afstemming op Google Shopping en server-side GTM.
DfGtagManager is een Shopware 6.7-plugin die een Google Tag Manager-container invoegt, de volledige GA4 e-commerce-events uitzendt, Consent Mode v2 afhandelt met de native cookiebanner van Shopware, Enhanced Conversions met SHA-256 gehasht doorstuurt en de data layer afstemt op uw Google Merchant Center-feed. Deze documentatie behandelt de installatie, de volledige configuratie en de verificatie.
Vereisten
- Shopware 6.7.0 of nieuwer
- PHP 8.2 minimaal
- SSH-toegang of de Shopware-administration om de ZIP te installeren
- Een Google Tag Manager-account (aanbevolen) of ten minste een Google Analytics 4-account
- Voor de Enhanced Conversions: een Google Ads-account met geconfigureerde conversiecampagnes
Installatie
Er zijn drie methodes, afhankelijk van uw omgeving.
Vanuit de Shopware-administration
- In de backoffice: Extensies → Mijn extensies → Extensie uploaden
- Selecteer het bestand
DfGtagManager.zip - Klik op Installeren en daarna op Activeren
- Leeg de cache: Instellingen → Systeem → Cache en index → Legen en opnieuw genereren
Vanaf de commandoregel (aanbevolen in productie)
cd /pad/naar/shopware
unzip DfGtagManager.zip -d custom/plugins/
bin/console plugin:refresh
bin/console plugin:install --activate DfGtagManager
bin/console assets:install
bin/console cache:clear
Tip. Na assets:install wordt het bestand df-gtag-manager.js gepubliceerd in public/bundles/dfgtagmanager/ en is het bereikbaar via de Twig asset helper. Er is geen webpack- of TypeScript-build nodig.
Configuratie
Open de configuratie: Extensies → Mijn extensies → DataFirefly Google Tag Manager → menu ⋮ → Configureren. Selecteer bovenaan het scherm het betreffende sales channel, want elk sales channel kan zijn eigen onafhankelijke configuratie hebben.
Algemene instellingen
- Plugin activeren: hoofdschakelaar. Schakel uit om alle invoeging te stoppen zonder te verwijderen.
- Debugmodus: toont logs met het voorvoegsel
[DfGtag]in de browserconsole (add_to_cart, remove_from_cart, consent update en meer). Activeer dit alleen in een testomgeving.
Google Tag Manager
- GTM Container ID: formaat
GTM-XXXXXXX. Te vinden op tagmanager.google.com, rechtsboven in uw container. Laat leeg als u GTM niet gebruikt; de plugin schakelt dan automatisch over op de loadergtag.jszodra er een GA4 Measurement ID is ingevuld. - Server-side GTM URL (optioneel): de URL van uw server-side Tag Manager-loader (bijvoorbeeld
https://gtm.uwdomein.com, zonder afsluitende schuine streep). Zie het hoofdstuk Server-side GTM hieronder.
Google Analytics 4
- GA4 Measurement ID: formaat
G-XXXXXXXXXX. Te vinden in GA4 onder Beheer → Gegevensstromen → Web. Wordt gebruikt als terugval viagtag.jswanneer er geen GTM-container is geconfigureerd, en wordt in de dataLayer gezet voor de GTM-tags. - Het event page_view automatisch versturen: standaard ingeschakeld. Schakel dit uit als u
page_viewliever handmatig vanuit GTM afvuurt.
Consent Mode v2
- Consent Mode v2 activeren: zendt
gtag consent defaultuit vóór het laden van GTM, met de zeven categorieën van Consent Mode v2. Zie Consent Mode v2 in detail. - Standaard toestemmingsstatus:
- Geweigerd: aanbevolen voor de EU en de AVG. Er wordt geen enkele analytische of advertentiecookie geplaatst voordat de gebruiker accepteert.
- Toegestaan: alleen voor bezoekers buiten de EU, of voor shops die uitsluitend gericht zijn op een zakelijk publiek dat niet onder de AVG valt.
- url_passthrough activeren: behoudt de parameters
gclid,_glendclidtussen pagina’s, ook wanneer cookies worden geweigerd. Nuttig voor multitouch-attributie. - ads_data_redaction activeren bij weigering: anonimiseert de advertentie-identificaties die naar Google Ads worden gestuurd wanneer de gebruiker weigert. Verkleint het trackingoppervlak verder.
Enhanced Conversions
- Enhanced Conversions activeren: stuurt een object
user_datamee met e-mail, telefoon, voornaam, achternaam, straat, plaats en postcode, alle aan serverzijde met SHA-256 gehasht, op de pagina’s confirm en finish van het besteltraject. Zie Enhanced Conversions in detail.
Google Shopping en Merchant Center
- Bron van item_id: bepaalt wat de plugin als
item_idin elk GA4-item meestuurt. Deze waarde moet overeenkomen met het veldidvan uw Merchant Center-feed. Drie opties:- Productnummer (SKU): aanbevolen, het gangbaarste formaat in XML- en CSV-feeds voor Merchant Center.
- Shopware UUID: nuttig als u uw feed rechtstreeks uit de Shopware-database genereert.
- EAN / GTIN: nuttig als uw feed op internationale barcodes is afgestemd.
- Standaard Google-categorie: de waarde die in
google_product_categorywordt gezet wanneer noch het product noch de categorie er een definieert. Google-formaat (bijvoorbeeldApparel & Accessories > Clothing). - Standaardmerk: gebruikt als terugval in
item_brandwanneer het product geen fabrikant heeft.
Events
Elk GA4-event is afzonderlijk te activeren. Vink de events uit die u niet wilt.
- view_item: productpagina
- view_item_list: categoriepagina en zoekresultaten
- add_to_cart: klik op de knop toevoegen aan winkelwagen (JavaScript-listener)
- remove_from_cart: verwijderen van een winkelwagenregel of van een regel in de offcanvas
- view_cart: winkelwagenpagina
- begin_checkout: bevestigingspagina van het besteltraject
- purchase: finish-pagina na de bestelling
- search: pagina met zoekresultaten
- login / sign_up: verzenden van de accountformulieren
Consent Mode v2 in detail
Consent Mode v2 is het officiële mechanisme van Google om toestemming van gebruikers af te handelen. Sinds maart 2024 eist Google Ads het van adverteerders die zich op de Europese Economische Ruimte richten; zonder dat mechanisme verliest u toegang tot remarketing en tot conversiemeting.
Laadvolgorde
De plugin garandeert op elke pagina van de storefront de volgende volgorde:
- Initialisatie van
window.dataLayeren van de stubgtag() - Uitzenden van
gtag consent defaultmet de zeven categorieën van Consent Mode v2 enwait_for_update: 500 - Uitzenden van
url_passthroughenads_data_redactionindien geactiveerd - Pushen van de GA4-events van de pagina (view_item, view_cart en andere) in de dataLayer
- Laden van het GTM-script (of van
gtag.jsals terugval)
Waarom wait_for_update: 500? Die instructie zegt Google tot 500 ms na het laden van de pagina te wachten voordat het hits in geweigerde modus uitzendt, zodat uw cookiebanner tijd heeft om het antwoord van de gebruiker op te halen en de plugin een gtag consent update kan pushen. Zonder die vertraging worden alle eerste hits in geweigerde modus verstuurd, ook als de gebruiker meteen accepteert.
Integratie met de cookiebanner van Shopware
De plugin decoreert CookieProviderInterface en registreert twee virtuele cookies in de groepen van de native banner:
df-gtag-analyticsin de groep Statistieken: bestuurtanalytics_storagedf-gtag-adsin de groep Marketing: bestuurtad_storage,ad_user_dataenad_personalization
Wanneer de gebruiker zijn voorkeuren bevestigt, zendt Shopware het event CookieConfiguration_Update uit. De JavaScript-controller van de plugin luistert naar dat event, leest de waarde van de twee virtuele cookies en zendt onmiddellijk de bijbehorende gtag consent update uit.
Compatibiliteit met een banner van derden
Gebruikt u Cookiebot, CookieFirst, OneTrust of Axeptio in plaats van de native banner van Shopware, dan moet u zelf de gtag consent update met de juiste categorieën vanuit die banner uitzenden. De plugin staat dat niet in de weg; hij verzorgt alleen de initiële consent default en het luisteren naar het Shopware-event.
Enhanced Conversions in detail
Enhanced Conversions verbeteren de nauwkeurigheid van de meting in Google Ads door bij een conversie first-party gebruikersgegevens (e-mail, telefoon, naam, adres) met SHA-256 gehasht mee te sturen. Google koppelt die conversies daarna aan ingelogde Google-gebruikers, wat doorgaans 10 tot 30 % van de conversies terugwint die eerder verloren gingen door cookieblokkers, gebruik van meerdere apparaten of het wisselen van browser.
Toegepaste normalisatie
De plugin normaliseert elk veld volgens de specificatie van Google vóór het hashen:
- E-mail: kleine letters, spaties verwijderd, daarna SHA-256
- Telefoon: E.164 (automatisch landvoorvoegsel op basis van de ISO-code van het factuuradres, bijvoorbeeld
+31612345678), daarna SHA-256 - Voornaam, achternaam, straat, plaats: kleine letters, spaties verwijderd, daarna SHA-256
- Postcode: kleine letters, spaties verwijderd; voor de VS afgekapt tot de eerste 5 cijfers vóór het hashen
- Land: ISO-2-code in hoofdletters, niet gehasht
dataLayer-payload
Bij de events begin_checkout en purchase stuurt de plugin het volgende mee:
{
"event": "purchase",
"ecommerce": { ... },
"user_data": {
"sha256_email_address": "...",
"sha256_phone_number": "...",
"address": {
"sha256_first_name": "...",
"sha256_last_name": "...",
"sha256_street": "...",
"sha256_city": "...",
"postal_code": "...",
"country": "NL"
}
}
}
Configuratie in GTM
- Maak of bewerk in uw GTM-container uw tag Google Ads Conversion Tracking
- Sectie Include user-provided data from your website → Manual configuration
- Maak acht Data Layer Variables die verwijzen naar:
user_data.sha256_email_address→ gekoppeld aan Email (hashed)user_data.sha256_phone_number→ gekoppeld aan Phone (hashed)user_data.address.sha256_first_name→ First name (hashed)user_data.address.sha256_last_name→ Last name (hashed)user_data.address.sha256_street→ Street (hashed)user_data.address.sha256_city→ City (hashed)user_data.address.postal_code→ Postal codeuser_data.address.country→ Country
- Sla op en publiceer de container
Let op. Google eist dat de waarden al aan de kant van de site gehasht zijn; pas de GTM-variabele SHA-256 Hash dus niet toe op deze variabelen, want ze verlaten de plugin al gehasht. Dubbel hashen maakt matching onmogelijk.
Google Shopping en Merchant Center-feed
Om GA4 en Google Ads de e-commerce-events aan uw Shopping-producten te laten koppelen, moet elk item in de dataLayer dezelfde item_id gebruiken als de Merchant Center-feed.
Velden in elk item
item_id: instelbare bron (SKU / UUID / EAN)item_name: naam van het product in de actieve taalitem_brand: naam van de fabrikant, of het standaardmerk indien niet ingevulditem_categorytotitem_category5: volledig kruimelpad, vertrekkend van de diepste categoriegoogle_product_category: zie hieronderprice,quantity,currencympn: Manufacturer Part Number indien op het product ingevuldgtin: EAN indien ingevulddiscount: berekend uit het verschil tussen de doorgestreepte prijs en de verkoopprijs
google_product_category per product
U kunt de Google Shopping-categorie voor een product of een categorie overschrijven via een aangepast veld:
- In de backoffice: Instellingen → Systeem → Aangepaste velden → Nieuwe set aanmaken
- Technische naam:
df_google_product_category, type Tekst - Wijs die set toe aan de entiteiten Product en/of Categorie
- Vul op elk product of elke categorie de Google-waarde in (bijvoorbeeld
Sporting Goods > Athletics > Football > Football Balls)
De plugin zoekt de waarde in deze volgorde: aangepast veld van het product → aangepast veld van de diepste categorie → globale standaardwaarde uit de configuratie.
Server-side GTM
Met server-side tagging routeert u het GTM-verkeer via een domein dat u zelf beheert, wat browserblokkers omzeilt, gebruikersgegevens beschermt en de weerbaarheid tegen veranderingen in het cookiebeleid vergroot.
Vereisten
- Een geconfigureerde server-side GTM-container (zie de documentatie van Google)
- Een eigen domein of subdomein dat naar uw Tag Manager-server verwijst, bijvoorbeeld
gtm.uwdomein.com
Activering
Vul in de configuratie van de plugin, sectie Google Tag Manager, het veld Server-side GTM URL in met uw domein zonder afsluitende schuine streep:
https://gtm.uwdomein.com
Het GTM-script en de noscript-iframe verwijzen dan automatisch naar uw server in plaats van naar www.googletagmanager.com.
Verificatie
Google Tag Assistant
- Installeer de Chrome-extensie Tag Assistant Companion
- Open tagassistant.google.com, klik op Add domain en voer de URL van uw storefront in
- Navigeer naar een productpagina, voeg toe aan de winkelwagen en ga naar de checkout; elke stap moet met de bijbehorende GA4-events in de assistent verschijnen
GA4 DebugView
In GA4: Beheer → DebugView. De events verschijnen daar in realtime zodra de debugmodus in de plugin actief is of zodra de parameter debug_mode=true wordt meegestuurd.
Debugmodus van de plugin
Activeer Debugmodus in de configuratie en open daarna de browserconsole. U ziet dan:
[DfGtag] consent update { analytics_storage: "granted", ad_storage: "denied", ... }
[DfGtag] add_to_cart { item_id: "SW10001", item_name: "...", price: 129, quantity: 1 }
[DfGtag] remove_from_cart { ... }
Validatiechecklist
- Op de homepage: consent default uitgezonden vóór het GTM-script (volgorde van de tags in de head)
- Op een productpagina:
view_itemmetitem_id,item_brand,item_categoryengoogle_product_category - Bij toevoegen aan de winkelwagen:
add_to_cartmet hetzelfde item - Op de winkelwagen:
view_cartmet alle items - Op de confirm-pagina:
begin_checkoutmet gehashteuser_data - Op de finish-pagina:
purchasemettransaction_id,value,tax,shipping,currency,itemsen gehashteuser_data - Bij het accepteren van cookies:
consent updatemet de toegestane categorieën
Probleemoplossing
De events verschijnen niet in de GA4 DebugView
- Controleer of het GA4 Measurement ID in de configuratie klopt
- Controleer of de tag GA4 Configuration daadwerkelijk is aangemaakt en gepubliceerd in uw GTM-container
- Controleer of de trigger van de tag alle pagina’s dekt (All Pages)
- Leeg de Shopware-cache en herlaad de pagina met een hard reload (Ctrl+F5)
De Enhanced Conversions komen niet overeen
- Controleer of er geen extra transformatie (de GTM-variabele SHA-256 Hash) op de variabelen
user_datawordt toegepast, want de waarden zijn al gehasht - Controleer het E.164-formaat van het telefoonnummer in de dataLayer (met landvoorvoegsel dat met
+begint) - Controleer of het veld
countryin ISO-2 met hoofdletters staat (NL, nietNederland) - Wacht 24 tot 48 uur na de activering: Google Ads heeft die tijd nodig voor de eerste synchronisatie
Consent update wordt niet uitgezonden wanneer de gebruiker accepteert
- Bevestig dat de gebruikte banner daadwerkelijk de native banner van Shopware is
- Open de browserconsole in debugmodus en controleer of het event
CookieConfiguration_Updatewordt uitgezonden wanneer de gebruiker de banner bevestigt - Controleer of de cookies
df-gtag-analyticsendf-gtag-adsin de banner verschijnen en aangevinkt zijn
item_id komt niet overeen met mijn Merchant Center-feed
- Open uw XML- of CSV-feed en bekijk het veld
<g:id>voor een product - Kies in de configuratie van de plugin de bron voor
item_iddie exact dezelfde waarde oplevert (SKU, UUID of EAN) - Gebruikt uw feed een voorvoegsel (bijvoorbeeld
shopware_SW10001), maak dan een GTM-tag die de waarde van dat voorvoegsel voorziet voordat ze naar Google Ads gaat
De plugin laadt niet op bepaalde pagina’s
- Controleer of het huidige sales channel Plugin activeren op AAN heeft staan in zijn eigen configuratie
- Sommige aangepaste pagina’s (eigen CMS-landingspagina’s) vuren de standaard Page Loaded Events mogelijk niet af. In dat geval wordt de GTM-container toch geladen via de header-pagelet.