8. Okt. 2025
Verfasst von
Ira Holubovska
Vor einem Kauf interagieren Kunden über verschiedene Kanäle mit Marken, sowohl online als auch offline. Dadurch kann es für Marketing- und Analytics-Experten schwierig sein, diese Interaktionen an einem zentralen Ort im Blick zu behalten. Standard-Tools wie Google Analytics oder serverseitiges Tracking mit Matomo können Offline-Events oft nicht erfassen. Zur Lösung dieses Problems werden üblicherweise Customer Data Platforms (CDP) eingesetzt.
Eine Möglichkeit zur Nutzung einer CDP ist der Kauf eines vorgefertigten Tools, was kostspielig sein kann. Eine andere Option besteht darin, eine eigene CDP aufzubauen. In unserem Blogbeitrag zeigen wir Ihnen, wie Sie eine einfache Version einer CDP mithilfe des serverseitigen Google Tag Manager und einer Datenbank erstellen.
Diese Einrichtung ermöglicht es Ihnen, alle Kundeninformationen an einem Ort zusammenzuführen, sodass Sie Ihre Kunden besser verstehen und effektiver ansprechen können. Egal, ob Sie neu im Bereich Tracking sind oder bereits erfahrener Experte: Dieser Leitfaden hilft Ihnen dabei, eine CDP zu erstellen, die Ihr Management von Kundendaten deutlich verbessert.
Der serverseitige Google Tag Manager-Container empfängt Anfragen zu allen Nutzerinteraktionen, egal ob online oder offline. Sie können Standard-Clients wie GA4 oder den Data Client verwenden, um Online-Events aus dem Web-GTM zu empfangen. Um Offline-Events abzurufen, können Sie Webhooks nutzen. Später im Beitrag zeige ich, wie Sie Webhook-Daten in sGTM senden und debuggen.
Unabhängig von der Art der empfangenen Daten speichert sGTM diese in der Datenbank. Es gibt mehrere Datenbanken, in die sGTM integriert werden kann, beispielsweise Firebase, Supabase (viel günstiger als Firestore) oder Data Store. Hier verwende ich den Stape Data Store, da es sich um eine integrierte Funktion von Stape handelt, die für zahlende Stape-Kunden (Pro-Tarife oder höher) kostenlos ist.
Neben sGTM und dem Store nutzen wir auch eine eindeutige Nutzerkennung, mit deren Hilfe Daten eines Nutzers im selben Dokument gespeichert werden können.
1. Datenquelle (CRM, SDK, CMS, mobile App, Website usw.).
2. Server-GTM-Container.
3. Datenbank (In diesem Leitfaden verwende ich den Data Store. Sie können auch Firestore oder Supabase nutzen, wofür Stape das Supabase Writer Tag entwickelt hat).
4. Um Daten aus der Datenbank zu lesen/schreiben, können diese sGTM-Vorlagen verwendet werden:
5. Eindeutige Nutzerkennungen. In diesem Leitfaden verwende ich eine eindeutige User ID oder die WordPress-Nutzer-ID, die das Stape WordPress-Plugin generiert.
So fließen die Nutzerdaten von der Datenquelle (CRM) zur CDP:

Die Methode zum Empfangen von Daten hängt davon ab, wie Sie Daten an sGTM senden. Dies sind die drei Möglichkeiten zum Abrufen von Daten:
Dies ist der kniffligste und entscheidendste Teil. Um eine ordnungsgemäße CDP aufzubauen, benötigen Sie präzise Daten über die Nutzer und deren Interaktionen mit Ihrer Marke. Die CDP sollte aktuelle Informationen und saubere, nicht duplizierte Daten enthalten. Sie benötigen eine geeignete User ID, um ein solches System von Nutzerprofilen aufzubauen.
Für identifizierte Nutzer können Sie eine E-Mail-Adresse oder eine interne ID verwenden, die systemübergreifend genutzt werden kann. Wenn ein Nutzer nicht identifiziert ist, kann es sich um eine Stape User ID handeln, die aus einem Hash folgender Daten besteht:
Wenn Ihre Marke mehrere Domains betreibt, können Sie auch die Option „Cross-domain ID“ im Power-up „User ID“ aktivieren. Sie generiert eine zusätzliche ID (X-Stape-Cross-Domain-Id) aus denselben Signalen, jedoch ohne Hostname, sodass derselbe nicht identifizierte Nutzer über alle mit dem Server-Container verbundenen Domains hinweg eine einheitliche ID erhält. Dies hilft, doppelte Profile in Ihrer CDP zu vermeiden.
Wenn Sie Ihre User ID aus Datenschutzgründen noch spezifischer gestalten möchten, können Sie eine zeitabhängige Variable hinzufügen. Das kann ein Tag, Monat, eine Woche oder ein Jahr sein. Es hängt ganz davon ab, wie eindeutig die ID sein soll.
Wir verwenden entweder die reStore-Variable oder das Stape Store Writer Tag und Stape Store Lookup , um Nutzerprofile aus den Anfragen und der Datenbank zusammenzuführen und zu verknüpfen. Kopien dieser Vorlagen sind auch auf Stape GitHub verfügbar.
Das Writer Tag und die Lookup-Variable sind weitgehend selbsterklärend. Mit diesen beiden Vorlagen können Sie Daten in den Data Store schreiben und daraus lesen.
Die reStore-Variable prüft zunächst, ob der Nutzer in der Datenbank vorhanden ist. Zuerst ruft die Variable alle Nutzerkennungen aus unserem Event ab (E-Mail, Telefonnummer oder Client-ID). Anschließend sendet sie eine Abfrage an den Store, um Kunden auszuwählen, die eine dieser Kennungen aufweisen. Liegen in der Datenbank Informationen über den Kunden vor, gibt sie die Daten zu diesem Kunden zurück.

Wenn eine Variable die Antwort aus dem Store erhält, führt sie diese mit einer eingehenden Anfrage zusammen. Wenn beispielsweise kein Feld city vorhanden ist, wird dieses Feld aus dem Store verwendet. Wenn eingehende Anfragen ein Feld city enthalten, der Store dieses jedoch nicht hat oder es sich unterscheidet, werden die Daten aus der Anfrage für dieses Feld in den Store geschrieben. Diese Variable erstellt eine neue Entität, wenn eine Person teilweise im Store gefunden wird.

Sobald die Daten in sGTM verarbeitet und in das sGTM-Format gebracht wurden, können Sie sie an jeden beliebigen Anbieter wie Meta, TikTok, Google Ads oder Google Analytics senden. Achten Sie auf die Nutzerdaten, die in den Anfragen gesendet werden.
Das Debuggen in sGTM ist anspruchsvoll, aber Offline-Ereignisse können noch kniffliger sein. Wir besprechen, wie Sie Folgendes verwenden:
Ich werde zwei Anwendungsfälle vorstellen, um zu zeigen, wie Data Store verwendet werden kann. Nach unserer Erfahrung sind dies die beliebtesten Szenarien für Kundinnen und Kunden von Stape.
1. Konfigurieren Sie die User ID. Ich werde das Stape User ID-Power-up verwenden, das dabei hilft, Nutzende zu Kundenprofilen zusammenzuführen.
a. Melden Sie sich in Ihrem Stape-Konto an und aktivieren Sie das Power-up. Öffnen Sie dazu den sGTM-Container, klicken Sie auf den Tab „Power-ups“, öffnen Sie User ID, aktivieren Sie den Schalter und speichern Sie.

b. Erstellen Sie im Server GTM-Container eine Variable, die die User ID aus den Anfrage-Headern auf dem Server abruft.

2. Schreiben Sie beim purchase-Ereignis Daten in die Datenbank. Stellen Sie sicher, dass Sie den Ereignisdaten eine Stape User ID hinzufügen.
a. Fügen Sie der sGTM-Vorlagengalerie ein Stape Store Writer-Tag hinzu (laden Sie es von GitHub herunter und importieren Sie es in den sGTM-Bereich für Tag-Vorlagen) und erstellen Sie ein Tag, um Ereignisdaten bei einem purchase-Ereignis zu schreiben. Ich schreibe alle Ereignisdaten und füge dem Store-Eintrag eine Stape User ID hinzu. Wir benötigen sie, um Nutzende bei einem pageview-Ereignis zusammenzuführen.

