The season of (subscriptions) gifting

How to keep your subscribers engaged using Firebase Dynamic Links, and reward them for giving.

Sam Tolomei
Dec 7, 2018 · 8 min read

On Google Play, we are seeing apps and games increasingly incorporate subscriptions as their core monetization model. However, one of the most critical parts of subscription business is converting a non-subscribing user into a subscriber. Many developers are looking for more tools to help increase the conversion rate of subscribers to their app.

As a partner manager at Google Play, I work alongside developers to help build these fantastic subscription businesses. A frequent set of asks I hear from these developers is how they can enable their current subscribers to gift, refer, and subsidize other users’ subscriptions. Currently, Google Play does not natively support these features. However, developers can implement them using Firebase’s Dynamic Links and the Firebase SDK (on Android as well as other platforms).

There are 3 major referral features which are frequently requested by developers, and that can be created using Dynamic Links:

  1. Gifting of a subscription to a friend/customer
  2. Creating a referral campaign, where the referrer is rewarded with a discount
  3. Building a Family Plan

I’ll walk through each of these three use-cases below. Note that this is not intended to be an exhaustive, engineering-focused walkthrough, but instead aimed at giving you the gist of how to implement these features. When it comes time to implement this in your app, it will likely vary slightly according to the app and backend server structure.

1. Gifting of a subscription to a friend

Subscriptions are generally better with friends. Users want to be able to talk to friends about the latest show they binged, keep each other committed to dieting plans, or collaborate on creating playlists. Allowing users to gift their friends a subscription is a great way to leverage a user’s social graph, and is a frequently requested feature by developers, as many have seen success with this feature on the web.

Let’s take a look at a basic structure to implement in-app gifting and redemption of subscriptions:

  1. A user, we’ll call him Gifter Gary, buys a 1 year subscription in your app for $100 for themselves.
  2. After purchase, Gifter Gary is given the option to buy a friend a 1-year free trial subscription to your service for 50% off the annual price (so $50).
  3. Gifter Gary buys a 50% off annual subscription via a 1-time, in-app purchase for $50.
  4. After this purchase by Gifter Gary, your app then gives Gifter Gary a uniquely generated URL (via Firebase Dynamic Links), that Gary can send to any friend. Gary chooses to email it to his pal, Receiving Rachel.
  5. Receiving Rachel gets the link via email, and is then taken into the app.
  6. In the app, Receiving Rachel is shown a subscription SKU that has a 365 free trial attached to it (note that this is a separate SKU, set up specifically to be gifted).
  7. Receiving Rachel “buys” this free subscription SKU and gets 1 year of free access, which will auto-renew into the normally priced annual subscription, paid for by Receiving Rachel.

To prevent gifting fraud, you should periodically query Voided Purchases API. When a purchase is refunded, be sure to revoke the Receiver’s access to subscribed content.

Below is an example of the user flow in the app Classy Taxi.

Gifter Gary’s purchase & sharing flow

Receiving Rachel’s redemption flow

And viola! Receiving Rachel is able to use the subscription service, does not pay anything up front, but will auto-renew as a normal subscriber at the end of the 1-year free trial. Gifter Gary is happy that Receiving Rachel is joining him on his subscription journey!

In addition to allowing users to gift subscriptions, this structure could also be applied to some other formats, such as gifting customers “6 free months with purchase of x hardware device” or “4 months subscription for $1 based on x activity”.

2. Creating a referral campaign

As I mentioned earlier, an app’s best evangelists are its most engaged users, and enabling these users to be rewarded for their efforts via a referral program is a great way for them to feel invested in your app’s success.

