50 — Tracking-Cookie & Klick-Erfassung

Aktualisiert am 1. Juni 2026

50 — Tracking-Cookie & Klick-Erfassung

Das Tracking-System sorgt dafür, dass ein Klick auf einen Partner-Link später als Conversion dem richtigen Partner zugeordnet wird — auch wenn zwischen Klick und Sale Stunden oder Tage liegen.

Lebenszyklus eines Klicks

1. Besucher klickt Partner-Link  
   ┌─────────────────────────────────────────────┐
   │ <tenant>.partnerdesk.io/t/<campaign>?       │
   │   pid=<partnerId>&sub1=...&utm_source=...   │
   └─────────────────────────────────────────────┘
                       │
                       ▼
2. TrackingController erfasst Klick
   - speichert TrackingClick (IP, UA, Referer, UTM, SubIDs)
   - setzt Cookie pa_tracking (clid, pid, cid, ts)
   - redirected zur Kampagnen-Landing-URL
                       │
                       ▼
3. Besucher kauft (eventuell Tage später)
                       │
                       ▼
4. Provider sendet Webhook an PartnerDesk
                       │
                       ▼
5. PartnerResolver ordnet Sale dem Partner zu
   (5-stufige Logik, siehe unten)
                       │
                       ▼
6. Provision wird berechnet + persistiert

Inhalt (Base64-encoded JSON)

{
  "clid": "uuid-des-clicks",
  "pid":  "P-001",
  "cid":  "summer-promo-2026",
  "ts":   1716800000
}

Eigenschaften

Eigenschaft Wert
Lifetime Aus Campaign.cookieLifetimeDays (Default 30 Tage).
Scope Path /, Domain = Tenant-Subdomain.
SameSite Lax — wirkt bei Cross-Site-Redirects, schützt aber gegen CSRF.
Secure Immer true (nur über HTTPS).
HttpOnly false — JavaScript kann den Cookie lesen, damit das Tracking-Snippet auf der Tenant-Site Conversions per Postback senden kann.

Der Cookie wird nur gesetzt, wenn der Besucher in der Kategorie „marketing" zugestimmt hat (Cookie-Consent-Banner, siehe 95).

Wichtig: Das server-seitige Click-Recording (TrackingClick-Datensatz) läuft auch ohne Consent — das ist nicht consent-pflichtig, weil keine Cookies gesetzt werden und die Daten nur aggregiert verwendet werden (TTDSG-konform).

Die 5-stufige Partner-Auflösung

Bei einem eingehenden Webhook entscheidet der PartnerResolver, welchem Partner der Sale zugeordnet wird:

Stufe Quelle Bedingung
1 Customer-Lock Customer ist lifetime-assigned ODER Kampagne hat allow_partner_change=false → bestehende Zuordnung gewinnt gegen jeden anderen Hinweis
2 Explicit Provider-Webhook enthält partner_id, affiliate_id o. ä. — Partner muss in selbem Tenant aktiv sein
3 Cookie pa_tracking-Cookie im Browser, Click-Record noch innerhalb Lifetime
4 Fingerprint IP + User-Agent matcht einen Klick innerhalb Cookie-Lifetime
5 Unassigned Keine Quelle liefert einen aktiven Partner → TX wird trotzdem persistiert (STATUS_UNASSIGNED), Admin kann manuell zuordnen

Customer-Lock im Detail

Die wichtigste Eigenschaft: ein einmal zugeordneter Customer kann nicht versehentlich oder absichtlich einem anderen Partner zugeschlagen werden, wenn:

  • Die Zuordnung als lifetime markiert ist (häufig: erste Sale → Lifetime).
  • ODER die Kampagne allow_partner_change=false gesetzt hat.

Damit wird verhindert, dass ein konkurrierender Partner den Endkunden „abgreift".

UTM-Parameter & SubIDs

Beim Klick werden zusätzlich aus URL-Parametern erfasst:

  • utm_source, utm_medium, utm_campaign — Standard UTM-Felder für Analytics.
  • sub1, sub2, sub3 — freie SubIDs für eigene Aufteilung (z. B. nach Landingpage-Variante).

Diese erscheinen in der späteren Transaction als zusätzliche Metadaten.

Details: 52 — UTM & SubIDs.

Tracking-Snippet für Tenant-Site

Auf Tenant-eigener Webseite kann das Tracking via JS-Snippet integriert werden:

<script src="https://<slug>.partnerdesk.io/tracking.js" async></script>

Das Snippet bietet ein window.PartnerTracking-Objekt mit:

  • getPartnerId() — aktueller Partner aus Cookie.
  • getClickId().
  • sendConversion(data, callback) — manueller Postback für JS-getriebene Conversions (z. B. Newsletter-Anmeldung).

Auch automatische ?pid=-/?ref=-Erkennung aus URL-Parametern beim ersten Seitenaufruf.

Was wird nicht getrackt

PartnerDesk trackt keine personenbezogenen Daten in Cookies:

  • Kein Vor-/Nachname.
  • Keine Email-Adresse.
  • Keine IP im Cookie (IP nur in server-seitigem TrackingClick-Datensatz).

Damit ist das Cookie selbst nach DSGVO als pseudonym klassifizierbar — was nicht heißt, dass es ohne Consent gesetzt werden darf (ePrivacy/TTDSG fordern Consent für alle nicht-essentiellen Cookies).

Verwandte Kapitel


Technische Tiefen-Doku: ../001-initial-setup.md (TrackingService), ../058-unified-tracking.md (PartnerResolver)