Memo: Attribution stitching for cross-device pre-Person traffic
Date: 2026-04-28 From: Growth To: Platform Status: Open. Active question for Growth's attribution model v2 and for Platform's warehouse semantic layer.
Why
Pre-Person traffic does not have a person_id. Multi-touch attribution wants to credit the channels that touched a Person before they became one. Growth's current join key is best-effort (cookie ID, visitor ID, anonymous_id from the client) and falls apart across devices. A user on mobile becomes a Person after a desktop conversion, and the attribution model loses the mobile touches.
The fix is a join key that survives the eventual mint. The available signals: hashed phone (only available after the first form submission), hashed email (available earlier if the user gives an email-only signup), platform-issued anonymous ID with cross-device propagation, or third-party identity graph integration (rejected today on cost and privacy grounds).
This is squarely between Growth's domain (it shows up in Growth's attribution model) and Platform's (it is the same identity graph problem Platform solves at mint time). The warehouse semantic layer is where the unified view lives, which makes this also Platform-shaped on the read side.
What
Two related decisions:
The pre-mint identifier shape. Recommendation: emit a stable growth.visitor_id on the first touch, propagate via first-party cookies and via signed query parameters across devices when possible (login-link-style stitching), and stamp every intake.captured with the visitor_id as a non-canonical attribute. Platform's mint can ignore it for identity purposes; the warehouse uses it to stitch the funnel.
The post-mint stitching rule. When a Person is minted, the warehouse model should treat all pre-mint touches under the matching visitor_id as touches on that Person. This is a semantic-layer concern; Platform owns the layer.
Asks
Confirm Platform is comfortable with growth.visitor_id riding as a non-canonical attribute on intake.captured. This is an envelope-version change unless we file it under the existing optional metadata bag; Growth would prefer the metadata bag if shape allows.
Sketch the semantic layer's rule for resolving pre-mint visitor traffic to post-mint Persons. Growth needs to know what is in the canonical attribution metric and what is not before the funnel dashboard can claim accuracy.
References
- ADR-0005 (event envelope)
coordination/domains/growth.mdcoordination/domains/platform.md(warehouse rails, semantic layer)