b. Wenn das Tag ordnungsgemäß funktioniert hat, sehen Sie in Ihrer Datenbank einen Eintrag ähnlich wie im folgenden Screenshot.

3. Reichern Sie Pageview-Event-Daten mit den im Datenspeicher gespeicherten Daten an.
a. Um Nutzende aus dem Pageview-Event und diejenigen, die wir in der Datenbank speichern, zusammenzuführen, verwenden wir wieder die Stape User ID und die Stape Store Lookup-Variable, die Daten aus dem Speicher abrufen kann. Fügen Sie die Stape Store Lookup-Variable zur Vorlagengalerie für sGTM-Variablen hinzu. Um die Vorlage von GitHub herunterzuladen, gehen Sie zum Bereich für sGTM-Vorlagen. Klicken Sie im Bereich für Variablen auf „Neu“ und dann auf „Importieren“.

b. Erstellen Sie eine Stape Store Lookup-Variable für die Parameter, die Sie wiederherstellen möchten: Fügen Sie Dokumentpfad und Pfadnamen hinzu.

c. Fügen Sie dem Pageview-Tag eine Lookup-Variable hinzu.

4. Testen Sie die Einrichtung. Sie sollten angereicherte Nutzerdaten in dem Tag sehen, das im sGTM-Container ausgelöst wurde.

In diesem Anwendungsfall möchte ich Offline-Event-Daten an ein Werbenetzwerk senden. Beim Senden von Conversion-Daten an die Plattform des Werbetreibenden ist das Übermitteln einer Click ID das entscheidende Element. Die Click ID ist eine Kennung, die der URL oder den Cookies hinzugefügt wird, wenn auf den Werbelink geklickt wird. Mithilfe der Click ID kann das Werbenetzwerk die Conversion problemlos der Werbekampagne zuordnen.
Die Click-IDs sind für alle Web-Events verfügbar, doch wenn Sie Conversion-Daten aus dem CRM oder CMS an das Werbenetzwerk senden möchten, sind Click-IDs in den meisten Fällen nicht verfügbar.
Um diese Option zu konfigurieren, verwende ich die Stape restore variable, um bei einem Pageview Daten in den Data Store zu schreiben und Daten bei Purchase-Events wiederherzustellen. Darüber hinaus benötige ich eine Transformation im sGTM-Container, um das an Facebook gesendete Event anzureichern. Ein weiteres entscheidendes Element ist das Abgleichen von Nutzern bei Pageview-Events mit Nutzern in Offline-Purchase-Webhooks. Dazu müssen Sie eine Nutzerkennung verwenden, die bei Web-Pageview-Events und Offline-Käufen identisch bleibt.
Bei Standard-CMS lässt sich dies leicht erreichen, da sie diese Art von Kennung normalerweise in Cookies speichern. Bei Kunden-Websites müssen Sie die Entwickler bitten, diese Parameter hinzuzufügen. Mein Setup basiert auf einer WordPress-Website. Das Stape WordPress-Plugin sendet eine eindeutige User ID bei Web-Events und fügt sie dem Webhook hinzu. Mithilfe dieser User ID kann ich Nutzer bei einem Pageview und bei Purchase-Webhooks in der Datenbank abgleichen.
1. Purchase-Webhook von einer Offline-Datenquelle im sGTM empfangen.
a. Senden Sie einen Webhook aus dem CRM. Ich werde dafür die Stape WordPress-App verwenden. Gehen Sie zum Tab Webhooks und fügen Sie die Server GTM-Container-URL hinzu. Dies ist die Domain, die Sie für Ihren Server GTM-Container verwenden. Wir empfehlen die Einrichtung einer benutzerdefinierten Domain innerhalb Ihrer Website-Domain, da dies das Einrichten von First-Party-Cookies ermöglicht. Vergessen Sie nicht, die Kontrollkästchen zu aktivieren.

