Crossdeck binds a person to the most durable anchor you provide
Everything about identity follows from one idea: Crossdeck attaches a person to the most durable anchor your setup gives it — an anonymous handle, a Stripe customer, or your own app's user ID. The more durable the anchor, the more Crossdeck can do. So where you sit isn't a setting you pick; it's a consequence of what your app already has.
Find yourself on the ladder
There are three tiers, climbing from least to most durable. Most apps know their tier in one read:
- Tier 1 — no backend, no payment. Anonymous visitors, journey analytics only. There's no money and no entitlements, so there's no durable identity to anchor to and nothing to stitch. You read what people did; you don't carry who they are.
- Tier 2 — Stripe, no backend. The Stripe customer is the anchor; revenue is tracked against them. It's a single surface, so there's no cross-platform stitch — because there's no app identity to bridge to. This is a complete, valid mode, not a degraded one.
- Tier 3 — backend present. Your authenticated app UID is the anchor — the passport. Identity persists across web and iOS, the Stripe subscription attaches to the UID, and entitlements follow the human across platforms. This is the only tier where stitching applies.
The same UID on web and mobile is the same human
On Tier 3, the whole mechanism is this: you hand Crossdeck the same UID on web and on mobile. The web subscription attaches to that UID; the mobile install's anonymous handle aliases into it — so Pro resolves on the phone too. You assert the identity; Crossdeck doesn't guess, fingerprint, or match on email.
And the one rule that makes it work, the one to never get wrong:
- The UID is what stitches — never the email. Apple Private Relay alone guarantees the iOS email won't match the web one, so email can't be the key.
- The device handle is throwaway. The SDK-minted handle is anonymous — it gets attached to the UID; it is not the identity.
- Skip
identify()in the mobile app and your paying web customer sees free. That's the failure this rule prevents.
You know your tier — now you know what to do
If you're Tier 1 or Tier 2, you're done — cross-platform identity doesn't apply to you, and that's fine. If you're Tier 3 with real accounts on web and mobile, there's exactly one thing to do: call identify() with the same UID on both platforms. The next lesson wires that to your auth provider.
On Tier 3, user_847 is one record — web subscription attached, mobile handle aliased in, Pro live on both. The UID is the passport.