zylior
← Blog

First-Party-Attribution: Besucher ohne Third-Party-Cookies tracken

Du startest eine Kampagne, siehst 400 Besucher in Google Analytics, 12 Anmeldungen… und kannst nicht sagen, welche aus welcher Quelle stammen. Willkommen in der Attribution nach den Third-Party-Cookies, wo 30 bis 50 % deines Traffics unsichtbar geworden sind. Die gute Nachricht: Du brauchst weder GA noch Third-Party-Pixel. Ein Pixel, das von deiner eigenen Domain ausgeliefert wird, genügt, um die Kette Besuch → Anmeldung → Umsatz zu rekonstruieren, und es übersteht alles, was die klassischen Tracker kaputtmacht.

Warum die klassischen Lösungen einbrechen

Third-Party-Pixel (Meta Pixel, Googles `gtag.js`, Hotjar…) setzen ein Cookie oder lesen eine Kennung von einer anderen Domain als deiner. Genau das haben die Browser beschlossen zu töten. Drei Kräfte laufen zusammen, und du erleidest sie bereits:

Das Gemeinsame dieser drei Brüche: Sie zielen auf den Dritten. Wenn die Kennung von deiner Domain stammt und nur dir dient, greifen die meisten dieser Regeln nicht auf dieselbe Weise.

Das Prinzip: ein First-Party-Pixel + eine anonyme visitor_id

Die Idee besteht aus drei Teilen. Du lieferst einen Sammel-Endpoint auf deiner eigenen Domain aus (idealerweise eine Subdomain wie `t.deineapp.com`, keine externe Tracking-Domain). Beim ersten Besuch generierst du eine zufällige `visitor_id` und speicherst sie in einem First-Party-, HttpOnly-, Secure-Cookie. Bei jedem Seitenaufruf schickt der Browser dieses Cookie an deinen Server zurück, der das Ereignis loggt. Das Detail, das alles ändert: Das Cookie wird durch eine HTTP-Antwort `Set-Cookie` auf der Serverseite gesetzt, nicht per `document.cookie` in JavaScript. Genau diese Nuance umgeht die 7-Tage-Grenze von ITP — die Grenze zielt auf per JS gesetzte Cookies, nicht auf die vom Server in First-Party gesetzten. Und `HttpOnly` macht sie für jedes Skript unlesbar, also unbrauchbar für Diebstahl per XSS.

# Réponse de ton endpoint /t/collect servi sur t.tonapp.com
HTTP/1.1 204 No Content
Set-Cookie: vid=8f3c1a9e-...; Max-Age=63072000; Path=/;
  Domain=.tonapp.com; HttpOnly; Secure; SameSite=Lax

// pixel.js côté client (~10 lignes) :
// fetch("https://t.tonapp.com/t/collect", {
//   method: "POST", credentials: "include", keepalive: true,
//   headers: { "Content-Type": "application/json" },
//   body: JSON.stringify({ path: location.pathname,
//     ref: document.referrer, utm: location.search, ts: Date.now() }) });

Die Verschmelzung: von der anonymen visitor_id zur bewiesenen Identität

Solange der Besucher anonym ist, sammelst du Ereignisse, die an eine undurchsichtige `visitor_id` gebunden sind. Die Magie passiert im Moment der Anmeldung: Der Nutzer beweist seine E-Mail (Bestätigungslink oder OTP), und du machst das Stitching — du verbindest die `visitor_id` des Cookies mit dem frisch erstellten Konto. In diesem Augenblick wird die ganze anonyme Vorgeschichte (erster Besuch, Quelle, gesehene Seiten) rückwirkend an eine echte Identität gebunden.

  1. Lies im Moment des Signups das Cookie `vid` serverseitig in derselben Anfrage.
  2. Schreibe eine Zeile `identity(visitor_id, user_id, email_verified_at)` — die bewiesene E-Mail, nicht nur die eingegebene.
  3. Hänge alle anonymen Ereignisse mit dieser `visitor_id` an die `user_id`. Du erhältst den vollständigen Pfad: Twitter → /pricing → /signup → E-Mail bestätigt.
  4. Bonus: Wenn sich dieselbe E-Mail von einem anderen Gerät erneut verbindet, verschmilz zwei `visitor_id` unter einer einzigen `user_id`.
Verschmilz NIEMALS auf Basis einer bloß in ein Feld getippten E-Mail. Warte auf den Beweis (Bestätigung/OTP). Sonst verseucht ein Besucher, der `konkurrent@gmail.com` eingibt, die Attribution eines echten Kontos — und du hast gerade eine Lücke zur Konto-Enumeration eingebaut. Der E-Mail-Beweis ist die Grenze zwischen anonym und identifiziert.

Was du gegenüber Google Analytics und Third-Party-Pixeln gewinnst

Das ist kein Freibrief, alles ohne Einwilligung zu tracken. First-Party reduziert das technische Risiko und je nach Zweck gewisse Banner-Notwendigkeiten, aber die DSGVO denkt nach Zweck und nach Rechtsprechung (Aufsichtsbehörden inklusive). Wenn du Marketing-Profiling betreibst, brauchst du eine Rechtsgrundlage. Halte das Pixel zur internen Messung getrennt von jeglicher Werbe-Anreicherung.

Die Fallen, die das Setup in der Produktion zerlegen

Fang klein an: ein Endpoint, ein `Set-Cookie`-HttpOnly-Cookie, das auf deiner Subdomain ausgeliefert wird, eine Tabelle `events(visitor_id, path, ref, ts)` und eine Tabelle `identity(visitor_id, user_id)`, die befüllt wird, sobald die E-Mail bewiesen ist. Du hast an einem Nachmittag eine Attribution, die Safari, die Blocker und die Einwilligung übersteht — und die sich direkt an dein MRR anschließt. Wenn das läuft, ergänze Multi-Device und die Zählung der Quellen. Der Rest ist SQL.

Der Newsletter

Mit der Anmeldung stimmst du dem Erhalt des Zylior-Newsletters zu. 1-Klick-Abmeldung in jeder E-Mail.