Tracking-Werkzeuge anbinden
Ereignisse auf Ihrer Webseite empfangen und an Google Ads, den Facebook Pixel oder Ihr eigenes Analyse-System weitergeben.
Grundlage für alle Tracking-Werkzeuge:
Anbindung einzelner Werkzeuge:
- Google Ads Conversion Tracking
- Facebook Pixel
- Beide Systeme gleichzeitig bedienen
- Listenaufrufe und Sucheinstiege auswerten
Ereignisse empfangen (Grundgerüst)
Das folgende Skript binden Sie auf der Seite ein, die den Kurskalender per iFrame enthält – nicht innerhalb des Kurskalenders selbst.
<head> Ihrer Seite oder jedenfalls vor dem iFrame. Ereignisse
werden nur einmalig gesendet und nicht zwischengespeichert: Ist der Empfänger zum Zeitpunkt
des Ereignisses noch nicht registriert, geht das Ereignis verloren. Verzichten Sie deshalb
darauf, die Registrierung in window.onload oder an das Seitenende zu
verlagern.window.addEventListener('message', function (event) {
// 1. WICHTIG: Origin gegen die Domaene(n) Ihres SEMCO-Kurskalenders pruefen
if (event.origin !== 'https://app.example-semco-domain.com') {
return;
}
// 2. Nur Ereignisse des SEMCO-Kurskalenders verarbeiten
const data = event.data;
if (!data || typeof data.event_name !== 'string' || !data.event_name.startsWith('semco_')) {
return;
}
// 3. Nur die unterstuetzte Hauptversion des Schemas verarbeiten. Ziffer anpassen, sobald Sie eine neue Hauptversion unterstuetzen
if (parseInt(String(data.version).split('.')[0], 10) !== 1) {
return;
}
// 4. Auf das gewuenschte Ereignis reagieren
switch (data.event_name) {
case 'semco_orders_confirmation':
handleConversion(data);
break;
// weitere Ereignisse nach Bedarf behandeln
}
});
https://app.example-semco-domain.com durch
die Domäne, unter der Ihr SEMCO-Kurskalender ausgeliefert wird. Sie finden sie im
src-Attribut des iFrame, mit dem der Kurskalender eingebettet ist. Die
Prüfung von event.origin darf nicht entfallen.Verhindern Sie zusätzlich eine Doppelzählung beim Neuladen der Bestätigungsseite. Wie das geht, zeigt Prüfung und Korrekturmöglichkeiten bei Fehlern.
handleConversion nur
einmal. Wenn Sie mehrere Tracking-Systeme parallel bedienen möchten, rufen Sie
diese aus einer gemeinsamen Funktion auf – siehe Beide Systeme gleichzeitig bedienen.Google Ads Conversion Tracking
Voraussetzung: Das Google-Tag (gtag.js) ist auf Ihrer Webseite
eingebunden, und Ihre Conversion-ID sowie Ihr Conversion-Label aus Google Ads liegen Ihnen
vor.
function handleConversion(data) {
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXXXXX/XXXXXXXXXXXX',
'value': Number(data.order?.quotation?.gross_amount ?? 0),
'currency': data.course?.course_currency_symbol ?? 'EUR'
});
}
Ersetzen Sie AW-XXXXXXXXX/XXXXXXXXXXXX durch Ihre Conversion-ID und Ihr
Conversion-Label aus Google Ads.
transaction_id nicht übergeben.
Google Ads kann Conversions damit nicht entduplizieren. Lädt ein Besucher die
Bestätigungsseite neu, wird die Conversion erneut gezählt. Umgekehrt gehen keine Conversions
verloren: Mehrere Anmeldungen zum selben Kurs werden korrekt einzeln gezählt.Facebook Pixel
Voraussetzung: Der Facebook Pixel (fbq) ist auf Ihrer Webseite
eingebunden.
function handleConversion(data) {
fbq('track', 'Purchase', {
value: Number(data.order?.quotation?.gross_amount ?? 0),
currency: data.course?.course_currency_symbol ?? 'EUR',
content_name: data.course?.course_title ?? ''
});
}
Beide Systeme gleichzeitig bedienen
Definieren Sie handleConversion nur einmal und rufen Sie beide Systeme aus
dieser Funktion auf:
function handleConversion(data) {
const value = Number(data.order?.quotation?.gross_amount ?? 0);
const currency = data.course?.course_currency_symbol ?? 'EUR';
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXXXXX/XXXXXXXXXXXX',
'value': value,
'currency': currency
});
fbq('track', 'Purchase', {
value: value,
currency: currency,
content_name: data.course?.course_title ?? ''
});
}
Listenaufrufe und Sucheinstiege auswerten
Die Ereignisse semco_classes_index und
semco_e_learning_index enthalten das Datenobjekt index
mit dem Zustand von Suchfiltern und Seitenblätterung. Daraus lässt sich ablesen, welche
Filter genutzt werden und wie viele Treffer eine Suche liefert. Die einzelnen Felder
beschreibt Ereignisse und übermittelte Daten.
Erweitern Sie die Verzweigung im Grundgerüst um die beiden Listen-Ereignisse:
case 'semco_classes_index':
case 'semco_e_learning_index':
handleListView(data);
break;
Übergeben Sie dann die gewünschten Werte an Ihr Analyse-System:
function handleListView(data) {
myAnalytics.track('course_list_viewed', {
totalResults: data.index?.pagination?.total ?? 0,
page: data.index?.pagination?.current_page ?? 1,
activeFilters: data.index?.filters?.visible ?? {}
});
}
Ersetzen Sie myAnalytics.track durch den Aufruf Ihres eigenen
Analyse-Systems.
