We take payments on the web but rely on RevenueCat/Adapty to gate features in the app. Keeping everything in sync took a few tries.
What worked for us:
- Use our own customer_id and pass it to RevenueCat/Adapty as app_user_id. Never rely on device ids.
- On web purchase, call their API to create/update the subscriber and attach the entitlement with the correct product and period.
- Webhooks from our gateway power a server that updates the subscription and also notifies RevenueCat/Adapty. We added idempotency keys to avoid double grants.
- On first app login, we link the existing app_user_id to the device. If a user starts in the app then buys on web, we merge accounts to one id.
- Degraded mode: if the entitlement call lags, we grant a short grace period in‑app and recheck.
Question: if you run web‑to‑app flows with RevenueCat/Adapty, how are you mapping identity and handling timing/race conditions so analytics and entitlements stay aligned?