Skip to content

fix(segment-wrapper): prevent Safari ITP from clearing referrer and campaign tracking params#1981

Open
kikoruiz wants to merge 1 commit intomasterfrom
revert-to-4.36.0-with-safari-fix
Open

fix(segment-wrapper): prevent Safari ITP from clearing referrer and campaign tracking params#1981
kikoruiz wants to merge 1 commit intomasterfrom
revert-to-4.36.0-with-safari-fix

Conversation

@kikoruiz
Copy link
Copy Markdown
Member

Summary

Fixes Safari ITP (Intelligent Tracking Prevention) issue where document.referrer and campaign tracking parameters are cleared after page load, causing loss of attribution data in analytics.

Problem

Safari ITP:

  • Clears document.referrer after page load, losing external referrer information
  • Strips UTM/campaign parameters from URL via redirects
  • Causes first page events to have empty referrer and missing campaign data

Solution

Capture critical values at module load time before Safari ITP can clear them:

pageReferrer.js:

  • INITIAL_DOCUMENT_REFERRER - captured at module load
  • INITIAL_SEARCH_STRING - captured before parameter stripping
  • INITIAL_URL - captured for first page event
  • Direct initialization of referrerState.referrer with captured value

googleRepository.js:

  • Changed retargeting medium mapping: rt: 'display'rt: 'retargeting'

Changes

  • /src/middlewares/source/pageReferrer.js - Module-load capture of referrer, search, and URL
  • /src/repositories/googleRepository.js - Retargeting medium mapping fix
  • /test/stubs.js - Updated test stubs for referrer state management
  • /test/segmentWrapperSpec.js - Added Safari ITP protection tests, removed incorrect test

Testing

  • ✅ 108 tests passing
  • ✅ New tests verify referrer/search capture at module load
  • ✅ Existing referrer tests updated for new initialization behavior

@kikoruiz kikoruiz changed the title fix(segment-wrapper): prevent Safari ITP from clearing referrer and c… fix(segment-wrapper): prevent Safari ITP from clearing referrer and campaign tracking params Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant