My project offers a website and an app. Most users start on the web, then later download the app. They frequently encounter a problem in the following scenario.
Steps
- Website: Create an account. Upon login, the site asks the RevenueCat REST API if the user has an existing subscription. Since the account doesn’t exist in this scenario, RevenueCat creates it, according to the documentation.
- Device A: Install the app and receive an anonymous RevenueCat ID. Log into the account previously created on the web. As mentioned in this table, RevenueCat automatically merges the anonymous ID with the app ID. The user’s one alias slot is now used up.
- Device A after logout/reinstall, or on Device B: Receive a new anonymous RevenueCat ID. See an offer to upgrade (usually during app onboarding) and subscribe. Later, log into the existing account to access user data. RevenueCat does not merge the anonymous ID with the existing app user ID, so it now reports that the user does not have an active subscription. The user must “restore purchases” to unlock Premium again.
This affects a small percentage of my users, but enough of them that it is my most frequent customer support issue. For my most valuable customers, it’s a confusing and poor experience.
Possible solutions I’ve considered:
- I could require sign-in before purchases are allowed. My testing has shown that this significantly reduces the number of new subscriptions, so this is very undesirable. Many users subscribe without ever logging in.
- RevenueCat could change the behavior of ID merging/aliasing. It’s not clear to me why an anonymous ID wouldn’t be merged with an app user ID just because one other alias already exists.
- I could manually merge the IDs, since RevenueCat doesn’t do it automatically in this scenario. In another thread, someone referenced a REST API method that can manually merge accounts, but I don’t see this documented anywhere.
- Programmatically call “restore purchases” when the user logs in and loses their subscription. However, the documentation discourages this because it sometimes presents OS-level UI.
I could really use some help here. I’d love to address my #1 customer support problem without negatively impacting revenue. Thanks!