Anwendungsfälle

Deinen iGaming-Funnel tracken (Registrierung → FTD → NGR)

Der komplette Guide für Sportwetten-Anbieter und Casinos – ordne jeden Schritt der Ad, dem Affiliate oder dem Post zu, der ihn gebracht hat. Tracke die Registrierung, dann den First-Time Deposit (FTD), Redeposits und Net Gaming Revenue. Der FTD und alles danach feuern serverseitig aus deiner Player-Plattform oder deinem CRM. Die Schlüsselidee: erfasse die Click-ID einmal bei der Registrierung und spiele sie bei jedem späteren Deposit-Event wieder ab.

Für einen Sportwetten-Anbieter oder ein Casino ist der Moment, der die Rechnungen zahlt, nicht der Klick und nicht mal die Anmeldung – es ist der First-Time Deposit (FTD), und dann jeder Deposit danach. Diese Momente ziehen sich über Tage oder Wochen und fast alle passieren in deiner Player-Plattform, nicht auf einer Marketing-Seite: jemand registriert sich, lädt sein Konto auf, zahlt erneut ein und erzeugt über seine Lebensdauer Net Gaming Revenue (NGR). Dieser Guide verdrahtet jede dieser Stufen mit LeadJourney, sodass du pro Kampagne, Anzeigengruppe und Anzeige nicht nur siehst, wie viele Registrierungen eine Ad gebracht hat, sondern wie viele zu FTDs wurden und wie viel NGR sie erzeugt haben.

Tracking muss zuerst live sein

Jede Stufe wird dem Besucher zugeordnet, der deine Ad geklickt hat, also muss das Tracking-Script zuerst auf deiner Seite laufen. Falls nicht, starte mit Tracking-Script installieren (und den Entwickler-Hinweisen in Auf einer custom-coded Website installieren). Die Gesamtübersicht steht im iGaming-&-Sportwetten-Playbook.

Der iGaming-Funnel, auf LeadJourney gemappt

Wähle die Stufen, die es in deinem Produkt gibt, und überspring den Rest. Jeder Event-Name ist einfach der type, den du sendest – benenne sie um zu dem, was dein Team ohnehin sagt (REG, FTD, QFTD, RD, NGR).

Funnel-StufeEvent-typeWie du es sendestRevenue?
Registrierung / Sign-upLeadForm-Listener, oder die Server-Route unten
First-Time DepositWonClientServer-Route aus Player-Plattform / CRM✓ Deposit-Betrag
Qualifying Deposit (optional)QualifiedDepositDieselbe Server-Routeoptional
RedepositRedepositDieselbe Server-Route
Net Gaming RevenueNGRUpdateDieselbe Server-Route (aus nächtlichem Cron)
Reactivation (optional)ReactivationDieselbe Server-Routeoptional

Zwei Wege, eine Stufe zu senden – und wann welcher

  • Registrierung → der Form-Listener fängt sie oft. Wenn Spieler über ein On-Page-Formular registrieren, kann die automatische Form-Erfassung des Tracking-Scripts Lead für dich feuern. Ist die Registrierung ein In-App-Schritt oder nutzt SSO, sende sie stattdessen über die Server-Route.
  • FTD, Redeposit, NGR → sende sie selbst aus deiner Player-Plattform mit einer kleinen Server-Route. Das sind Statuswechsel, die nur dein Backend kennt, also definierst du den Auslöser und postest das Event an LeadJourneys Conversion API.

Die eine Idee, die iGaming-Tracking funktionieren lässt

Hier der iGaming-typische Haken, und das Wichtigste in diesem Guide:

Die Click-ID lebt bei der Registrierung im Browser. Aber der FTD, die Redeposits und das NGR passieren später – fast immer serverseitig, in deiner Player-Plattform oder einem nächtlichen Cron, ohne Browser und ohne localStorage in Sicht.

Du kannst die Click-ID also nicht erneut lesen, wenn diese späteren Events feuern. Die Lösung ist einfach:

