Skip to main content

I am pretty new to Revenuecat. Sorry if this problem is answered a hundred times, but I could not find a solution. Here is my problem:

I do have an iOS app and have a paywall view. The user can either subscribe for a monthly or annual payment (I managed to set this up in App Store Connect and Revenuecat and this all works fine), or he can select a free trial for 14 days.
I know, that I can set up a free trial in app store connect, but as far as I understand, this automatically will start a chargeable subscription, if he does not cancel before the end of the trial period. So in fact the free trial is part of subscription and the user has to choose a subscription method at the paywall. This seems not very appealing to me.
I rather would like to say: “Click here and have a look”. When the user clicks ‘here’ then(!) the free trial period starts (without selecting a subscription method). During the free trial I can present a counter: ‘X days left’. After 14 days the user cannot access the content behind the paywall, but get’s the paywall and the subscription methods presented.
Of course, I could implement such free period tracker programmatically, but if the user deletes the app and makes a new install the free trial period would start again, which I do not want.

So here is my question: Is it possible to offer a free trial for 14 days without the need for the user to choose a subscription plan, to start that free trial when the user is ready to start (click/touch) and to remember the user ‘somewhere’ at Revenuecat to avoid, that the user can activate the free trial again? What are the steps to implement this?

I am one step further: I found this article: 

which is pretty much the same problem. And Ryan Glanz is recommending Promotions. I followed the link and had a read through. As far as I understand, the talk is about ‘Granted entitlements’. The further description shows how to activate such Granted entitlement, BUT only for one specific customer, right? I want this feature for all new customers. Any idea, how this can be done?


Hi ​@Snoody! The link you found re: granted entitlements is relevant; here’s the flow you might consider building:

  1. When a user taps the “Give me 14 days free” button, call a function on your backend
  2. This backend function takes the app user ID and calls our grant an entitlement API endpoint (which gives the user access for the period of time specified in the API call)
  3. Your app fetches new customerInfo, which will show the entitlement they’ve just been granted and allows them to use your app
  4. After the 14 days is up, the entitlement will expire, and they’ll see your paywall again (depending on how you trigger your paywall)

Now, if you don’t identify your users with custom IDs (i.e., all users are anonymous), they’ll be able to delete your app and get the trial again. So this is a limitation of this method.

Another way of achieving this is, when users tap the “Give me 14 days free” button, you “sell” them a $0 non-renewing in-app purchase (that lasts 14 days). They still have to “pay” for this $0 purchase, but this method adds the purchase to their receipt (tied to their Apple ID). This means that if they delete your app, we’ll still see the purchase on their receipt, so they won’t be able to continually get another trial.

Hope this helps!


Hello Jeffrey,

Thank you for your reply. I read your statement several times and this sounds manageable for me. Some questions came up:

  1. This ‘app user ID’ could be ‘anything’, e.g. email-adress, right?
  2. How can I check, if the free trial has been used in the past with this ID to avoid a second activation?
  3. I guess (hope) that the check (via SDK: customerInfo?.entitlements.allm"premium"]?.isActive == true) for a valid entitlement is the same during the trial period and in paid mode?
  4. So lets assume the app was reinstalled. As a first step the user has to enter the ID (= email). Which action will I take next? Do I call the same endpoint as for granting the first time?
  5. I have some more data, that I want to store as meta data in the user database (e.g. customer ID from office backend). Is this possible with RevenueCat or do I have to sign up the user on another system (e.g. my Wordpress system)?

Looking forward ...


… and one more question:

  1. (maybe this is part of question 2): How can the app get the startdate and enddate of the free trial to show the remaining days?

… uh, and:

  1. This app user ID (e.g. email) can be set at later time, not only when app start, right?
    Something like Purchases.configure(withAPIKey: "XYZ", appUserID: “personalemail@email.com”) when the user taps ‘Give me the 14 days trial’ ...

Reply