Jorn heeft vanuit Mediya de GTM-check gedaan en per punt een actie voorgesteld. Jij hebt per punt de stand bijgehouden en bij vier punten een vraag gesteld. Die beantwoorden we hieronder, en in hoofdstuk 03 staat per container precies wat er aangepast moet worden. Daarnaast hebben we vandaag de live meetcode op shoeby.nl zelf nagekeken, om te zien of de aanpassingen ook echt live staan.
01 · Stand van zaken
02 · Jouw vier vragen
Jouw vraag: waarom is dit zo gebouwd, waarvoor wordt het gebruikt, en hoe pas je het goed aan?
Wat er gebeurt. Na een bestelling worden naam, e-mailadres, telefoonnummer en adres van de klant 30 dagen lang als gewone, leesbare tekst in cookies op shoeby.nl gezet. In de live meetcode zien we dat de tags die cookies teruglezen (visitorEmail, visitorPhone, visitorStreet, visitorPostalCode en meer) en doorgeven aan Google Ads, Meta en Google Analytics.
Waarom het waarschijnlijk zo gebouwd is. Google Ads en Meta herkennen een aankoop beter als ze bij die aankoop ook het e-mailadres of telefoonnummer krijgen. Dat heet Enhanced Conversions bij Google en advanced matching bij Meta, en het levert meer gemeten aankopen op. Bij een gastbestelling staan die gegevens niet in de meetcode op de bedankpagina. De oplossing die gekozen is: de gegevens in een cookie bewaren, zodat de tags ze kunnen oppakken. Het doel is dus goed. De plek is verkeerd. Wie het gebouwd heeft, kan dit bevestigen.
Waarom het weg moet.
Ons advies: stoppen, opruimen en vervangen. Zonder verlies aan meetkwaliteit, als de vervanging tegelijk live gaat.
setCookies.EnhancedConversionGuest uitzetten, zodat er geen nieuwe cookies bijkomen.visitorHashedEmail), daar kan op worden voortgebouwd.Inspanning: een paar uur inclusief testen. Met het oog op Shopify: daar is dit niet meer nodig, omdat de checkout en de orderkoppeling de klantgegevens direct aanleveren. Dus nu klein en netjes oplossen, niet groot verbouwen.
Jouw vraag: is dit nodig, en hoe richt je het dan anders in?
Wat er speelt. In de servercontainer staan de sleutels waarmee Shoeby gegevens naar Meta, TikTok, Snapchat en andere kanalen stuurt. Die staan als leesbare tekst in de tags. Iedereen die de container mag inzien, kan ze kopiëren. Met zo'n sleutel kan iemand namens Shoeby aankopen naar een kanaal sturen. Dat vervuilt de cijfers en de biedstrategie. De sleutels verlopen meestal niet vanzelf.
Ons advies: ja, nodig, maar niet urgent. Er is geen lek, wel een deur die openstaat. Twee dingen nu, één bij Shopify.
Inspanning: een tot twee uur voor stap 1 en 2.
Jouw vraag: in welke container, tag en versie zien jullie enableEnhancedMatch = false?
Waar het staat. Niet in de webcontainer. In de live webcontainer (GTM-TK64Z4J, versie 280) staat Enhanced Conversions juist aan, in de Google Ads-conversietag voor aankopen. De uitgeschakelde instelling zit in de servercontainer op shby.shoeby.nl, in de Google Ads-tag die de aankoop vanaf de server verstuurt. Jorn zag dit in de servercontainer en geeft de exacte tagnaam en het versienummer door.
Wat dit voor jullie betekent. Dit is geen fout die nu opgelost moet worden. Ons advies in de sheet was juist: niet zomaar aanzetten. Aan de browserkant werkt het. Aan de serverkant heeft het pas zin als de server ook de gehashte klantgegevens en de toestemming meekrijgt. Dat hangt direct samen met vraag 1.
Ons advies: zo laten staan. In het Shopify-meetfundament richten we het aan de serverkant in, met de klantgegevens uit de order zelf.
Jouw vraag: is dit nodig? Graag advies.
Wat het is. Google Ads kan per aankoop zien of het om een nieuwe of een bestaande klant gaat. Dan zie je per campagne hoeveel nieuwe klanten hij oplevert. En je kunt het algoritme laten sturen op nieuwe klanten, bijvoorbeeld door daar meer voor te bieden. Nu staat het uit. Dat is geen meetfout.
Waarom het voor Shoeby interessant is. Shoeby heeft een groot bestaand klantenbestand. Zonder dit onderscheid weet je niet of advertentieomzet van nieuwe klanten komt of van klanten die toch al zouden kopen. Voor groei is dat het verschil tussen nieuwe omzet en omzet die je opnieuw inkoopt.
De voorwaarde. Het werkt alleen als het kenmerk per order klopt. Iemand die al jaren in de winkel koopt maar voor het eerst online bestelt, is geen nieuwe klant. Dat vraagt een koppeling met het klantsysteem of een klantenlijst in Google Ads.
Ons advies: niet nu op het huidige platform. Wel meenemen in het Shopify-meetfundament. Daar eerst vier tot zes weken alleen meten, en pas daarna besluiten of de biedstrategie erop stuurt.
03 · Wijzigingen per container
Per wijziging: in welke container, welke tag of variabele, hoe het nu staat, waar het naartoe moet en hoe je test dat het werkt. De webcontainer hebben we zelf uitgelezen. Tag-ID's zie je in GTM terug in de adresbalk als je de tag opent, bijvoorbeeld …/tags/882. De servercontainer is niet openbaar. Daar gebruiken we de tag- en variabelenamen uit Jorns check.
shby.shoeby.nl · draait op Google Cloud · namen uit Jorns check
setCookies.EnhancedConversionGuestvisitor…-cookies verschijnen.const setCookie = require('setCookie');
const getCookieValues = require('getCookieValues');
const namen = ['visitorEmail', 'visitorName', 'visitorLastName',
'visitorPhone', 'visitorStreet', 'visitorPostalCode',
'visitorCity', 'visitorCountry'];
namen.forEach(function (naam) {
if (getCookieValues(naam).length) {
setCookie(naam, '', {
domain: data.cookieDomain, // zelfde domein als in S1
path: '/',
'max-age': 0,
secure: true,
samesite: 'Lax'
});
}
});
data.gtmOnSuccess();
Rechten in het sjabloon: Reads cookie values en Sets a cookie voor deze namen. Trigger: elk page_view-verzoek van shoeby.nl. 35 dagen laten draaien, daarna tag en sjabloon verwijderen.visitor…-cookies weg.ad_storage is gelijk aan granted. Die parameter stuurt de Google-tag in de webcontainer al mee.js.adRedactioncookiesMark = false) waar een vergelijking hoort. Gemeld als aangepast.cookiesMark === false. De variabele moet true geven als marketing niet geaccepteerd is.true, geaccepteerd geeft false.event_id. Dat is de waarde die de GA4-purchase uit de webcontainer meestuurt en die Meta al gebruikt. Daarmee horen W2 en W3 bij deze wijziging.GTM-TK64Z4J · live versie 280 · zelf uitgelezen op 6 oktober
Purchase2. Vuurt bij elke sendTransaction.ttq.track("CompletePayment", …)event_id, dus TikTok kan browser en server niet koppelen.event_id mee in de GA4-purchase. Laat de bestaande waarden staan.
<script>
ttq.track("CompletePayment", {
value: "{{waarde, zoals nu}}",
currency: "EUR",
content_ids: "{{artikelnummers, zoals nu}}",
content_type: "product",
description: "order"
}, {
event_id: "{{Event ID}}" // zelfde als Meta Purchase
});
</script>event_id. In de preview van de servercontainer staat dezelfde waarde.client_dedup_idclient_dedup_id vullen met dezelfde Event ID-variabele als de Meta Purchase-tag. transaction_id blijft het ordernummer.shby.shoeby.nl) als parameter analytics_storage wordt meegestuurdstatistics == 1 || marketing == 1: granted bij statistiek óf marketing.function () {
var c = window.CookieConsent && window.CookieConsent.consent;
return c && c.statistics === true ? "granted" : "denied";
}
In de servercontainer nakijken welke tags of triggers op Event Data analytics_storage sturen. Die gaan daarna vanzelf goed.denied zijn.visitorCountry, visitorCity, visitorStreet, visitorLastName, visitorPhone, visitorPostalCode, visitorName en visitorEmail (cookie). Ze worden gebruikt door de Google Ads-gebruikersgegevens (Enhanced Conversions), de Meta Purchase-tags (advanced matching) en de user_data in de Google-tag.visitorEmail), de gehashte versie ook (visitorHashedEmail).04 · Alle punten
| # | Punt | Jouw notitie | Wat wij live zien op 6 oktober | Status |
|---|---|---|---|---|
| 1 | Klantgegevens leesbaar in cookies | Vraag om advies | De tags lezen naam, e-mail, telefoon en adres uit leesbare cookies. | Zie vraag 1 |
| 2 | Snapchat meet zonder marketingtoestemming | Aangepast | De Snapchat-tags in de browser vuren alleen bij marketingtoestemming. De servertags zijn niet openbaar, die kunnen we niet zien. | Bewijs nodig |
| 3 | Fout in variabele voor advertentietoestemming | Aangepast | In de webcontainer staat de vergelijking goed. De servervariabele is niet openbaar. | Bewijs nodig |
| 4 | Statistiektoestemming hangt ook af van marketing | Staat goed | De toestemmingsinstelling voor Google klopt: alleen statistiek. Maar de Google-tag stuurt nog een los veld analytics_storage naar de server met de oude regel, statistiek óf marketing. | Half goed |
| 5 | Meta Purchase2 naast Purchase | Gepauzeerd | Staat in de live versie 280 nog actief op elke aankoop. | Niet live |
| 6 | Google Ads aankoop via browser en server | Geen dubbeltelling | De browsertag stuurt het ordernummer mee, waarop Google ontdubbelt. | Akkoord |
| 7 | Sleutels leesbaar in servercontainer | Vraag om advies | Servercontainer is niet openbaar. | Zie vraag 2 |
| 8 | Enhanced Conversions alleen in browser | Vraag: waar? | Webcontainer: staat aan. De uitgeschakelde instelling zit aan de serverkant. | Zie vraag 3 |
| 9 | Nieuwe of bestaande klant | Vraag om advies | Staat uit in de browsertag. | Zie vraag 4 |
| 10 | Productrapportage alleen via server | Prima zo | Staat uit in de browsertag, zoals bedoeld. | Akkoord |
| 11 | TikTok-aankoop zonder koppel-ID | Aangepast | De live TikTok-aankooptag stuurt nog geen event_id mee. TikTok kan browser en server dus nog niet aan elkaar koppelen. | Niet live |
| 12 | Snapchat-aankoop zonder koppel-ID | Aangepast | De browsertag stuurt nu een koppel-ID en het ordernummer mee. De koppel-ID komt uit een andere variabele dan de ID die naar de server gaat. | Check server |
Hoe we dit hebben gecontroleerd. De webcontainer van shoeby.nl is openbaar. We hebben op 6 oktober de gepubliceerde versie opgehaald (GTM-TK64Z4J, versie 280) en de tags, triggers en variabelen uitgelezen. Bij punt 5 en 11 kan het zijn dat de aanpassing wel in een werkruimte staat, maar nog niet is gepubliceerd. De servercontainer is niet openbaar. Die punten kunnen we pas toetsen met leestoegang of een export.
05 · Vervolg
Samenhang met Shopify. Punt 1, 7, 8 en 9 lossen we nu klein op en richten we in het Shopify-meetfundament structureel in: klantgegevens uit de order, sleutels in afgeschermde opslag, Enhanced Conversions aan de serverkant en het onderscheid tussen nieuwe en bestaande klanten.