There are a many different referral programs in place across the web. For this example, I will focus on the referrer being granted a number of free days on their existing subscription, which can be granted using Play’s Deferred Billing API. Here is an example of how the basic flow for this program would work:

  1. Referrer Rick buys a 1 month subscription in the app for $10, and he loves it!
  2. After purchase, Referrer Rick sees the option to “refer a friend and get their next month of subscription free!”
  3. Referrer Rick clicks the button, and is prompted to share a unique URL with their friends.
  4. Dave get’s Referrer Rick’s shared-out email blast (or Facebook post, etc.), and is intrigued. He clicks the link and gets deep-linked into the app, and is prompted to subscribe to the service (optionally, Dave could get an introductory pricing offer SKU as well as part of this referral program.)
  5. Once Dave subscribes, Referrer Rick gets a notification that Dave used their referral URL to start a subscription and Referrer Rick is credited with a successful referral, getting their next subscription bill deferred by X days, using the Deferred Billing API. Note that Google Play will not send the referring user (e.g. Referrer Rick) any email about the deferred payment the user received, so you should ensure you alert the referring user of their referral reward via in-app message, push notification etc.
    Fraud note: to avoid potential fraud abuse by referrers, you likely do not want to offer the users receiving the referrals a free trial, but instead have them pay full price or an introductory price.

Here is what the flow might look like for this referral program:

Referrer Rick

Dave (Referral Receiver)

Referrer Rick again

Referrer Rick, already an evangelist, gets a free month of their subscription in exchange for telling the world about how great the app is. Dave loves the app and its subscription features, but also enjoys that they help Referrer Rick get rewarded, and is fast becoming an evalenglist of the app in their own right.

3. Building a Family Plan

Many users want to share your subscription with their close friends and family members, and do it in a more secure (and less chaotic way) than sharing their user login and password with other individuals. Thus, we commonly hear about developers being interested in building a family plan to allow users to share the benefits (and costs) of a subscription for a slightly higher price.

Below are the steps to implement a Family Plan feature in your app:

  1. Family Fran buys a monthly special “Family Plan” subscription in your app for $15 per month (probably 50% more expensive than your normal monthly SKU price for 1 user), and she adores the service! It is clear to her that her whole family should be given access to the service.
  2. After purchase, Family Fran sees the option to “Invite your family members to join your family plan (up to 6!)”
  3. Family Fran clicks the button, and then shares a unique URL with 5 of her family members.
  4. Each of the 5 family members click the URL and get deep-linked into the app, where they then accept the offer to be included in Family Fran’s Family Plan.
  5. Your server grants these family members access to the content for free, and uses Family Fran’s subscription status to derive each of the 5 family members’ subscription statuses.
    Fraud note: your server should validate the number subscriptions in the family plan, to ensure there are a maximum of 6 users on the subscription at any given time. It is also a best-practice to set an expiration on the validity of these Dynamic Links, to lower potential for fraud.

Here is what the flow might look like for this family plan:

Family Fran (original family plan subscriber)

Family member being invited

Family Fran just bought a subscription for her whole family, and everyone in the family loves the service and none of them have to worry about payments or subscriptions, as its all tied to Family Fran’s subscription entitlement. They can now all enjoy the content as a family!

Users do not need to worry if the receiving user doesn’t have the app downloaded; Firebase Dynamic Links has a powerful feature where the deep link keeps the user associated with the original click through the app installation process, enabling a seamless experience for first-time users. It also works on both Android and iOS, you just need to set up the appropriate hooks on those platforms.


As you can see from the above examples, Firebase Dynamic Links allows you to enable various intricate experiences around subscriptions that are not natively possible on Google Play (or other platforms). There are also plenty of additional experiences beyond these as well- and I’d love to hear from you about other implementations!

Additionally, If you looking for suggestions on how to expand your subscription business, check out this Medium post by my colleague George Audi.

What do you think?

Do you have thoughts on subscription sharing? Let us know in the comments below or tweet using #AskPlayDev and we’ll reply from @GooglePlayDev, where we regularly share news and tips on how to be successful on Google Play.

Google Play Apps & Games

Tips, trends, and industry thoughts for app and game developers building businesses on Google Play.

Sam Tolomei

Written by

Google Play Apps & Games

Tips, trends, and industry thoughts for app and game developers building businesses on Google Play.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade