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-Stufe | Event-type | Wie du es sendest | Revenue? |
|---|---|---|---|
| Registrierung / Sign-up | Lead | Form-Listener, oder die Server-Route unten | — |
| First-Time Deposit | WonClient | Server-Route aus Player-Plattform / CRM | ✓ Deposit-Betrag |
| Qualifying Deposit (optional) | QualifiedDeposit | Dieselbe Server-Route | optional |
| Redeposit | Redeposit | Dieselbe Server-Route | ✓ |
| Net Gaming Revenue | NGRUpdate | Dieselbe Server-Route (aus nächtlichem Cron) | ✓ |
| Reactivation (optional) | Reactivation | Dieselbe Server-Route | optional |
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
Leadfü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
localStoragein 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:
| Event | Empfohlener Modus | Hinweise |
|---|---|---|
Lead (Registrierung) | Ignore duplicate postbacks | Einmal pro Spieler – verwirft versehentliche Wiederholungen. Send back to Ads anlassen. |
WonClient (FTD) | Edit conversion with new data | Include Revenue Value an und den Deposit-Betrag senden. Send back to Ads anlassen. |
QualifiedDeposit | Ignore duplicate postbacks | Feuert nur einmal, wenn ein Deposit deine Schwelle erfüllt. |
Redeposit | Create new conversion | Jeder Redeposit ist ein neues Event – oder stattdessen WonClient hochzählen (siehe unten). |
NGRUpdate | Edit conversion with new data | Hä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(oderNGRUpdate) 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
WonClientauf Keep original data, increment payout, sodass jeder Deposit obendrauf addiert (gut für „insgesamt eingezahlt"). Dieser Modus istWonClient-only. - Auszahlungen / Bonuskosten verrechnen – sende eine Conversion mit negativem
revenue, oder lass deinNGRUpdatesie 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
- Ö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. - Lauf den Funnel mit einem Test-Spieler durch: registrieren, einen Test-First-Time-Deposit machen, dann einen Redeposit (oder deinen NGR-Cron laufen lassen).
- In Settings → Events steigt der Total-Zähler jedes Events und der Status wird Active.
- 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
iGaming-&-Sportwetten-Playbook
Die Gesamtübersicht: Funnel, Setup und Reporting für Operator.
Events & der Events Manager
Funnel-Events anlegen, Modi wählen und die Conversion-API-Credentials holen.
Sign-ups in deiner App tracken (inkl. SSO)
Der Deep-Dive zum Registrierungs-Event, inkl. Google & Microsoft SSO.
API-Postbacks-Log
Jeden FTD- und Deposit-Call prüfen und bestätigen, dass er auf Klick, E-Mail oder Telefon matchte.
Deinen kompletten SaaS-Funnel tracken (Sign-up → Trial → Kauf)
Die komplette Anleitung für SaaS-Produkte – ordne jede Stufe deines Lifecycles dem Werbe-Klick, Post oder der E-Mail zu, die ihn gebracht hat. Tracke Demo-Calls und Free-Sign-ups, dann Trial gestartet, Trial beendet und den bezahlten Kauf. Käufe kommen automatisch über Stripe rein; die In-Product-Meilensteine sendest du mit einer winzigen Server-Route. Die Kernidee: die Click-ID einmal beim Sign-up erfassen und bei jedem späteren Event erneut mitschicken.
Sign-ups in deiner App tracken (inkl. Google & Microsoft SSO)
Feuere ein Lead-Event, wenn jemand in deiner SaaS ein Konto erstellt – für das E-Mail/Passwort-Formular und für die Registrierung über Google und Microsoft (SSO). Der Form-Listener erkennt SSO-Registrierungen nicht, also sendest du das Event selbst – mit einer kleinen Server-Route und der Click-ID über den OAuth-state-Parameter.