Wie man Events zu einer anderen dataLayer weiterleitet

Deine Entwickler haben viele Matomo-Events implementiert, aber jetzt bist Du zu GTM & dataLayer migriert. Hier erfährst Du, wie Du diese Events weiterleitest.

Justus

Justus

owntag Gründer

veröffentlicht am 07. März 2022

Das ist wahrscheinlich ein seltenes Problem, aber es kann passieren: Du hast möglicherweise viele Events für einen Typ von Data Layer bereits implementiert, aber jetzt musst Du das System wechseln und der Name deines Data Layer Arrays ändert sich.
Beachte, dass ich bewusst “data layer” schreibe, um auf das Konzept zu verweisen, das von allen Tag Managern verwendet wird, nicht nur speziell dem Google Tag Manager.

Während Du trotzdem darauf abzielen solltest, Deine Implementierung tatsächlich zu ändern, sodass Deine Events direkt zu Deinem gewünschten Data Layer gesendet werden, sind Entwicklerressourcen manchmal schwer zu bekommen und Du musst eine Weile eine Zwischenlösung finden.

Beispiel:
Deine Events werden an Matomos _mtm Array gesendet, aber jetzt müssen sie an das dataLayer Array von Google Tag Manager gesendet werden.

Mit diesem sehr einfachen Code kannst Du Events von einem Array an ein anderes weiterleiten:

// Stell dir vor, das ist dein komplettes Matomo-Code
window._mtm = window._mtm || [];

function proxyDataLayer(sourceDataLayer, targetDataLayer) {
    // Überprüfen, ob es bestehende Events im Ziel-Data Layer gibt
    if (targetDataLayer.length > 0) {
        // Falls ja, speichere sie in einer Variable
        var existingEvents = targetDataLayer;
    }
    targetDataLayer = new Proxy(sourceDataLayer, {});
    // Falls es bestehende Events gibt, füge sie dem neuen Data Layer hinzu
    if (existingEvents) {
        targetDataLayer.push(...existingEvents);
    }
    return targetDataLayer;
}

// Das wäre dein GTM-Code
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
    'event': 'gtm.js',
    'gtm.start': new Date().getTime()
});

// Hier passiert die Magie
window.dataLayer = proxyDataLayer(window._mtm, window.dataLayer);

// Du wirst dies in deinem GTM Preview Mode sehen,
// als ob es in das dataLayer gepusht wurde
window._mtm.push({
    event: "someEvent",
    myVar: "myValue"
});

Und voilà - Deine Events werden nun an das dataLayer von GTM gesendet. Unterdessen werden die Events im Matomo _mtm Array weiterhin vom Matomo Tag Manager verarbeitet.

Ich habe dies nur in Kombination mit GTM und Matomo getestet, aber es sollte auch mit den meisten anderen Lösungen funktionieren.

Werde zum Server Side Tagging Profi mit owntag

Übernimm die Kontrolle über deine digitale Datenerhebung mit Server Side Tagging und dem Server Side GTM – einfach gehostet mit owntag.

App screenshot