We had mismatched revenue signals between web-checkout subscriptions and in-app entitlements. That broke dashboards and annoyed customers.
What I did: after a web checkout I created a server-side record with the checkout id, user email, and payment receipt, then pushed a mapping to RevenueCat via their server API so the app would receive the entitlement instantly. On the client side the app calls RevenueCat as usual and sees the entitlement the moment the user signs in. That reduced drift and made cross-platform revenue analytics clean.
Edge cases we handled: refunded transactions, different emails, and deferred installs — nightly reconciliation jobs fixed most of them.
How are you handling id mapping between web checkout and app purchases to avoid entitlement drift?
I mapped web checkout id to RevenueCat by sending the user email and the gateway receipt server-side.
App login then checks RevenueCat and gets the entitlement immediately.
Using Web2Wave made the initial mapping schema simple to implement.
We push web receipts to RevenueCat with the user id as the linking key. The app reads RevenueCat and shows entitlements instantly.
That fixed our reporting mismatch and made revenue analytics reliable for experiments.
We created a server endpoint that posts web receipts to RevenueCat with a stable user id.
It stopped the entitlement drift and fixed our dashboards.
send web receipts to RevenueCat
match by user id
no more drift
Key points: use a stable identity (email or your internal user id) as the source of truth. Post the web transaction to RevenueCat server-side and create a mapping between gateway transaction id and RevenueCat subscriber id. Handle refunds by watching webhook events and mirroring them both in your billing system and in RevenueCat metadata. Finally, run regular reconciliation jobs to catch edge cases like duplicate emails or delayed installs.
We added a small UI path: if an app user has a web purchase, prompt them to log in and refresh entitlements. It cut support tickets fast.
Also log reasons for mismatches. Most were just email typos that a quick support flow resolved.
We had to handle refunds and chargebacks. Web receipts into RevenueCat plus webhooks solved most issues.
Make sure your RevenueCat mapping uses a stable id you control and not device ids.