Question

Free Trial with Anonymous RevenueCat App User ID vs. Custom User ID

  • 6 April 2023
  • 3 replies
  • 151 views

Badge +4

 

Suppose you don’t have any user registration or account system.

Now, if the user downloads your app (let’s say with 1 week free trial), and deletes the app, and re-downloads it again, if they are using random/anonymous user IDs that are generated by RevenueCat, then they will be able to circumvent the subscription process by simply deleting and resinstalling the app to get another 1 week free. They can do this repeatedly. Am I correct?

If so, then it seems important to use custom user IDs in this scenario (for example, UIDevice.currentDevice.identifierForVendor.UUIDString) which will generate a unique user ID for each device for the vendor/app. Then we can check if the user has already downloaded and installed the app and taken advantage of the free trial, and if so, don’t allow another. Correct?

If we use this approach, the subscription won’t be available on any other devices. But that’s okay, since on those devices, we can always use the “Restore Purchases” button to get access to those already paid-for subscriptions associated with the same app store account (Apple ID). Correct?

 


3 replies

Badge +4

 

I’ve been reading further on the restoring purchases documentation, and I see there is the Alias (Legacy) option when restoring purchases:

 

https://www.revenuecat.com/docs/restoring-purchases

 

"The legacy behavior is to merge (alias) any App User IDs that restore the same underlying subscription and treat them as the same subscriber moving forward. This applies to both anonymous and identified App user IDs. You can continue to use this legacy behavior as long as you'd like, but you cannot re-enable the alias behavior if you switch to Transfer Purchases or Block Restores."

 

This is exactly what is needed in the above scenario, in order to prevent repeated installs/reinstalls that can circumvent subscription which would happen with anonymous App User Ids. Therefore I need "identified" (custom) App User IDs so I can keep track of user info to prevent this kind of circumvention of the subscription process. But for some reason my project (a new project) doesn't allow me to specify Alias (Legacy) behavior which is the right behavior. Why is this disabled? This is the only solution that makes sense in this situation.

 

Does this mean that RevenueCat can no longer to be used to implement Free Trials without leaving a gaping subscription circumvention hole in the subscription process?

 

Userlevel 6
Badge +8

Hey @Dalmazio!

Now, if the user downloads your app (let’s say with 1 week free trial), and deletes the app, and re-downloads it again, if they are using random/anonymous user IDs that are generated by RevenueCat, then they will be able to circumvent the subscription process by simply deleting and resinstalling the app to get another 1 week free. They can do this repeatedly. Am I correct?

 

Since the stores themselves control free trials (via eligibility of the underlying store account, e.g. the user’s Google account or an Apple ID), even if a user deletes and reinstalls they won’t be eligible for another trial.

 

If so, then it seems important to use custom user IDs in this scenario (for example, UIDevice.currentDevice.identifierForVendor.UUIDString) which will generate a unique user ID for each device for the vendor/app. Then we can check if the user has already downloaded and installed the app and taken advantage of the free trial, and if so, don’t allow another. Correct?

If we use this approach, the subscription won’t be available on any other devices. But that’s okay, since on those devices, we can always use the “Restore Purchases” button to get access to those already paid-for subscriptions associated with the same app store account (Apple ID). Correct?

 

Introductory offers like free trials are generally applied automatically without extra effort on your end as the developer, but you can check trial eligibility via the `checkTrialOrIntroductoryPriceEligibility` method in the SDKs, without needing to know the user’s previous ID, etc. You can read more about trials and promotional offers here: https://www.revenuecat.com/docs/subscription-offers

Badge +4

Great, thanks for the clarification. So there really is no reason not to use anonymous App User Ids in this situation. That simplifies things.

Reply