Installatie
Vereisten en installatie
Magento 2.4.x (Open Source of Adobe Commerce), PHP 8.1 tot 8.5, Hyvä of Luma. Een Google Tag Manager-container, die gratis is.
composer require codingrow/module-gtmdl
bin/magento module:enable Codingrow_Gtmdl
bin/magento setup:upgrade
In production-modus ook setup:di:compile, setup:static-content:deploy en cache:flush. De Composer-inloggegevens komen per e-mail wanneer je de gratis module aanvraagt of de winkelgebeurtenissen koopt.
Alles wordt ingesteld in Stores → Configuration → Codingrow Extensions → Google Tag Manager Data Layer, en elke instelling kan per store view anders zijn: wissel de Scope linksboven.
Container
| Veld | Wat het doet |
|---|---|
| Enable | Hiermee uit rendert de winkel geen container en geen enkele regel datalaag. |
| Container ID | Jouw container, in de vorm GTM-XXXXXXX. Anders geschreven wordt hij genegeerd. Laat leeg om de datalaag te vullen zonder een container te laden — precies wat je wilt als de container al door iets anders geïnstalleerd wordt. |
| Load the container only after cookie consent | Gebruikt de Cookie Restriction Mode van Magento. De datalaag wordt toch gevuld, dus zodra de toestemming komt gaat er niets verloren. Met Google-toestemming actief, hieronder, geldt dit niet meer. |
Gebruik
Google-toestemming
Google Consent Mode v2. De begintoestand moet voordat de container start worden gedeclareerd, dus alleen wie de container laadt kan dat. De schakelaar heeft drie standen.
Alleen de begintoestand declareren is de juiste wanneer de toestemming al door een aparte extensie wordt beheerd: de module declareert alles geweigerd, en jouw extensie stuurt de update door
window.codingrowGtmdl.consent({
ad_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted',
analytics_storage: 'granted'
});
De begintoestand declareren en bijwerken laat de module toestemming verlenen vanuit de cookiemelding van Magento. Die stand vereist de Cookie Restriction Mode van Magento aan (Stores → Configuration → General → Web → Default Cookie Settings): staat die uit, dan kan geen klant aanvaarden en zou de toestemming voor altijd geweigerd blijven. Een regel onder de velden zegt welke van de twee er werkelijk gebeurt, en wordt in dat geval rood.
google-analytics.com/g/collect een parameter gcs: die staat op G100 zolang de toestemming geweigerd is en op G111 zodra die verleend is. Verandert hij wanneer je de cookies aanvaardt, dan werkt Consent Mode.Nog twee instellingen: advertentiegegevens verbergen zonder toestemming (zolang de advertentietoestemming geweigerd is, stuurt Google geen identificatoren mee in zijn advertentieverzoeken) en klik-id via de URL doorgeven (zonder cookies reist die van pagina naar pagina). Beide aanbevolen.
De veertien gebeurtenissen
Eén schakelaar per gebeurtenis. De vier basisgebeurtenissen zijn gratis; de andere tien hebben de sleutel voor de winkelgebeurtenissen nodig.
| Gebeurtenis | Wanneer | Niveau |
|---|---|---|
view_item | productpagina | gratis |
view_cart | winkelwagen | gratis |
begin_checkout | afrekenen | gratis |
purchase | bedankpagina, uit de echte order | gratis |
view_item_list | categorie en zoekresultaten | winkel |
select_item | een klik op een product in een lijst | winkel |
add_to_cart | uit de echte winkelwagenregel | winkel |
remove_from_cart | uit de echte winkelwagenregel | winkel |
search | de term en hoeveel resultaten die gaf | winkel |
add_to_wishlist | het toegevoegde product | winkel |
add_shipping_info | de opgeslagen verzendmethode | winkel |
add_payment_info | de opgeslagen betaalmethode | winkel |
login | klant meldt zich aan | winkel |
sign_up | klant registreert zich | winkel |
In deze groep staan nog twee instellingen: orders die in de beheeromgeving zijn gemaakt meetellen (met de hand ingevoerde orders hebben geen bezoek achter zich, en ze meetellen vertekent de kosten per conversie) en alleen deze orderstatussen, wat de aankoop beperkt tot de statussen die echt als verkoop gelden.
De verzend- en betaalgebeurtenissen hangen niet van de checkout af: ze ontstaan in Magento zelf wanneer de methode wordt opgeslagen, dus ze werken op de standaardcheckout, op Hyvä, op Luma en op checkouts met een eigen route. De andere vier zijn paginagebeurtenissen: de module levert een klein layoutbestand per route, en de support kan er een toevoegen voor een checkout die elders woont.
Container om te importeren
Zolang de container geen tag heeft die de datalaag leest, komt er niets in Analytics aan. Vul de GA4-meet-ID in (de G-XXXXXXXXXX uit Analytics, onder Beheer → Gegevensstromen) en, als je ook de Google Ads-conversie wilt, de conversie-ID (de cijfers na AW-) en het label van je aankoopconversie. Druk dan op Download de container.
Het bestand bevat de GA4-configuratietag, de tag die de ecommercegebeurtenissen doorstuurt, de conversion linker, de nodige variabelen en — als de twee Google Ads-velden gevuld zijn — de aankoopconversie met de echte omzet en het ordernummer.
In Google Tag Manager: Beheer → Container importeren, kies het bestand, vink Merge en Conflicterende tags hernoemen aan, bekijk de preview en publiceer. Niets van wat je al hebt wordt overschreven.
Verloren aankopen
Ongeveer één aankoop op vijf bereikt Analytics nooit: een advertentieblokkeerder, een script dat faalde, een klant die de pagina te vroeg sluit. Met dit aan stuurt de winkel de aankoop zelf wanneer de browser dat niet deed, met de identificator die die klant op dat moment had.
Je hebt de GA4-meet-ID uit de groep hierboven nodig en een Measurement Protocol API-sleutel, die je in Analytics maakt onder Beheer → Gegevensstromen → jouw stroom → Measurement Protocol API-geheimen. Die wordt versleuteld opgeslagen. De wachttijd voor het verzenden is de marge voor de browser van de klant: een kwartier is genoeg, ook bij een trage verbinding.
Ook aankopen zonder Analytics-identificator terughalen dekt de klanten die Analytics vanaf de eerste pagina blokkeren: er is niets te lezen, dus de aankoop kan alleen als een nieuw, direct bezoek worden verzonden. Je krijgt de omzet terug in de rapporten en verliest de toewijzing van die orders — daarom staat het eerst uit.
Onder de velden telt een paneel de laatste dertig dagen: vastgelegde orders, die de browser bevestigde, die de winkel terughaalde, die nog wachten. Een knop vraagt Google de inhoud van een testaankoop te controleren zonder die vast te leggen.
Wat er in de artikelen komt
| Veld | Wat het doet |
|---|---|
| Prijzen zijn inclusief btw | Moet overeenkomen met de basis die je Google-rapporten gebruiken. |
| Aankoopwaarde is inclusief verzending | Verandert alleen de waarde van de aankoop. |
| Productattribuut gebruikt als item_id | Gebruik dezelfde identificator als je productfeed, anders koppelt Google de artikelen niet. |
| Productattribuut gebruikt als item_brand | Elk productattribuut. |
| Voeg de productcategorieën toe | Zet de categorie in elk artikel. |
| Maximaal aantal artikelen in view_item_list | Voorkomt dat een lange categorie een enorme gebeurtenis verstuurt. |
| Stuur ook de klassieke remarketingsleutels | Voor containers die de oude sleutels nog lezen. |
| Te negeren IP-adressen | Met komma's gescheiden. Vanaf die adressen vertrekt geen enkele gebeurtenis — het kantoor, bijvoorbeeld. |
| Aangepaste dimensies | Paren van productattribuut en GA4-parameternaam. De parameter reist mee in elk artikel van elke gebeurtenis. In GA4 moet hij als aangepaste dimensie op artikelniveau worden gedeclareerd, anders komt hij aan maar is hij niet in de rapporten te zien. |
| Extra naam voor de unieke gebeurtenis-id | Voor containers waarvan de triggers die id onder een andere naam lezen. Dezelfde waarde reist onder beide namen, dus op de dag van de omschakeling verander je niets in de container. |
Veelvoorkomende problemen
Ik heb de container-ID ingevuld maar zie niets in Google Tag Manager. Controleer of Enable op Yes staat in de scope die je bekijkt, of de ID de vorm GTM-XXXXXXX heeft, en in production-modus of je de compile, de static deploy en een cache flush hebt gedaan. In de preview van Google Tag Manager zie je de gebeurtenissen aankomen; komen ze aan en blijven de rapporten leeg, dan zit het probleem in de tags binnen de container.
Eén gebeurtenis vuurt nooit. Tien van de veertien horen bij de winkelgebeurtenissen: de sleutel gaat in de licentiegroep. Zonder die blijft de winkel de vier basisgebeurtenissen sturen.
De checkoutgebeurtenissen komen allemaal samen aan op de bedankpagina. Normaal bij een checkout op één pagina: de gebeurtenis wordt vastgelegd zodra de klant kiest en afgeleverd bij de volgende paginalading, wat daar de bedankpagina is. In Analytics blijven ze in hetzelfde bezoek en in de juiste volgorde, vóór de aankoop.
De cijfers kloppen niet met Analytics of Google Ads. Controleer de btw-basis, of verzending in de aankoopwaarde hoort, en of het attribuut dat als item_id dient de identificator van je productfeed is.
De aankoop kwam twee keer aan. Niet van de module: de bedankpagina herladen herhaalt de gebeurtenis niet. Zoek een tweede tag die dezelfde aankoop stuurt — bijvoorbeeld een oude Google Ads-conversie die in Magento nog onder Sales → Google API staat.