Richten Sie die Umsatzzuordnung ein, um zu verfolgen, welche Marketingkanäle tatsächliche Verkäufe generieren. Schritt-für-Schritt-Implementierungsanleitung.
Voraussetzungen
Bevor Sie beginnen:
- Zenovay-Tracking-Skript installiert
- Zugriff auf den Checkout-/Kaufcode
- Umsatzziel aktiviert
Grundlegende Einrichtung
Einfache Umsatzverfolgung
Verfolgen Sie den Umsatz, wenn ein Kauf abgeschlossen wird:
// On order confirmation page or in success callback
zenovay('revenue', 99.99, 'USD');
Das war's für die grundlegende Verfolgung!
Mit Zielname
Mit einem bestimmten Ziel verknüpfen:
zenovay('goal', 'purchase', {
value: 99.99
});
Vollständige Implementierung
Vollständiges Umsatzobjekt
Alle relevanten Daten einbeziehen:
zenovay('revenue', 149.99, 'USD', {
// Recommended
order_id: 'ORD-12345',
// Optional - for detailed analysis
items: [
{
id: 'SKU-001',
name: 'Product Name',
price: 49.99,
quantity: 2,
category: 'Electronics'
},
{
id: 'SKU-002',
name: 'Accessory',
price: 50.00,
quantity: 1,
category: 'Accessories'
}
],
// Optional metadata
coupon: 'SAVE10',
shipping: 9.99,
tax: 12.50
});
Implementierung nach Plattform
Shopify
Für Shopify-Shops:
- Gehen Sie zu Einstellungen → Checkout
- Fügen Sie Folgendes zur „Bestellstatusseite" hinzu:
{% if first_time_accessed %}
<script>
zenovay('revenue', {{ total_price | money_without_currency }}, '{{ currency }}', {
order_id: '{{ order_number }}',
items: [
{% for item in line_items %}
{
id: '{{ item.sku }}',
name: '{{ item.title | escape }}',
price: {{ item.final_price | money_without_currency }},
quantity: {{ item.quantity }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
});
</script>
{% endif %}
WooCommerce
Für WordPress/WooCommerce:
- Fügen Sie Folgendes zur
functions.phpIhres Themes oder einem Plugin hinzu:
add_action('woocommerce_thankyou', 'zenovay_track_revenue');
function zenovay_track_revenue($order_id) {
$order = wc_get_order($order_id);
?>
<script>
zenovay('revenue', <?php echo $order->get_total(); ?>, '<?php echo $order->get_currency(); ?>', {
order_id: '<?php echo $order_id; ?>'
});
</script>
<?php
}
React/Next.js
In Ihrer Checkout-Erfolgskomponente:
import { useEffect } from 'react';
function OrderConfirmation({ order }) {
useEffect(() => {
if (order && window.zenovay) {
window.zenovay('revenue', order.total, order.currency, {
order_id: order.id,
items: order.items.map(item => ({
id: item.sku,
name: item.name,
price: item.price,
quantity: item.quantity
}))
});
}
}, [order]);
return <div>Thank you for your order!</div>;
}
Serverseitiges Tracking
Enterprise PlanFür sicheres serverseitiges Tracking verwenden Sie den Tracking-Endpunkt mit Ihrem Tracking-Code:
// Node.js example - use the tracking endpoint directly
app.post('/api/order/complete', async (req, res) => {
const order = await processOrder(req.body);
await fetch('https://api.zenovay.com/e/YOUR_TRACKING_CODE', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Forwarded-For': req.headers['x-forwarded-for'] || req.socket.remoteAddress,
},
body: JSON.stringify({
type: 'revenue',
url: req.headers.referer || 'https://yoursite.com/checkout',
revenue: order.total,
order_id: order.id,
currency: 'USD'
}),
});
res.json({ success: true });
});
Zuordnungskonfiguration
Zuordnungsmodell
Zenovay zwingt Sie nicht, sich vorher auf ein einzelnes Modell festzulegen. Öffnen Sie das Dashboard Ihrer Website, gehen Sie zur Registerkarte Umsatz, und wechseln Sie das Modell direkt auf der Zuordnungskarte. Fünf Modelle stehen zur Verfügung:
- Last Touch (Standard)
- First Touch
- Linear
- Position-Based
- Time-Decay
Sie können das Modell jederzeit ändern, um dieselben Daten durch eine andere Optik zu betrachten – es gibt keine separate „Standardmodell"- oder Zuordnungszeitraum-Einstellung, die Sie zuerst konfigurieren müssen.
Ein Attributionsmodell wählen
Die Attribution-Karte im Revenue-Tab lässt Sie pro Bericht zwischen fünf Modellen wechseln. Wählen Sie das, das zu Ihrer Fragestellung passt:
| Modell | Wann verwenden |
|---|---|
| Last-Touch (Standard) | Sie wollen wissen, was Abschlüsse erzielt |
| First-Touch | Sie wollen wissen, was Entdeckung antreibt |
| Linear | Sie wollen eine ausgewogene, neutrale Aufteilung über die Journey |
| Position-Based | Sie wollen Entdeckung (40 %) und Abschluss (40 %) würdigen |
| Time-Decay | Sie haben kürzere Verkaufszyklen — jüngere Touches wiegen mehr |
Das gewählte Modell wird in der URL gespeichert, sodass ein Reload es beibehält. Wenn die meisten Conversions in einem Zeitraum aus einer einzigen Sitzung stammen, sehen die Multi-Touch-Modelle sehr ähnlich wie Last-Touch aus — das ist erwartet und löst sich, sobald mehr Multi-Session-Journeys auflaufen. Für einen detaillierten Vergleich zwischen First-Touch und Last-Touch Attribution siehe First-touch vs last-touch attribution.
Warum zeigen alle meine Attributionsmodelle fast die gleichen Zahlen?
Das ist erwartet und kein Fehler. Wenn die meisten Conversions von Besuchern stammen, die vor der Conversion eine einzige Sitzung hatten — oder auf einem einzigen Kanal geblieben sind —, dann gibt jedes Modell diesem Kanal 100 % des Credits. Deshalb sehen Last-Touch, First-Touch, Linear, Position-Based und Time-Decay fast identisch aus.
Die Modelle beginnen sich für Besucher zu unterscheiden, die tatsächlich über mehrere verschiedene Kanäle und Sitzungen hinweg gewechselt haben, bevor sie konvertierten; je mehr solcher Multi-Session-Journeys sich ansammeln, desto größer werden die Unterschiede.
Das Wechseln des Modells ändert nichts am Kanal KI — KI-Traffic wird unter jedem Modell immer seinem eigenen Kanal gutgeschrieben.
Tipp: Um die größten Unterschiede zwischen den Modellen zu sehen, vergleichen Sie First-Touch mit Last-Touch — sie weichen immer dann voneinander ab, wenn der erste und der letzte Kanal eines Besuchers verschieden sind.
Eine Conversion ohne Geldwert wird weiterhin in der Conversion-Zuordnung berücksichtigt; Umsatzzahlen erscheinen nur, wenn dem Ziel ein Umsatz zugeordnet ist.
KI als Attributionskanal
Zenovay weist KI als eigenständigen Kanal im Zuordnungsbereich aus, direkt neben Direkt, Organisch, Bezahlt, Social und Verweis. Wenn ein konvertierender Besucher als KI-Traffic erkannt wurde, wird diese Conversion KI gutgeschrieben, anstatt sie unter Direkt oder einem UTM-Kanal zusammenzufassen.
Klappen Sie die Zeile KI auf, um sie nach KI-Produkt aufzuschlüsseln:
- Benannte Produkte – ChatGPT, Claude, Perplexity, Gemini, Copilot, DeepSeek und weitere, wenn der Besuch einen erkennbaren KI-Referrer oder UTM-Parameter mitführte.
- Wahrscheinlich KI (nicht spezifiziert) – Besucher, die die Dark-AI-Heuristik als KI-getrieben eingestuft hat, obwohl sie ohne Referrer ankamen. Diese lassen sich keinem einzelnen Produkt zuordnen, daher werden sie ehrlich unter diesem Label gruppiert statt geraten.
Beachten Sie:
- Dies ist eine Conversions-Ansicht. Ein KI-Produkt, das Besuche, aber keine zurechenbare Conversion im gewählten Zeitraum sendet, erscheint hier nicht – nutzen Sie die Ansicht AI Influence für KI-Traffic nach Produkt.
- Wenn nur Wahrscheinlich KI (nicht spezifiziert) angezeigt wird, ist das korrekt und kein fehlender Datensatz: Es bedeutet, dass die KI-Conversions des Zeitraums heuristisch ohne benannten Referrer erkannt wurden.
- Die KI-Zuordnung erscheint im authentifizierten Dashboard; auf öffentlichen oder geteilten Dashboards wird sie bewusst nicht angezeigt.
Geräteübergreifende Zuordnung
Enterprise PlanGeräteübergreifend verfolgen:
- Identifizieren Sie Benutzer bei der Anmeldung
- Die Customer Journey wird automatisch zusammengeführt
- Vollständiger Pfad sichtbar
// When user logs in
zenovay('identify', userId);
UTM-Parameter einrichten
Kampagnen-Tracking
Stellen Sie sicher, dass UTM-Parameter verwendet werden:
https://yoursite.com/?utm_source=google
&utm_medium=cpc
&utm_campaign=spring_sale
&utm_content=banner_1
UTM-Parameter
| Parameter | Zweck | Beispiel |
|---|---|---|
| utm_source | Traffic-Quelle | google, facebook |
| utm_medium | Marketing-Medium | cpc, email |
| utm_campaign | Kampagnenname | spring_sale |
| utm_content | Anzeigenvariante | banner_a |
| utm_term | Suchbegriffe | blue shoes |
Einrichtung testen
Debug-Modus
Debug-Protokollierung aktivieren:
zenovay('debug');
Führen Sie dann einen Testkauf durch und prüfen Sie die Konsole.
Testkauf
- Testbestellung aufgeben
- Browser-Konsole prüfen
- In der Echtzeit-Ansicht verifizieren
- Im Umsatzbericht bestätigen
Verifizierungs-Checkliste
- Umsatzwert korrekt
- Bestell-ID erfasst
- Artikel verfolgt (falls gesendet)
- Quelle korrekt zugeordnet
- Währung korrekt
Sonderfälle behandeln
Wiederkehrender Umsatz
Für Abonnements:
// Track initial purchase
zenovay('revenue', 29.99, 'USD', {
order_id: 'SUB-001',
type: 'subscription',
interval: 'monthly'
});
// Track renewals
zenovay('revenue', 29.99, 'USD', {
order_id: 'SUB-001-RENEWAL',
type: 'subscription_renewal',
original_order: 'SUB-001'
});
Rückerstattungen
Rückerstattungen korrekt behandeln:
// Track refund
zenovay('revenue', -49.99, 'USD', {
order_id: 'REFUND-ORD-12345',
type: 'refund',
original_order: 'ORD-12345'
});
Teillieferungen
Wenn der Umsatz bei Versand erfasst wird:
// Track each shipment
zenovay('revenue', 50.00, 'USD', {
order_id: 'ORD-12345-SHIP-1',
parent_order: 'ORD-12345'
});
Datenqualität
Duplikate vermeiden
Stellen Sie sicher, dass Umsatz nicht doppelt erfasst wird:
// Using localStorage to prevent duplicates
function trackOrderOnce(order) {
const tracked = localStorage.getItem(`tracked_${order.id}`);
if (tracked) return;
zenovay('revenue', order.total, 'USD', {
order_id: order.id
});
localStorage.setItem(`tracked_${order.id}`, 'true');
}
Vor dem Senden validieren
Datenqualität prüfen:
function trackRevenue(orderData) {
// Validate
if (!orderData.value || orderData.value <= 0) {
console.warn('Invalid order value');
return;
}
if (!orderData.order_id) {
console.warn('Missing order ID');
return;
}
// Track
zenovay('revenue', orderData.value, orderData.currency || 'USD', {
order_id: orderData.order_id
});
}
Fehlerbehebung
Umsatz wird nicht angezeigt
Wenn der Umsatz nicht erscheint:
-
Prüfen Sie, ob das Tracking ausgelöst wird
- Debug-Modus aktiviert?
- Konsolenfehler?
-
Ziel-Einrichtung überprüfen
- Umsatzziel erstellt?
- Ziel aktiv?
-
Timing prüfen
- Nach vollständigem Laden der Seite?
- Im richtigen Callback?
-
Daten validieren
- Wert ist eine Zahl?
- Nicht 0 €?
Zuordnung fehlt
Wenn die Quelle nicht zugeordnet wird:
- Prüfen Sie, ob UTM-Parameter vorhanden sind
- Überprüfen Sie, ob der Referrer nicht blockiert wird
- Versuchen Sie ein anderes Zuordnungsmodell auf der Zuordnungskarte des Revenue-Tabs
- Bestätigen Sie, dass der konvertierende Besuch überhaupt erfasst wurde (prüfen Sie die Echtzeit-Ansicht)
Beträge stimmen nicht überein
Wenn die Summen von der Buchhaltung abweichen:
- Zeiträume vergleichen
- Auf Rückerstattungen prüfen
- Währungsbehandlung überprüfen
- Nach fehlenden Bestellungen suchen
Sicherheitshinweise
Einschränkungen bei clientseitigem Tracking
Beachten Sie:
- Werte können manipuliert werden
- Nicht für Abrechnungszwecke geeignet
- Nur für Analysezwecke
Serverseitig für Genauigkeit
Für kritische Genauigkeit:
- Serverseitiges Tracking implementieren
- Gegen Backend verifizieren
- Für Berichterstattung verwenden
Zahlungsanbieter verbinden (Server-zu-Server)
Wenn Sie Zahlungen bereits über einen unterstützten Anbieter abwickeln, können Sie Ihr Konto mit Zenovay verbinden, anstatt Ihren Checkout-Code anzupassen. Zenovay empfängt Webhooks vom Anbieter, ordnet jede erfasste Zahlung der ursprünglichen Sitzung zu und befüllt das Umsatz-Dashboard automatisch – ohne clientseitige zenovay('revenue', …)-Aufrufe.
Das Revenue-Einstellungstab lässt Sie Stripe, PayPal und Paddle verbinden. Jeder hat eine Schritt-für-Schritt-Anleitung:
| Anbieter | Einrichtungsanleitung | Was erfasst wird |
|---|---|---|
| Stripe | Stripe-Umsatzintegration | Zahlungseingänge, Rückerstattungen, Abonnement-Rechnungen |
| PayPal | PayPal-Umsatzintegration | Zahlungseingänge und Rückerstattungen |
| Paddle | Paddle-Umsatzintegration | Zahlungseingänge und Rückerstattungen |
Wählen Sie Ihren Anbieter auf dem Revenue-Einstellungstab, geben Sie Ihre Zugangsdaten ein, und Zenovay kümmert sich um den Rest.
Wann Webhook-Ingestion statt JS-Tracker sinnvoll ist:
- Serverseitige Genauigkeit – Webhook-Nutzdaten sind vom Anbieter signiert und können von Browsern oder Werbeblockern nicht manipuliert werden.
- Keine Änderungen am Checkout-Code – Öffnen Sie das Dashboard Ihrer Website, gehen Sie zum Revenue-Einstellungstab, wählen Sie Ihren Anbieter, und geben Sie Ihre Zugangsdaten ein.
- Rückerstattungen werden automatisch erfasst – Wenn Sie eine Rückerstattung im Dashboard Ihres Anbieters auslösen, wird sie von Zenovay übernommen.
Wann der JS-Tracker weiterhin sinnvoll ist:
- Sie benötigen artikelgenaue Daten (
items[]), die der Anbieter nicht im Webhook mitsendet. - Ihr Anbieter ist nicht in der obigen Liste (weitere sind auf der Roadmap).
- Sie möchten, dass die Bestellung in der Echtzeit-Besucheransicht erscheint, sobald der Kunde die Erfolgsseite erreicht (Webhooks treffen einige Sekunden später ein).
Sie können beide Ansätze auf derselben Website nutzen – Zenovay dedupliziert anhand der order_id, sodass dieselbe Bestellung nicht doppelt gezählt wird.