Geschreven door
Ira Holubovska
Voordat ze een aankoop doen, hebben klanten contact met merken via verschillende kanalen, zowel online als offline. Dit kan het voor marketeers en analytics-specialisten lastig maken om deze interacties op één plek bij te houden. Standaardtools zoals Google Analytics of server-side tracking voor Matomo kunnen offline gebeurtenissen vaak niet bijhouden. Om dit probleem op te lossen, gebruikt men meestal Customer Data Platforms (CDP).
Een manier om een CDP te gebruiken is door een kant-en-klare tool aan te schaffen, wat kostbaar kan zijn. Een andere optie is om uw eigen CDP te bouwen. In deze blogpost laten we zien hoe u een eenvoudige versie van een CDP bouwt met behulp van de server Google Tag Manager en een database.
Met deze setup kunt u al uw klantinformatie op één plek combineren, waardoor u klanten beter leert begrijpen en effectiever kunt benaderen. Of u nu nieuw bent met tracking of een ervaren specialist bent: deze handleiding kan u helpen een CDP te creëren dat de manier waarop u klantdata beheert aanzienlijk verbetert.
De server Google Tag Manager-container ontvangt verzoeken voor alle gebruikersinteracties, zowel online als offline. U kunt standaard clients zoals GA4 of Data Client gebruiken om online gebeurtenissen van web-GTM te ontvangen. Om offline gebeurtenissen op te halen, kunt u webhooks gebruiken. Verderop in deze blog laat ik zien hoe u webhookdata verstuurt en debugt binnen sGTM.
Ongeacht het type data dat sGTM ontvangt, slaat het de data op in de database. Er zijn verschillende databases waarmee sGTM kan worden geïntegreerd, bijvoorbeeld Firebase, Supabase (veel goedkoper dan Firestore) of Data Store. Hier zal ik de Stape Data Store gebruiken, aangezien dit een ingebouwde functionaliteit binnen Stape is en gratis is voor betalende Stape-klanten (Pro-abonnementen of hoger).
Naast sGTM en de store gebruiken we ook een unieke gebruikers-ID, wat helpt om data van één gebruiker in hetzelfde document op te slaan.
1. Databron (CRM, SDK, CMS, mobiele app, website, enz.).
2. Server GTM-container.
3. Database (in deze handleiding gebruik ik Data Store. U kunt ook Firestore of Supabase gebruiken, waarvoor Stape de Supabase writer tag heeft gemaakt).
4. Om data uit de database te lezen/schrijven kunnen deze sGTM-templates worden gebruikt:
5. Unieke gebruikersidentificatoren. In deze handleiding gebruik ik een unieke User ID of WordPress-gebruikers-ID die de Stape WordPress-plugin genereert.
Zo stroomt gebruikersdata van de databron (CRM) naar het CDP:

De methode voor het ontvangen van data is afhankelijk van hoe u data naar sGTM verzendt. Dit zijn de drie manieren om data te verkrijgen:
Dit is het lastigste en meest cruciale onderdeel. Om een goed CDP te bouwen, moet u over nauwkeurige data beschikken over gebruikers en hun interacties met uw merk. Het CDP moet actuele informatie en duidelijke, niet-gedupliceerde data bevatten. U heeft een geschikte User ID nodig om zo'n systeem van gebruikersprofielen op te bouwen.
Voor geïdentificeerde gebruikers kunt u een e-mailadres of interne ID gebruiken die over verschillende systemen heen kan worden ingezet. Als een gebruiker niet is geïdentificeerd, kan dit een Stape User ID zijn die bestaat uit een hash van:
Als uw merk meerdere domeinen beheert, kunt u ook de optie Cross-domain ID inschakelen in de User ID-power-up. Dit genereert een extra ID (X-Stape-Cross-Domain-Id) op basis van dezelfde signalen maar zonder hostnaam, zodat dezelfde niet-geïdentificeerde gebruiker één ID krijgt voor al uw domeinen die aan de servercontainer zijn gekoppeld. Dit helpt dubbele profielen in uw CDP te voorkomen.
Als u vanwege privacywetgeving uw User ID unieker wilt maken, kunt u een afhankelijke variabele toevoegen. Dit kan een dag, maand, week of jaar zijn. Het hangt er allemaal vanaf hoe uniek de ID moet zijn.
We gebruiken de reStore variable of de Stape Store Writer Tag en Stape Store Lookup om gebruikersprofielen uit de verzoeken en database samen te voegen en te koppelen. Kopieën van deze templates zijn ook beschikbaar op Stape GitHub.
Writer tags en lookup variables spreken voor zich. Met deze twee templates kunt u data wegschrijven naar en uitlezen uit de Data Store.
De reStore variable identificeert eerst of de gebruiker in de database bestaat. Eerst haalt de variabele alle gebruikersidentificatoren uit onze gebeurtenis op (e-mailadres, telefoonnummer of client-ID). Vervolgens stuurt deze een query naar de Store om klanten te selecteren die een van dergelijke identificatoren hebben. Als er informatie over de klant in de database staat, retourneert deze de data over deze klant.

