Wenn Ihre Website Geschäftsereignisse an window.dataLayer sendet, weil Sie Google Tag Manager für Google Analytics eingerichtet haben, kommen diese Ereignisse bereits bei Skomi an. Es gibt nichts umzuschreiben, keinen Adapter zu installieren und keinen zweiten Push neben den ersten zu setzen.

Diese Seite beschreibt, was passiert, was nicht, und welche Grenzen man kennen sollte, bevor man sich darauf verlässt.

Nichts zu tun

Installieren Sie das Snippet. Skomi hängt sich an dataLayer und liest, was hineingeschoben wird.

Beide Formen funktionieren:

// die Objektform
dataLayer.push({ event: 'purchase', value: 49.00, currency: 'EUR' });

// gtag, das seine eigenen Argumente statt eines Objekts hineinschiebt
gtag('event', 'purchase', { value: 49.00, currency: 'EUR' });

Sie können GTM behalten. Sie können Google Analytics neben Skomi weiterlaufen lassen, während Sie beide vergleichen; das ist der vernünftige Weg umzuziehen, und nichts hier steht ihm im Weg.

Warum es funktioniert, welches Skript auch zuerst lädt

GTM ersetzt dataLayer.push durch seine eigene Hülle, sobald gtm.js fertig geladen hat, und beide Skripte laden asynchron. Bei einer einfachen Zuweisung würde das Skript, das als zweites lädt, die Hülle des anderen überschreiben und dessen Ereignisse still verschlucken.

Skomi installiert push stattdessen als Zugriffsmethode; GTMs Zuweisung kommt also im Setter an und wird zu der Funktion, an die Skomi weiterreicht. Unsere bleibt vorn, wie das Rennen auch ausgeht. Sie müssen Ihre Tags nicht sortieren.

Was erfasst wird

Der Ereignisname: event am Objekt, oder das zweite Argument von gtag.

Jede Eigenschaft, zu Pfaden mit Punkten abgeflacht, denn die Eigenschaften eines Ereignisses werden als Text gespeichert:

dataLayer.push({
  event: 'purchase',
  transaction_id: 'ORD-1234',
  value: 49.00,
  currency: 'EUR',
  ecommerce: { items: [{ item_name: 'Pro plan', price: 49.00 }] }
});

kommt an als transaction_id, value, currency, ecommerce.items.0.item_name, ecommerce.items.0.price.

Der Geldbetrag, gelesen aus value oder aus ecommerce.value. Zeichenketten werden angenommen, denn dataLayer-Werte kommen oft als Text aus einer Vorlage.

Die Währung, aus currency oder ecommerce.currency auf demselben Weg. Ein GA4-E-Commerce-Ereignis trägt { value, currency } ohnehin zusammen; eine für Google eingerichtete Website sendet Skomi also einen Kauf samt Betrag und Währung, ohne es zu wissen.

Die Bestellnummer. Der Server liest transaction_id aus den Eigenschaften, und eine Wiederholung derselben Nummer wird verworfen statt gezählt, was wichtiger ist, als es klingt. Eine Bestätigungsseite löst bei jedem Laden aus: ein Neuladen, ein Zurück-Knopf, das Wiederöffnen der E-Mail eine Woche später. Ohne Bestellnummer sind das drei Verkäufe.

Was nicht erfasst wird

GTMs eigene Lebenszyklus-Ereignisse. Alles unter dem Namensraum gtm. und die Schlüssel, mit denen GTM seinen eigenen Versand steuert: event, eventCallback, eventTimeout, eventModel, _clear. Sie sagen nichts über Ihr Geschäft und würden die echten Ereignisse um ein Mehrfaches übertreffen.

Alles jenseits der Grenzen. Diese Grenzen gibt es wirklich, und man sollte sie kennen, bevor man auf sie stößt:

Grenze Wert
Eigenschaften je Ereignis 25
Verschachtelungstiefe 3 Ebenen
Name einer Eigenschaft 64 Zeichen
Wert einer Eigenschaft 255 Zeichen
Bestellnummer 128 Zeichen

⚠ Ein großes ecommerce.items-Array passt nicht. Jeder Posten steuert mehrere Eigenschaften bei; eine Bestellung mit zehn Positionen liegt also weit über fünfundzwanzig, und der Rest wird verworfen statt je Posten gekürzt. Wenn Ihnen die Positionsdetails wichtig sind, gehören sie in die Berichte Ihres eigenen Shops; Skomi hält die Bestellung fest, ihren Wert und ihre Währung, nicht ihren Inhalt. Es gibt in Skomi nirgends eine Produktdimension.

Googles eigene Anbindungen. Consent-Mode-Signale, Zielgruppen-Export, Google-Ads-Verknüpfung. Die liegen zwischen GTM und Google, und Skomi ist nicht Teil davon.

Wo die Ereignisse auftauchen

Unter ihren eigenen Namen, neben denen, die Skomi selbst erfasst. Jedes Ereignis hält fest, woher es kam: datalayer für diese, api für einen handgeschriebenen skomi.track()-Aufruf, auto für die ausgehenden Links und Downloads, die Skomi ungefragt erfasst, damit Sie ein Ereignis, das Sie verlangt haben, von einem unterscheiden können, das Sie nur zugelassen haben.

Machen Sie aus jedem davon ein Ziel, um dafür eine Konversionsrate zu bekommen.

Wenn Sie es lieber direkt aufrufen

skomi.track('purchase', { plan: 'pro' }, 49.00, 'EUR', 'ORD-1234');

Name, Eigenschaften, Wert, Währung, Bestellnummer, die letzten drei optional. Nehmen Sie es für Ereignisse, die keinen Grund haben, durch GTM zu gehen. Eine Website, die gar keinen dataLayer hat, braucht keinen.

Prüfen, ob es funktioniert hat

Schieben Sie von der Konsole auf der echten Domain ein Testereignis hinein:

dataLayer.push({ event: 'test_event', value: 1, currency: 'EUR' });

Sehen Sie dann in Ihren Ereignissen nach test_event. Wenn es nicht da ist, gehen Sie die Prüfliste für ein Snippet, das nicht funktioniert durch, und beachten Sie, dass localhost nichts erhebt, weil es nicht die Domain ist, die Sie registriert haben.