Hier hilft der Referrer nicht: document.referrer ist
auf den Referrer des Dokuments eingefroren — bei Anzeigen-Traffic
https://www.google.com/, ein fremder Origin ohne gclid.
Das Widget merkt sich deshalb die Zuordnung, die die API beim ersten
save_traffic geliefert hat, und schickt sie bei jedem
Routenwechsel wieder mit.
history.pushState — kein Neuladen, dasselbe Dokument.
attribution_carry: null und wird über url zugeordnet,
jeder weitere schickt den gemerkten Satz und wird über carry
zugeordnet.
Die Routen sind erfunden — ein Neuladen darauf endet in einem 404.
Genau darum geht es: Es gibt keine zweite Seite, nur eine geänderte URL.
Ein Wechsel, der nur die Query ändert, zählt nicht — isSignificantUrlChange
vergleicht Origin und Pfad.
Bid wählen: ?default=<id> (oder ?bid=), dazu optional banner_id und lng — sie überleben jeden Schritt dieser Testseiten.
Die Seite ohne Merkmale betreten („ohne Merkmale (Kontrolle)" oben) und
dann eine Route wechseln: Der zweite Aufruf schickt attribution_carry: {}
— nicht null. Daran erkennt die API, dass dieses Dokument schon
beantwortet ist, und liest den Referrer kein zweites Mal.
Warum das nötig ist, zeigt der Weg über Seite 1: von
attribution-mpa.html mit Merkmalen hierher
wechseln und dann eine Route klicken. document.referrer bleibt für die
ganze Lebensdauer des Dokuments auf Seite 1 stehen. Ohne die Schranke würde jeder
Routenwechsel den Referrer erneut auswerten — und sobald die Einstiegsseite selbst
Merkmale trug, gewönne die ältere Kampagne aus dem Referrer gegen die neuere aus der
URL. Genau das verbietet Regel 1 im Ticket.
→ Der andere Fall: echter Seitenwechsel
Testtraffic, weil Maven360-Host
(promo_widget_traffic.TEST = 1).