So trackst Du ezoic Ads Impressions mit dem Google Tag Manager

ezoic Ads sind so dynamisch, dass Du nicht genau weißt, was sie Deinen Nutzern anzeigen. Hier erfährst Du, wie Du es herausfinden kannst.

Justus

Justus

owntag Gründer

veröffentlicht am 21. Juli 2020

Das Unternehmen ezoic versucht, die Einnahmen aus Display-Anzeigen durch automatisierte Optimierung zu maximieren und dabei die Dinge für Publisher so einfach wie möglich zu halten. Du kannst eine Vielzahl von Anzeigen mit nur einem einfachen Code-Snippet oder einer einfachen Installation eines Wordpress-Plugins zu Deiner Website hinzufügen.
Ich arbeite selbst nicht mit ihnen, aber ich habe von Freunden mehrere Berichte aus erster Hand über sehr signifikante Steigerungen der Anzeigeneinnahmen im Vergleich zu einer ähnlichen Integration von Google AdSense mit sehr geringem Migrationsaufwand erhalten. Öffentliche Ergebnisse eines solchen Vergleichs findest Du bei DevAnswers.co.

Du kannst Dir ein Beispiel für eine ezoic Ads-Implementierung bei goodcalculators.com ansehen (mit dem ich nicht verbunden bin):

Eine Beispiel-Website, die ezoic Ads verwendet

Viele andere Websites, die ezoic Ads auf BuiltWith.com verwenden

Was wir tracken wollen

  • Wie oft Anzeigen angezeigt werden
  • Welche Formate diese Anzeigen haben (Breite x Höhe in Pixel)

Beide Informationen sind nicht statisch und können bei jedem einzelnen Seitenaufruf variieren, da ezoic verschiedene Anzeigepositionen und -formate testet, um die Klickrate und somit die Einnahmen zu maximieren.

Wir möchten auch auto-refreshte Ad Impressions tracken: Wenn ein Nutzer eine Seite für eine Weile aufruft, werden die Anzeigen neu geladen, was als neue Impression zählt.

Leider gibt es keine Möglichkeit, Klicks auf die Anzeigen mit einer JavaScript-basierten Methode zu tracken, da die Anzeigen in iframes eingebettet sind, die sie vom Rest der Seite isolieren und der Google Tag Manager keine Klick-Events innerhalb dieser iframes registriert.

Natürlich bietet ezoic einige Berichte in ihrem Backend an, aber – wie üblich – ist es wertvoll, Daten über Deine Anzeigen am selben Ort zu haben wie alle anderen Verhaltensanalysen (wie Google Analytics). Unten findest Du die Lösung zum Tracken der Impressions Deiner ezoic Ads zusammen mit:

  • Der Breite der Anzeige
  • Der Höhe der Anzeige
  • Dem Namen der Platzierung (die Position, an der die Anzeige angezeigt wurde)

Ein dataLayer-Event für eine solche Impression sieht so aus:

{
  "event": "ezoic.adimpression",
  "ezoic": {
    "adimpression": {
      "width": 970,
      "height": 90,
      "placement": "goodcalculators_com-medrectangle-2"
    }
  }
}
dataLayer-Events für ezoic Ads-Impressions

Schauen wir uns an, wie Du dies erreichen kannst:

Voraussetzungen

Deine ezoic Ads-Implementierung muss so eingerichtet sein, dass die Ad-Container bereits im vom Server bereitgestellten HTML enthalten sind, da das Skript sonst nicht erkennen kann, welche Elemente Anzeigen sind. Du kannst überprüfen, ob diese Ad-Container vorhanden sind, indem Du Deinen Quellcode überprüfst und nach data-ez-name suchst, einem HTML-Attribut, das sie standardmäßig haben:

Ein ezoic Ad-Container

Das Skript

Implementiere das folgende Skript in Deinem Google Tag Manager-Container als benutzerdefiniertes HTML-Tag und füge einen Trigger hinzu, der es so früh wie möglich lädt, aber definitiv vor dem Laden der ezoic Ads.

<script>
(function(){
    var ads = document.querySelectorAll("[data-ez-name]")

    // MutationObservers zu allen Ad-Containern hinzufügen
    ads.forEach(function(ad){
        observer = new MutationObserver(mutationCallback);
        observer.ad = ad
        observer.observe(ad, {
            childList: true,
            subtree: true
        })
    })

    function mutationCallback(mutations, observer) {
        for(var mutation of mutations) {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(function(addedNode) {
                    if (addedNode.nodeName.toLowerCase() == "iframe") {
                        addedNode.addEventListener('load', function(){
                            trackEzoicAdImpression(observer.ad)
                        })
                    }
                })
            }
        }
    }

    function trackEzoicAdImpression(elem) {
        var adFrame = elem.querySelector("iframe")

        window.dataLayer = window.dataLayer || []
        window.dataLayer.push({
            event: "ezoic.adimpression",
            ezoic: {
                adimpression: {
                    width: adFrame.scrollWidth,
                    height: adFrame.scrollHeight,
                    placement: elem.dataset.ezName
                }
            }
        })
    }
})()
</script>

Wie das funktioniert

  1. Wir finden alle oben genannten Ad-Container mit dem [data-ez-name]-Selektor.
  2. Wir fügen ihnen MutationObserver-Instanzen hinzu.
  3. Der MutationObserver ruft unsere mutationCallback-Funktion jedes Mal auf, wenn sich ein Element innerhalb eines Ad-Containers ändert. Wenn ein iframe zum Ad-Container hinzugefügt wurde, fügen wir diesem ein load-Eventlistener hinzu.
  4. Dieser Eventlistener ruft die finale trackEzoicAdImpression auf, sobald das iframe (und unsere Anzeige darin) fertig geladen ist.
  5. trackEzoicAdImpression ermittelt dann die Größe und den Platzierungsnamen der Anzeige und sendet ein ezoic.adimpression-Event an den dataLayer.

Von dort aus kannst Du dann einen Trigger im Google Tag Manager erstellen, der auf dieses ezoic.adimpression-Event reagiert und ein Google Analytics-Event auslöst. Du kannst dann Data Layer-Variablen verwenden, um auf die dataLayer-Informationen (wie ezoic.adimpression.placement) zuzugreifen und sie in das Google Analytics-Event einzubeziehen.

0 Werte in width und height Attributen

Wenn Du 0 Werte in den Breiten- und Höhenattributen Deiner dataLayer-Events siehst, könnte dies daran liegen, dass Deine Anzeigen ausgeblendet sind. Überprüfe, ob Deine Anzeigen geladen, aber nicht angezeigt werden, z.B. weil sie sich in einer Seitenleiste befinden, die aufgrund fehlenden Platzes auf Smartphones per CSS ausgeblendet wird.
Wenn Du diese Impressions nicht tracken möchtest, kannst Du in Google Tag Manager auf diese 0-Werte prüfen und verhindern, dass sie Google Analytics-Events auslösen. Die nachhaltigere und leistungsorientierte Lösung wäre jedoch, die Anzeigen überhaupt nicht zu laden, wenn sie nicht angezeigt werden sollen.

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