Wanneer een variabele de respons van de Store ontvangt, voegt deze die samen met een binnenkomend verzoek. Als er bijvoorbeeld geen veld city bestaat, wordt dit veld uit de Store gebruikt. Als binnenkomende verzoeken wel een veld city hebben, maar de Store dit niet heeft of de waarde afwijkt, dan worden de gegevens uit het verzoek voor dit veld naar de store geschreven. Deze variabele maakt een nieuwe entiteit aan als een klant gedeeltelijk in de store wordt gevonden.

Zodra de gegevens in sGTM zijn verwerkt en geformatteerd naar de sGTM-indeling, kunt u deze gebruiken om te verzenden naar elke gewenste leverancier, zoals Meta, TikTok, Google Ads of Analytics. Let goed op de gebruikersgegevens die in de verzoeken worden verzonden.
Foutopsporing in sGTM is lastig, maar offline gebeurtenissen kunnen nog ingewikkelder zijn. We bespreken hoe u het volgende kunt gebruiken:
Ik zal twee usecases presenteren om te demonstreren hoe Data Store kan worden gebruikt. We hebben gemerkt dat dit de populairste scenario's zijn voor klanten van Stape.
1. Configureer User ID. Ik zal de Stape User ID-power-up gebruiken die helpt om gebruikers aan klanten te koppelen.
a. Log in op uw Stape-account en schakel de power-up in. Open hiervoor de sGTM-container, klik op het tabblad Power-ups, open User ID, zet de schakelaar aan en sla op.

b. Maak in de server-GTM-container een variabele aan die de User ID ophaalt uit de verzoekheaders op de server.

2. Schrijf gegevens naar de database bij de purchase-gebeurtenis. Zorg ervoor dat u een Stape User ID toevoegt aan de gebeurtenisgegevens.
a. Voeg een Stape store writer-tag toe aan de sGTM-templategalerij (download deze van GitHub en importeer deze in het gedeelte met tagtemplates van sGTM) en maak een tag om gebeurtenisgegevens te schrijven bij een purchase-gebeurtenis. Ik schrijf alle gebeurtenisgegevens en voeg een Stape User ID toe aan het record in de store. Dit hebben we nodig om gebruikers samen te voegen bij een pageview-gebeurtenis.

b. Als de tag correct heeft gewerkt, ziet u een record in uw database dat lijkt op de onderstaande schermafbeelding.

3. Verrijk pageview-eventdata met de opgeslagen data in de Data Store.
a. Om gebruikers van het pageview-event en degene die we in de database opslaan samen te voegen, gebruiken we opnieuw de Stape User ID en de Stape Store Lookup-variabele die data uit de store kan ophalen. Voeg de Stape Store Lookup-variabele toe aan de sGTM-variabeletemplategalerij. Ga naar het onderdeel sGTM-templates om het template van GitHub te downloaden. Klik op Nieuw in het onderdeel Variabelen en klik vervolgens op Importeren.

b. Maak een Stape Store Lookup-variabele aan voor de parameters die u wilt herstellen: voeg het documentpad en de padnaam toe.

c. Voeg een Lookup-variabele toe aan de pageview-tag.

4. Test de setup. U zou verrijkte gebruikersdata moeten zien in de tag die wordt geactiveerd in de sGTM-container.

