Hi @Steph,
Apple and Google don’t have systems specifically for gifting subscriptions between users, but you could probably use offer codes for iOS and promo codes for Android to do something like this. The idea would be that you could grant the code to the user and they could share it with their friend. See our docs for more context on these codes:
https://docs.revenuecat.com/docs/ios-subscription-offers#offer-codes
https://www.revenuecat.com/blog/how-do-apple-offer-codes-work
https://docs.revenuecat.com/docs/android-promo-codes
As for RevenueCat, we do have a way to grant promotional entitlements to specific users: https://docs.revenuecat.com/docs/promotionals#granting-promotionals
You could build a system where the user provides the friend they want to gift the promotional to and you’d grant it using our API. But these promotionals aren’t really subscriptions and are a special RevenueCat feature for giving entitlement access for a period of time - they don’t show up in our charts/analytics.
@sundeep Thanks for sharing the details! Lots of follow up questions, so thanks in advance! :)
Just to confirm our understanding, it sounds like RevenueCat’s promotional entitlement is an alternative route to Android promo codes and iOS offer codes (RevenueCat’s promotional entitlement is not an API to promo and offer codes). Is that correct?
We would expect to need to represent each gift as a one-time purchase (from https://docs.revenuecat.com/docs/non-subscriptions), but gifting doesn’t fit the example descriptions well. Would Non-Consumable be the best category to use (e.g., can someone purchase the same non-consumable multiple times to be equivalent to gifting multiple friends)?
You could build a system where the user provides the friend they want to gift the promotional to and you’d grant it using our API.
The documentation https://docs.revenuecat.com/docs/promotionals#granting-promotionals only shows dash UI to grant promotions and doesn’t mention any code APIs. We are using Flutter and didn’t find anything in your Flutter SDK. Is there a Flutter API we can use, and if not, would your team be able to support this in Flutter? We saw that there is a POST request but that’d be a lot more inconvenient.
Can RevenueCat’s promotionals ever work with consumable products (e.g., user can gift X virtual currency for a friend)?
But these promotionals aren’t really subscriptions and are a special RevenueCat feature for giving entitlement access for a period of time - they don’t show up in our charts/analytics.
Can you clarify what specific metrics we’d have access to vs what metrics wouldn’t show up (# of subscribers, revenue earned from gifting, number of promotionals granted, etc)?
@sundeep friendly bump on follow up questions!
Hi @Steph, sorry for missing this - here's my reply below:
Just to confirm our understanding, it sounds like RevenueCat’s promotional entitlement is an alternative route to Android promo codes and iOS offer codes (RevenueCat’s promotional entitlement is not an API to promo and offer codes). Is that correct?
Yep. It's not an API to the store's promotionals and offer codes, it's a RevenueCat feature that just grants entitlement access for a period of time.
The documentation https://docs.revenuecat.com/docs/promotionals#granting-promotionals only shows dash UI to grant promotions and doesn’t mention any code APIs. We are using Flutter and didn’t find anything in your Flutter SDK. Is there a Flutter API we can use, and if not, would your team be able to support this in Flutter? We saw that there is a POST request but that’d be a lot more inconvenient.
Your only options would be to grant the promotional through the dashboard or the API endpoint, our SDKs don't have a built-in method to grant RevenueCat promotionals as they're designed to facilitate purchases with actual stores (Apple, Google, Amazon, etc).
We would expect to need to represent each gift as a one-time purchase (from https://docs.revenuecat.com/docs/non-subscriptions), but gifting doesn’t fit the example descriptions well. Would Non-Consumable be the best category to use (e.g., can someone purchase the same non-consumable multiple times to be equivalent to gifting multiple friends)?
Can RevenueCat’s promotionals ever work with consumable products (e.g., user can gift X virtual currency for a friend)?
If it's about gifting currency/consumables, I don't think RC promotionals would be a great fit - think of the promotionals as gifting access/entitlement for a period of time. So they'd work best in a case where you were trying to gift a subscription to another user.
If you were trying to gift currency, at that point you'd probably handle it as you do any consumable purchase. With consumables you already have to implement the logic to store the currency on your backend, so you could create a flow in your app to allow the user to send that currency. This would all be controlled by your app/your server (and not RevenueCat).
Can you clarify what specific metrics we’d have access to vs what metrics wouldn’t show up (# of subscribers, revenue earned from gifting, number of promotionals granted, etc)?
You'll see these users with RC promotionals show up in the dashboard and customer lists, with their entitlements prefixed `rc_promo` to distinguish them from users with normal purchases. In ETL exports I believe users with promotional transactions will have the store column labeled 'promotional'. We filter out these users in our charts as they don't contribute any revenue and aren't a true purchase from one of the app stores.
Does this help answer your question?
Does RevenueCat have any guidance on gift subscriptions for digital content for iOS / Android apps? It seems like it’s possible to do entitlements via the API, but I’m less clear on what Apple / Google’s policies are regarding gift subscriptions.
For instance, is it possible to have a stand-alone Stripe page for a gifting user (User A) to make a gift purchase of a subscription… then my system would generate a code to send to the recipient (User . Then, when the receiving user downloads the app on iOS / Android, my app could grant User B an entitlement (e.g. https://www.revenuecat.com/docs/api-v1#tag/offerings/operation/get-offerings) for the period of time User A has specified. I think this all technically seems possible, but it is allowed from the perspective of the App Store / Play Store? Any guidance is welcome. Thanks :)