b. Fügen Sie den Data client zur sGTM-Client-Vorlage hinzu und konfigurieren Sie ihn so, dass er die Webhooks abruft, die Sie aus dem CRM senden. Erstellen Sie dazu eine Data Client-Vorlage und fügen Sie einen Webhook-Pfad hinzu.

c. Konfigurieren Sie das Preview Header config-Power-up im sGTM auf Stape, um eingehende Webhooks im sGTM zu debuggen. Gehen Sie zur sGTM-Vorschau, klicken Sie oben rechts auf die drei Punkte und wählen Sie „Send requests manually“. Kopieren Sie den HTTP-Header X-Gtm-Server-Preview und fügen Sie ihn in das Preview Header config-Power-up im sGTM ein.


d. Öffnen Sie den sGTM-Debugger und prüfen Sie, ob Webhooks empfangen wurden. Sobald der Webhook ausgelöst wird, sollten Sie die eingehende Anfrage in sGTM sehen und feststellen, dass der Data Client diese Anfrage beansprucht hat.

2. Schreiben Sie fbc-, fbp- und Client-ID-Parameter beim pageviews-Event in die Datenbank.
In diesem Schritt zeige ich Ihnen, wie Sie mit der reStore-Variable fbc- und fbp-Parameter in die Datenbank schreiben. Dazu verwenden wir ein Facebook-Pageview-Tag zum Auslösen von Pageview-Events sowie eine Transformation, die Daten mithilfe der reStore-Variable in den Speicher schreibt.
a. Fügen Sie über diesen Link eine reStore-Variable zu den sGTM-Variablen hinzu. Laden Sie diese von GitHub herunter, erstellen Sie eine neue Variablenvorlage in sGTM und klicken Sie auf Importieren.
b. Konfigurieren Sie die reStore-Variable. Sie sollte eine WordPress-User-ID als Kennung verwenden und fbp, fbc sowie die WordPress-User-ID in den Speicher schreiben.

c. Erstellen Sie eine Transformation, die Event-Daten bei Facebook-Pageview-Events mithilfe der reStore-Variable anreichert, und fügen Sie diese Transformation Ihrem Facebook-Pageview-Tag hinzu.

d. Testen Sie das Setup. Wenn alles korrekt konfiguriert ist, sollten Sie im Data Store erfasste Daten sehen.

e. Richten Sie ein Facebook-Purchase-Event ein, das jedes Mal ausgelöst wird, wenn ein Webhook empfangen wird. Um dieses Event mit den Daten aus dem Data Store anzureichern, müssen wir eine Transformation und dieselbe Restore-Variable verwenden, die wir für die Transformation bei einem FB-Pageview-Event verwendet haben. Dadurch wird der erforderliche Parameter bei einem Purchase-Event extrahiert. Um die Daten jedoch in einem Format zu senden, das Facebook erkennt, müssen wir eine Object-Extractor-Variable verwenden, die das erforderliche Objekt aus der Restore-Variable extrahiert.



f. Testen Sie Ihr Setup. Wenn alles korrekt funktioniert, sollten Sie sehen, dass die Parameter fbc und fbp erfolgreich an Facebook oder bei einem Offline-Purchase-Event gesendet wurden.


Mithilfe eines Datenspeichers können Sie eine Kundendatenbank oder CDP erstellen. Er bietet eine einfache Möglichkeit, alle Informationen zu erfassen und zu speichern, die Sie von Ihren Kunden erhalten können, was Ihnen dabei helfen kann, bessere Analyseformulare zu erstellen oder die Ergebnisse Ihrer bezahlten Kampagnen zu verbessern. Das Erweitern und Anreichern Ihrer Kundendaten kann Ihnen helfen, Einblicke in deren Verhalten und Präferenzen zu gewinnen, was wiederum Ihre Marketingstrategien verbessern kann.
Möchten Sie serverseitiges Tracking ausprobieren?
Kostenlos testen8. Okt. 2025
Blog
GA4 Benutzerdefinierte Ereignisse helfen, Nutzerinteraktionen zu erfassen und Ihre Marketingstrategie mit präzisem Event-Tracking zu optimieren.
6. Aug. 2026
Kommentare