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
Tracking-Cookie pa_tracking
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. |
Cookie-Consent
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
lifetimemarkiert ist (häufig: erste Sale → Lifetime). - ODER die Kampagne
allow_partner_change=falsegesetzt 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
- 51 — Attribution-Modelle
- 52 — UTM, Sub-IDs, Fingerprint
- 95 — Cookie-Consent
- 58 — Lead-Capture-API (für externe Tools)
Technische Tiefen-Doku: ../001-initial-setup.md (TrackingService), ../058-unified-tracking.md (PartnerResolver)