Zum Hauptinhalt springen
Pro Plan15 minutesFortgeschrittene

Umsatzzuordnung einrichten

Konfigurieren Sie Umsatzverfolgung und -zuordnung – verbinden Sie Käufe mit Traffic-Quellen mit einer Schritt-für-Schritt-Anleitung. Lernen Sie Best Practices für die Umsatzeinrichtung.

revenueattributionsetuptracking
Zuletzt aktualisiert:
Pro Plan

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:

  1. Gehen Sie zu Einstellungen → Checkout
  2. 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:

  1. Fügen Sie Folgendes zur functions.php Ihres 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 Plan

Fü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:

ModellWann verwenden
Last-Touch (Standard)Sie wollen wissen, was Abschlüsse erzielt
First-TouchSie wollen wissen, was Entdeckung antreibt
LinearSie wollen eine ausgewogene, neutrale Aufteilung über die Journey
Position-BasedSie wollen Entdeckung (40 %) und Abschluss (40 %) würdigen
Time-DecaySie 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 Plan

Geräteübergreifend verfolgen:

  1. Identifizieren Sie Benutzer bei der Anmeldung
  2. Die Customer Journey wird automatisch zusammengeführt
  3. 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

ParameterZweckBeispiel
utm_sourceTraffic-Quellegoogle, facebook
utm_mediumMarketing-Mediumcpc, email
utm_campaignKampagnennamespring_sale
utm_contentAnzeigenvariantebanner_a
utm_termSuchbegriffeblue shoes

Einrichtung testen

Debug-Modus

Debug-Protokollierung aktivieren:

zenovay('debug');

Führen Sie dann einen Testkauf durch und prüfen Sie die Konsole.

Testkauf

  1. Testbestellung aufgeben
  2. Browser-Konsole prüfen
  3. In der Echtzeit-Ansicht verifizieren
  4. 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:

  1. Prüfen Sie, ob das Tracking ausgelöst wird

    • Debug-Modus aktiviert?
    • Konsolenfehler?
  2. Ziel-Einrichtung überprüfen

    • Umsatzziel erstellt?
    • Ziel aktiv?
  3. Timing prüfen

    • Nach vollständigem Laden der Seite?
    • Im richtigen Callback?
  4. Daten validieren

    • Wert ist eine Zahl?
    • Nicht 0 €?

Zuordnung fehlt

Wenn die Quelle nicht zugeordnet wird:

  1. Prüfen Sie, ob UTM-Parameter vorhanden sind
  2. Überprüfen Sie, ob der Referrer nicht blockiert wird
  3. Versuchen Sie ein anderes Zuordnungsmodell auf der Zuordnungskarte des Revenue-Tabs
  4. 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:

  1. Zeiträume vergleichen
  2. Auf Rückerstattungen prüfen
  3. Währungsbehandlung überprüfen
  4. 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:

AnbieterEinrichtungsanleitungWas erfasst wird
StripeStripe-UmsatzintegrationZahlungseingänge, Rückerstattungen, Abonnement-Rechnungen
PayPalPayPal-UmsatzintegrationZahlungseingänge und Rückerstattungen
PaddlePaddle-UmsatzintegrationZahlungseingä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.

Nächste Schritte

War dieser Artikel hilfreich?