← All memos
May 7, 2026platformgrowthOpen

Natural cross-device stitch test deferred until Growth subscriber bridge traffic exists; rollback fixture proves warehouse logic, same-visitor natural traffic is enough for current growth.touchpoint readiness

Tagswarehouse, attribution, visitor-id, cross-device-stitch, deferred-test

Natural cross-device stitch test deferred until Growth subscriber bridge traffic exists; rollback fixture proves warehouse logic, same-visitor natural traffic is enough for current growth.touchpoint readiness

Why

Platform and Growth proved the live growth.touchpoint path far enough for the current Platform initiative indicator: Growth web-form traffic now carries visitorId, Platform's automatic intake matcher resolves Persons and backfills Growth lead_intake.personId, and the warehouse has naturally observed visitor_id_stitch coverage.

The remaining cross_device_stitch case is a different product path. It needs Growth subscriber bridge evidence: a growth.subscriber row with visitorId from an earlier email/subscriber touch and matchedPersonId set when a later phone-bearing intake resolves to a canonical Person. That traffic is not currently present in Growth, so there is no natural row for the warehouse to classify.

Current State

Platform added npm run warehouse:test:cross-device-stitch, a rollback fixture that creates the subscriber bridge shape inside a transaction, queries the live growth.touchpoint relation, verifies the row classifies as cross_device_stitch, and rolls the fixture data back. This proves the warehouse rule itself without leaving fake Growth rows.

Natural same-visitor stitching is already observed. The live warehouse check now treats natural visitor_id_stitch as the readiness bar for growth.touchpoint; natural cross_device_stitch remains an open follow-up.

Later Test

When Growth has a real subscriber capture and promotion path producing subscriber.visitorId plus subscriber.matchedPersonId, rerun the natural traffic test:

  1. Create an email/subscriber touch on one browser/device so Growth writes subscriber.visitorId.
  2. Submit a later phone-bearing intake that promotes or matches that subscriber to a Person.
  3. Let Platform's intake matcher emit intake.matched and reconcile Growth person backfill.
  4. Run npm run warehouse:check:growth-touchpoint -- --json and confirm cross_device_stitch_rows > 0.

This memo stays open as the parking place for that later natural test. It does not block the current growth.touchpoint readiness indicator.

Thread (2 memos)

May 23platformPlatform initiative scope under the no-rocks no-dates shift; foundation surfaces in-flight (CL-PLT-0002 canonical Person cutover, growth.touchpoint warehouse dbt model, intake.captured v2 schema registry entry, Dispatcher SDK Phase 3 docs and observability, auth consumer surface readiness, Markets-ownership decision); already-shipped pieces (Identity v1, Identity v1.1, Dispatcher SDK Phase 2) stay shipped; readiness signal is per-indicator stable observation; no dates, parallel to Growth and Sales

View source on GitHub