Click-ID einmal erfassen, am Spieler speichern, für immer abspielen

Lies bei der Registrierung localStorage.getItem('clickId') und speichere sie am Spieler-Datensatz in deiner eigenen Datenbank (eine Spalte wie lj_click_id). Jedes spätere Event – FTD, Redeposit, NGR – liest diesen Wert zurück und sendet ihn mit. Einmal erfassen, für die ganze Spieler-Lebensdauer wiederverwenden.

E-Mail und Telefon sind dein Sicherheitsnetz

LeadJourney matcht Events auch auf E-Mail und Telefon. Sende sie immer mit jedem Event, sodass die Stufen selbst dann auf denselben Spieler aufsetzen, wenn nie eine Click-ID erfasst wurde (eine organische, Affiliate-Redirect- oder direkte Registrierung) oder sie verloren ging – und später attribuiert werden können, falls die Person vorher einen getrackten Link geklickt hat. iGaming verifiziert Telefonnummern ohnehin, also ist das ein starker Match-Key. Siehe Wie Attribution funktioniert.

Bevor du startest

Hol dir deine Conversion-API-Credentials unter Settings → Events → Conversion API:

  • Deine Webhook-URL – sieht aus wie https://api.leadjourney.io/api/v1/postback/<deine-id>.
  • Dein Postback-Secret – behandle es wie ein Passwort; es bleibt auf deinem Server und wird nie im Browser offengelegt.

Lege dann die Events an, die du nutzt, im Events Manager. Lead und WonClient gibt es in jedem Workspace standardmäßig; füge die Deposit-Stufen hinzu:

EventEmpfohlener ModusHinweise
Lead (Registrierung)Ignore duplicate postbacksEinmal pro Spieler – verwirft versehentliche Wiederholungen. Send back to Ads anlassen.
WonClient (FTD)Edit conversion with new dataInclude Revenue Value an und den Deposit-Betrag senden. Send back to Ads anlassen.
QualifiedDepositIgnore duplicate postbacksFeuert nur einmal, wenn ein Deposit deine Schwelle erfüllt.
RedepositCreate new conversionJeder Redeposit ist ein neues Event – oder stattdessen WonClient hochzählen (siehe unten).
NGRUpdateEdit conversion with new dataHält einen laufenden NGR-Wert pro Spieler aktuell.

Warum „Ignore duplicate postbacks“ hier zählt

Player-Plattform-Events kommen oft aus wiederholten Webhooks oder einem Cron, der Spieler re-scannt, sodass dasselbe Event mehr als einmal feuern kann. Registrierungs- und Qualifying-Deposit-Events auf Ignore duplicate postbacks zu setzen, hält deine Funnel-Zahlen ehrlich. Siehe die Modus-Tabelle in Events & der Events Manager.

Schritt für Schritt

Click-ID bei der Registrierung erfassen und speichern

Wenn sich ein neuer Spieler registriert, lies die Click-ID aus dem Browser und persistiere sie am Spieler. Mach das einmal – davon hängt jedes spätere Deposit-Event ab.

// In deinem Registrierungs-Handler, sobald der Account angelegt ist
const clickId = localStorage.getItem("clickId") || "";

// Am Spieler-Datensatz speichern (Pseudo-Code – nutze dein eigenes ORM / deine DB)
await db.players.update(newPlayer.id, { lj_click_id: clickId });

Registrierung über App oder SSO?

Registrieren sich Spieler in einer nativen App oder per Social / SSO, liest du die Click-ID vielleicht nicht aus localStorage. Führe die Click-ID durch den OAuth-state-Parameter (oder den Deep-Link deiner App) und speichere sie genauso – das volle Pattern steht in Sign-ups in deiner App tracken (inkl. Google & Microsoft SSO).

Eine Server-Route, die jedes Deposit-Event sendet