In deze use case wil ik offline eventdata naar een advertentienetwerk sturen. Bij het verzenden van conversiedata naar het platform van de adverteerder is het verzenden van een click ID het cruciale element. Een click ID is een ID die aan de URL of cookies wordt toegevoegd wanneer de gebruiker op de advertentielink klikt. Met behulp van de click ID kan het advertentienetwerk de conversie eenvoudig toeschrijven aan de advertentiecampagne.
De Click ID's zijn beschikbaar voor alle webgebeurtenissen, maar als u conversiegegevens van het CRM of CMS wilt gebruiken om naar het advertentienetwerk te sturen, zijn Click ID's in de meeste gevallen niet beschikbaar.
Om deze optie te configureren, gebruik ik de Stape restore variable om gegevens bij een pageview naar de Data Store te schrijven en gegevens bij purchase-gebeurtenissen te herstellen. Daarnaast heb ik een transformatie in de sGTM-container nodig om de gebeurtenis die naar Facebook wordt verzonden te verrijken. Een ander cruciaal element is het matchen van gebruikers bij pageview-gebeurtenissen met gebruikers in offline purchase-webhooks. Om dit te doen, moet u een gebruikersidentificator gebruiken die hetzelfde blijft bij web-pageview-gebeurtenissen en offline aankopen.
Bij standaard-CMS'en is dit eenvoudig te realiseren, omdat ze dit type identificator meestal in cookies hebben. Voor maatwerkwebsites zult u ontwikkelaars moeten vragen om deze parameters toe te voegen. Mijn configuratie is uitgevoerd op een WordPress-site. De Stape WordPress-plugin verzendt een unieke User ID bij webgebeurtenissen en voegt deze toe aan de webhook. Met behulp van deze User ID kan ik gebruikers bij een pageview en purchase-webhooks in de database matchen.
1. Ontvang de purchase-webhook van een offline gegevensbron binnen sGTM.
a. Verzend een webhook vanuit het CRM. Ik gebruik hiervoor de Stape WordPress app. Ga naar het tabblad Webhooks en voeg de URL van de server-GTM-container toe. Dit is het domein dat u gebruikt voor uw server-GTM-container. We raden aan om een aangepast domein binnen uw websitedomein in te stellen, omdat dit het instellen van first-party cookies mogelijk maakt. Vergeet niet de selectievakjes aan te vinken.

b. Voeg de Data client toe aan de sGTM-client-templates en configureer deze om webhooks op te halen die u vanuit het CRM verzendt. Maak hiervoor een Data Client-template aan en voeg een Webhook-pad toe.

c. Configureer de sGTM Preview Header config power-up op Stape om inkomende webhooks in sGTM te debuggen. Ga naar de sGTM-preview, klik op de drie puntjes in de rechterbovenhoek en klik op Send requests manually. Kopieer de X-Gtm-Server-Preview HTTP-header en plak deze in de sGTM Preview Header config power-up.


d. Open de debugger van sGTM en test of deze webhooks heeft ontvangen. Zodra de webhook is geactiveerd, zou u het inkomende verzoek in sGTM moeten zien en moeten zien dat de Data Client dat verzoek heeft geclaimd.

2. Schrijf de parameters fbc, fbp en client ID bij de pageviews-gebeurtenis naar de database.
In deze stap laat ik zien hoe u fbc- en fbp-parameters naar de database schrijft met behulp van de reStore-variabele. Hiervoor gebruiken we een Facebook-tag voor paginaweergaven om pageview-gebeurtenissen te triggeren en een transformatie die gegevens naar de opslag schrijft via de restore-variabele.
a. Voeg een restore-variabele toe aan de sGTM-variabelen via deze link. U moet deze downloaden van GitHub, een nieuw variabelensjabloon aanmaken in sGTM en op importeren klikken.
b. Configureer de restore-variabele. Deze moet een WordPress-gebruikers-ID als identificatie gebruiken en fbp, fbc en het WordPress-gebruikers-ID naar de opslag wegschrijven.

c. Maak een transformatie aan die gebeurtenisgegevens bij Facebook-pageview-gebeurtenissen verrijkt met behulp van de restore-variabele en voeg deze transformatie toe aan uw FB-pageview-tag.

d. Test de configuratie. Als alles correct is geconfigureerd, zou u gegevens moeten zien die zijn vastgelegd in de Data Store.

e. Stel een Facebook-purchase-event in dat wordt geactiveerd telkens wanneer er een webhook wordt ontvangen. Om dit event te verrijken met de gegevens uit de Data Store, moeten we een transformatie gebruiken en dezelfde restore-variabele die we hebben gebruikt voor de transformatie op een FB-pageview-event. Hiermee wordt de vereiste parameter bij een purchase-event geëxtraheerd. Maar om de gegevens te verzenden in de vorm die Facebook herkent, moeten we een object extractor-variabele gebruiken die het vereiste object uit de restore-variabele extraheert.



f. Test uw configuratie. Als alles correct werkt, zou u moeten zien dat de fbc- en fbp-parameters succesvol naar Facebook of bij een offline purchase-event zijn verzonden.


Met behulp van Data Store kunt u een klantendatabase of CDP maken. Het biedt een eenvoudige manier om alle informatie te verzamelen en op te slaan die u van uw klanten kunt verkrijgen, wat u kan helpen betere analytics-formulieren te bouwen of de resultaten van uw betaalde campagnes te verbeteren. Het aanvullen en verrijken van uw klantgegevens kan u helpen inzicht te krijgen in hun gedrag en voorkeuren, wat u vervolgens helpt om uw marketingstrategieën te verbeteren.
Wilt u server-side tracking proberen?
Gratis proberen
Opmerkingen