Feature · Account
User links
App groups handle the case where the same external_id exists in multiple apps. User links handle the inverse: one person has two differentexternal_id values because the tenant's auth systems aren't shared (e.g. an iOS-only login vs a Web Auth0 account).
How it works
Create a link between two users and their subscriptions get unioned at entitlement lookup time. One-hop traversal — if A is linked to B and B is linked to C, querying A returns A+B but not C. Explicit links between each pair are required. Keeps the query cost bounded.
Use cases
- Support ticket: user paid on web, installed the iOS app under a new local-only account, Pro doesn't apply. Link them.
- Migration from a legacy ID system — link old → new so entitlements continue.
Cache
Users with at least one link bypass the entitlement KV cache (two parallel queries per lookup: one for group membership, one for link existence). On link creation we invalidate cache entries for both sides.
REST endpoints
GET /v1/admin/users/:id/linksPOST /v1/admin/users/:id/links— body:{ other_user_id, reason? }DELETE /v1/admin/user-links/:id