Diese eine Route leitet ein Event an LeadJourney weiter und hält dein Postback-Secret sicher auf dem Server. Das Beispiel ist eine Next.js-App-Router-Route; jedes Backend (Express, eine Serverless Function, der Webhook-Handler deiner Plattform) funktioniert genauso.

// app/api/lj-event/route.js
export async function POST(req) {
  const d = await req.json();

  await fetch(
    "https://api.leadjourney.io/api/v1/postback/YOUR-POSTBACK-ID",
    {
      method: "POST",
      headers: {
        "Authorization": "Bearer YOUR_POSTBACK_SECRET",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        type: d.type,           // "Lead" | "WonClient" | "Redeposit" | "NGRUpdate" | ...
        click_id: d.click_id,   // der bei der Registrierung gespeicherte Wert
        email: d.email,         // immer senden – robuster Match-Key
        phone: d.phone,         // iGaming verifiziert Telefon ohnehin – weiterer starker Key
        first_name: d.first_name,
        last_name: d.last_name,
        revenue: d.revenue,     // Deposit-Betrag / NGR – bei reiner Registrierung weglassen
      }),
    }
  );

  return Response.json({ ok: true });
}

Nutze deine eigene URL und dein Secret

Ersetze YOUR-POSTBACK-ID und YOUR_POSTBACK_SECRET durch die Webhook-URL und das Postback-Secret aus deinem eigenen Settings → Events → Conversion API. Pack das Secret nie in Client-seitigen Code und committe es nie in ein öffentliches Repo. Die volle Payload-Feld-Referenz steht im Conversion-API-Tab.

Jede Stufe feuern

Ruf bei jedem Schritt die Route mit dem richtigen type auf. Weil du die Click-ID bei der Registrierung gespeichert hast, kann jeder Call sie mitschicken – kein Browser nötig.

Feuere einmal, direkt nachdem der Account angelegt ist (an derselben Stelle, an der du die Click-ID gespeichert hast). Registrieren sich Spieler über ein On-Page-Formular, erledigt das vielleicht schon die Form-Erfassung des Tracking-Scripts – in dem Fall überspring den manuellen Call, um Duplikate zu vermeiden.

await fetch("/api/lj-event", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    type: "Lead",
    click_id: localStorage.getItem("clickId"), // oder der gerade gespeicherte Wert
    email: newPlayer.email,
    phone: newPlayer.phone,
    first_name: newPlayer.firstName,
    last_name: newPlayer.lastName,
  }),
});

Die Schlüssel-Conversion. Feuere sie aus deiner Player-Plattform in dem Moment, in dem der erste Deposit des Spielers durchgeht – lies die gespeicherte Click-ID und sende den Deposit-Betrag als revenue:

await sendEvent({
  type: "WonClient",
  click_id: player.lj_click_id,  // bei der Registrierung gespeichert
  email: player.email,
  phone: player.phone,
  revenue: deposit.amount,       // der FTD-Betrag, in deiner Workspace-Währung
});

Nur „qualifizierte“ FTDs zählen?

Wenn reine Bonus- oder Winz-Deposits nicht zählen sollen, sende einen separaten QualifiedDeposit (type QualifiedDeposit) nur dann, wenn der Deposit deine Schwelle erfüllt, und reporte darauf statt auf rohe FTDs. Du kannst beides senden – WonClient für jeden FTD und QualifiedDeposit für die, die zählen.

Jeder weitere Deposit. Mit revenue senden, sodass der Gesamtwert des Spielers über die Zeit wächst:

await sendEvent({
  type: "Redeposit",
  click_id: player.lj_click_id,
  email: player.email,
  revenue: deposit.amount,
});

Zwei Wege, wiederholte Deposits zu zählen

Entweder jeden Redeposit als eigenes Event senden (Create new conversion), oder einen WonClient pro Spieler behalten und jeden Deposit mit Keep original data, increment payout obendrauf addieren – siehe Abschnitt unten.

