Discover how you can complement existing offer codes campaigns with custom, repeatable codes to provide even more flexibility to acquire and retain subscribers. We'll take you through the latest enhancements to offer codes, provide engineering guidance, explore best practices, and show you how to create new codes for your subscriptions.
Bryan Eisenstadt: Thank you for joining today's session.
We're excited to provide you with an update to subscription offer codes which brings custom code functionality to the feature.
I'm Bryan and I'm part of the App Store Monetization team.
Raul Basurto Rosenzweig: And I'm Raul, a developer advocate for the App Store Commerce team.
Bryan: And together, we're excited to share more about custom offer codes.
Let's jump into the first part of the presentation.
I'll start with a brief recap of our offer codes feature, then I'll walk through the new capabilities of custom codes.
I'll discuss some suggested use cases, and I'll finish with a walkthrough of creating a custom code campaign in App Store Connect.
So let's get started.
Today we're excited to discuss a new custom code functionality that has joined the existing capability of offer codes.
Before we dive into this new function, let's briefly discuss what's been previously shared about offer codes.
As a refresher, offer codes are a dynamic tool that can help you acquire, retain, and win back subscribers.
You can choose to distribute them across both your online and offline channels.
And they can be served to new, existing, and lapsed customers.
Once distributed, there are a few options you can choose to ensure your customers can seamlessly redeem their offers and begin their subscriptions.
At the end of the offer period, the subscription autorenews at the standard price, unless the subscriber cancels or turns off autorenewal.
Offer codes are complementary to our two other offer types -- intro and promotional offers -- but give you the choice of added flexibility, since offer codes are the only offer type that can be distributed outside of your app.
We launched offer codes in 2020 with the ability to create unique, one-time-use, alphanumeric codes that are distributed to customers on a one-to-one basis and are redeemed in the App Store or directly in your app when using the StoreKit method.
These codes are ideal for instances where access needs to be restricted, such as when bundling codes with the purchase of a physical good or when using codes to rectify customer support issues.
Now, let's discuss the capabilities we've added with the introduction of custom codes.
Custom codes now enable you to create and distribute memorable custom codes such as "NEWYEAR" that can be redeemed by multiple customers.
You're able to set redemption limits and choose whether or not to set an expiration date.
Custom codes offer a simple distribution and redemption flow that's ideal for campaigns that require mass distribution.
As with one-time-use codes, you can use custom codes to create free, pay as you go, and pay up front offers.
You can create up to ten active offers per subscription SKU at any given time and have the ability to create batches of between 500 to 25,000 codes, up to a maximum of 150,000 per app, per quarter.
You're able to choose each batch's expiration date, but expiration dates are not required.
Finally, redemption is supported on iOS and iPadOS 14.2 and later.
The Apple UI handles the full redemption experience and automatically prompts users to install your app if they don't currently have it downloaded.
Customers can seamlessly redeem a code from within your app when you use thepresentCodeRedemptionSheet() StoreKit method.
When choosing this flow, we recommend adding a Redeem Code button to your app's paywall to reduce customer friction, like in this example here.
After a customer taps the custom Redeem button, the system automatically provides a series of code redemption screens, the first being the code input page.
Once a customer types in the code and that code is valid, the offer details pages shown.
If for any reason the code isn't valid, the customer will see a clear error message explaining why the offer is unavailable to them.
If you would prefer to let Apple handle the entire redemption, custom codes can also be redeemed via a URL or QR code, which deep links users directly to the App Store redemption flow.
Unlike one-time-use codes, custom codes are not manually redeemable through the App Store gift card redemption flow.
Raul will discuss how to recognize transactions made outside of your app later on in this presentation.
Here, I'd like to help you visualize the differences and similarities of our different types of offer codes.
Custom codes enable you to create uniquely named codes that can be widely distributed, and you have the option to choose whether or not to set an expiration date.
Whereas one-time-use codes are randomly generated, alphanumeric codes that can only be redeemed once.
One-time-use codes automatically expire six months from the date they're created, but you can choose to make the expiration window smaller if you prefer.
And regardless of which offer code you choose, you're able to distribute your codes across your online and offline channels.
You can create campaigns targeted towards new, existing, and lapsed customers, and the Apple UI will handle a seamless redemption experience.
Finally, a code's discount will automatically renew at the standard subscription price.
Now, let's discuss some ways that you can use custom codes to support your campaigns.
There are a number of different ways both custom and one-time-use offer codes can be used, and you have the flexibility to distribute them however you'd like.
Codes can be distributed as an add-on where a subscription service compliments a physical good or service.
In your marketing channels -- both digital like email or physical like billboards -- to acquire or win back subscribers.
In physical retail or at events, including industry conferences.
Distributed via third-party partners as part of comarketing campaigns and partner marketing initiatives.
Or by customer support teams who might give a customer a free or discounted period in lieu of sending the customer to AppleCare for a refund.
But I'd like to dial into these three categories, specifically, to show how the added functionality of custom codes can help support these use cases.
Custom codes add new flexibility to distribute offer codes in your digital marketing channels.
For example, you could consider running a spring break social media campaign that includes the custom code in the campaign copy "SPRING2022" for 50 percent off of your first month.
Here's an example of how that could look in execution, using a hypothetical music streaming app that's promoting a 50 percent discount using the custom code "100MUSIC" on their annual plan via a social media post.
Additionally, custom codes make it easier than ever to distribute codes on flyers that are passed out at events like industry conferences or concerts.
With this approach, you can consider giving event attendees a three-month, extended free trial to your subscription by printing the custom code "THREEMONTHSFREE" onto flyers that are handed out at the event venue.
In this example, the music streaming app is offering an extended free trial to music festival attendees by printing the custom code "MUSICFAN" onto flyers that are handed out at a concert venue.
Alternatively, this is how it might look if 100 Music decided to use a QR code to direct users directly to the redemption flow of the offer.
If the user doesn't already have the app installed, they'll first be prompted to download it.
And finally, custom codes can be used to help amplify your third-party partnerships.
For example, you can now have social media influencers or podcasters share custom codes through their preferred medium as a means to increase awareness of the discounted campaign you're running.
And here's an example of 100 Music partnering with an influencer to promote their product's playlisting capabilities.
The influencer promotes the subscription and offers up a 20 percent discount on three months of service using the custom code "JOHNNYSPLAYLIST." Now that we know what custom codes are and how they're used, I'll now walk through how you can create them in App Store Connect.
In order to set up offer code campaigns, you need to be assigned as either the account holder, admin, app manager, developer, or marketing role in App Store Connect.
Begin by clicking the plus mark next to Custom Codes.
You'll then be prompted to create and enter your custom code.
Custom codes may be up to 64 characters and may not include special characters.
Keep in mind that you won't be able to edit the code once you've created it.
Custom codes can't be used for other offer campaigns or subscriptions for your app.
To create a new campaign using the custom code that's already being used by a different offer, you must first deactivate the code.
You'll then select a redemption limit, which is the total number of customers that can redeem this custom code.
You can choose a limit of up to 25,000 redemptions at a time, but if you need more, you can use the same custom code multiple times on the same offer.
Up to 150,000 redemptions per app, per quarter.
Next, you'll have the option to choose an expiration date to determine how long the codes are valid.
To create codes with no expiration date, you'll select the No Expiration Date option from the date picker.
If you choose to select an expiration date, note that codes will expire at 12:00 a.m. Pacific time on the chosen date.
Expiration dates may not be edited after the campaign is live.
Finally, click on Create to activate your offer.
You can have up to 10 offers active at a time.
Offers can't be edited once they're live, so you'll need to create a new offer in the event that changes to customer eligibility are needed.
As previously discussed, codes can be used to create redemption URLs that you can share directly with users.
When the user taps on the URL, they're taken directly to the offer redemption page.
To create this URL, simply copy the example link from your offer details page, then add the custom code to the end of the URL.
And that completes our feature overview.
I'll now hand it over to Raul to discuss some of the finer details around engineering your custom code campaigns.
Raul: Thank you, Bryan.
Now I'm going to discuss things for you to consider when planning and implementing offer codes into your products, application, and back-end systems.
I'm going to cover this in three sections.
First, we'll review redemptions, then dive into offer configuration, and lastly, share some StoreKit considerations.
Let's start with redemptions.
Before diving into redemptions, some restrictions to be aware of is that subscribers are limited to one redemption per configured offer code.
These offers are uniquely identifiable by the name added when you set them up in App Store Connect.
Also, be aware that subscribers cannot redeem an offer code that will result in a lower level from their current level of service.
It must be for a higher-tiered SKU or the same SKU they're already subscribed to.
Ideally, this is taken into account with your eligibility logic when targeting subscribers with an offer.
A great way for your subscribers to redeem your codes is through the in-app redemption sheet that you saw earlier.
This is the ideal experience where subscribers will have the ability to redeem an offer directly in your app using PresentCodeRedemptionSheet().
This will be the only scenario where the redemption occurs with your app actively running in the foreground, as the sheet will open right on top of your app.
As a side note, if you're displaying codes within your app, it may be beneficial to make it easy for subscribers to copy and paste the code.
A second redemption option is the redeem URL, where you will prepopulate it with a custom offer code.
It is comprised of two values to be aware of: the idea of your app and the offer code.
This is a good option if you also want to advertise your offer code through a QR code.
As noted earlier, redemption can occur outside of your app, so it's important you listen for Transaction.Updates at launch.
This is a best practice and important for other scenarios like Ask to Buy, PSD2, and offer codes.
So with proper initialization, it ensures no transactions are missed.
On the other side, called the finish method, as it removes transactions from the queue and it tells us the customer has received their items or service.
Between these two, when implemented correctly, you will provide an optimal customer experience.
Now let's talk about configuration.
When configuring offer codes, there is a choice to also allow the redemption of the introductory offer.
I want to visualize the subscriber experience for either setting that you may choose.
Let's take a simple scenario.
We have a standard monthly subscription, and we've configured it with a one-week-free introductory offer.
For a marketing campaign, we have created a code that offers free access to our servers for one week.
Let's see what happens if we do not allow the redemption of both the intro offer alongside the offer code.
When the subscriber redeems their offer code, the offer code goes into effect immediately, in this case, our one week free.
After the offer period, the subscription renews at the regular price.
Now, at some point in the future, the subscriber may lapse or churn.
If they resubscribe, since they are still eligible for the introductory offer, they would then receive their one-week free trial.
So this configuration just determines at what point they will receive their introductory offer.
This experience is just something to keep in mind when creating offers for a given group that you're targeting.
Now what happens if you choose to allow both? Let's use that same example scenario.
This time, when the subscriber redeems their offer code, the intro offer goes into effect first, followed by the offer code period, and then subscription renews at the regular price.
I hope this helps illustrate and provides more clarity on what the configuration means from a subscriber's experience and helps you determine when you want to allow or not allow this redemption behavior.
Finally, some StoreKit considerations.
With the original StoreKit API and StoreKit 2, you can see any redeemed offers using the type and identifier found with the transaction or renewal info.
Offer Codes are type three and the identifier will contain the unique string you added in App Store Connect for each of your configured offers.
If you have a server-to-server setup, you can get this information using VerifyReceipt, App Store Server API, and Server Notifications Version 2.
Make sure you're parsing the type OFFER_REDEEMED notifications with their corresponding subtype.
In summary of today's session, custom codes are now available and can be used for campaigns that require wide distribution.
Test interrupted purchases and your redemption code experience by leveraging Sandbox.
Consider implementing a redemption flow within your app for the best customer experience.
Clearly communicate offer details, eligibility requirements, and how to redeem in your communications, including that customers can only redeem on iOS 14.2 or later.
If you're looking for more information or would like to reference what we discussed today, do visit our Developer website, which is an excellent resource that you can reference at any time.
With that, I'd like to conclude today's presentation.
We're very excited to launch these new features and can't wait to see what you do with them.
Looking for something specific? Enter a topic above and jump straight to the good stuff.
An error occurred when submitting your query. Please check your Internet connection and try again.