Hinter dem NGR steckt meist keine einzelne User-Aktion – es ist eine berechnete Größe. Feuere es aus einem nächtlichen Cron, der das Net Gaming Revenue jedes Spielers summiert und den aktuellen Wert sendet:

// Pseudo-Code für einen täglichen Job
const players = await db.players.activeSince(yesterday);
for (const p of players) {
  await sendEvent({
    type: "NGRUpdate",
    click_id: p.lj_click_id,
    email: p.email,
    revenue: p.ngrToDate,   // laufendes NGR für diesen Spieler
  });
}

NGR ist das wahrste Wert-Signal

Die FTD-Zahl sagt dir, wer eingezahlt hat; das NGR sagt dir, wer nach Gewinnen und Bonuskosten wirklich profitabel ist. Setze NGRUpdate auf Edit conversion with new data, damit jeder Lauf denselben Wert aktualisiert, statt zu stapeln.

Affiliate-Traffic

Affiliates und Influencer schicken Spieler auf deine Registrierungsseite, die schon das Tracking-Script fährt – ihre Spieler werden also automatisch erfasst. Um Partner auf derselben CPR-/CPA-/NGR-Basis gegen deine direkte Media zu vergleichen, gib jedem Affiliate eine eindeutige Source / Sub-ID im Link (gebaut mit dem UTM-Builder oder deinen eigenen URL-Parametern), sodass er als eigener Traffic-Channel landet. Jedes Event oben trägt dann dieselbe Click-ID, sodass FTDs, Redeposits und NGR pro Affiliate attribuiert werden – ideal, um CPA-, Revenue-Share- oder Hybrid-Deals gegen echten Wert abzurechnen.

Wert nach dem FTD (NGR und Player-LTV) ohne doppelte Zählung

Ein Spieler zahlt weiter ein und erzeugt weiter Revenue – entscheide einmal, wie das erscheinen soll:

  • Eine Conversion, aktuell gehalten – setze WonClient (oder NGRUpdate) auf Edit conversion with new data, sodass die neueste Zahl dieselbe Conversion aktualisiert (gut für „aktueller Spielerwert / NGR").
  • Jeder Deposit als neues Revenue – setze WonClient auf Keep original data, increment payout, sodass jeder Deposit obendrauf addiert (gut für „insgesamt eingezahlt"). Dieser Modus ist WonClient-only.
  • Auszahlungen / Bonuskosten verrechnen – sende eine Conversion mit negativem revenue, oder lass dein NGRUpdate sie bereits berücksichtigen, sodass das NGR die Source of Truth bleibt.

Siehe die Modus-Tabelle in Events & der Events Manager.

Prüfen, ob es funktioniert

  1. Öffne deine Seite über einen getrackten Link (einer mit lj_*-Parametern, z. B. eine Test-Ad-URL oder ein mit dem UTM-Builder gebauter Link), sodass eine Click-ID gespeichert wird.
  2. Lauf den Funnel mit einem Test-Spieler durch: registrieren, einen Test-First-Time-Deposit machen, dann einen Redeposit (oder deinen NGR-Cron laufen lassen).
  3. In Settings → Events steigt der Total-Zähler jedes Events und der Status wird Active.
  4. Um einen einzelnen Call zu prüfen (Statuscode, Payload, ob Click-ID, E-Mail oder Telefon gematcht haben), öffne das API-Postbacks-Log.

Keine Click-ID? Sende das Event trotzdem

Ein Spieler, der organisch, über einen Affiliate-Redirect oder direkt kam, hat vielleicht keine Click-ID, also ist click_id leer – das ist okay. Sende trotzdem jede Stufe mit E-Mail und Telefon: LeadJourney matcht auch darauf, sodass der Spieler erfasst und später attribuiert werden kann, falls er vorher einen getrackten Link geklickt hat. Blockiere ein Deposit-Event nie nur, weil die Click-ID fehlt.

FAQ

Verwandte Artikel

Auf dieser Seite