Editor's Note: This series is based on our new Alexa Skills course, How to Design for In-Skill Purchasing. This free course outlines the best practices for designing a great monetized Alexa skill experience.
Editor’s Note: We have changed the name of the Alexa skill in our beginner tutorial from Cake Walk to Cake Time given the term’s racially insensitive history.
Welcome to Part 4 of our series on designing skills with in-skill purchasing! In Part 3 we discussed how to write effective upsells meant to be heard in your skill, while in Part 2, we discussed design best practices for deciding when to surface those messages, whether via subscription, one-time purchase, or consumable. You can learn more about those ISP types in Part 1.
If we’ve done everything right so far, a customer will say “yes!” to our in-skill upsell message.
When a customer says “yes” to learn more about an in-skill purchase, they’ll be routed away from the skill and into an Amazon purchase flow. You will fill out some details about the purchase in the Developer Portal when you submit your skill (keep in mind the character limit is 120). Amazon will also append pricing details that apply to each customer. It will handle the payment and any associated errors. If a customer has a voice PIN set up for purchases, the Amazon purchase flow will collect it. The Amazon purchase flow will route the customer back to the skill when the purchase is complete, declined by the customer, or failed due to some kind of error.
Since the Amazon purchase flow appends pricing details, a skill MUST NOT include the price in their in-skill messaging. Doing so will result in failing certification. When we write our dialog, we will need to keep in mind the interplay between our in-skill messaging and the Amazon purchase flow. Ideally, smooth transitions in and out of the Amazon purchase flow would sound something like this:
Skill: “Good game today! All this holiday talk is making me crave turkey. Now you can get 50 more holiday-themed Seattle Super Trivia questions with the Home for the Holidays pack. Want to learn how to get it?”
Customer: “Yes”
<routes to Amazon Purchase flow>
Amazon: The Home for the Holidays pack from Seattle Super Trivia comes with 50 more questions you can play any time. It costs 99 cents plus tax. Would you like to buy it?“
Customer: “Yes”
Amazon: “Great. You have successfully purchased the Home for the Holidays pack.”
<routes to skill>
Skill: Now you can really show off your Seattle trivia superiority. Want to start playing your new pack?
Customer: Yes
<pack begins>
Of course not all purchase attempts will follow our “happy path,” which is the case where everything goes according to our pre-written script that represents an interaction between our customer and our skill. The customer could be “handed back” from the purchase flow to the skill in a number of states, and we’ll need to have a message to gracefully transition from each. You’ll need to include messaging for:
In the cases above, it’s important that the skill’s “hand-back” message:
An ideal transition to and from the Amazon purchase flow in a scenario where our customer encounters an error should sound something like this:
Skill: “Good game today! All this holiday talk is making me crave turkey. Now you can get 50 more holiday-themed Seattle Super Trivia questions with the Home for the Holidays pack. Want to learn how to get it?”
Customer: “Yes”
<routes to Amazon Purchase flow>
Amazon: The Home for the Holidays pack from Seattle Super Trivia comes with 50 more questions you can play any time. It costs 99 cents plus tax. Would you like to buy it?“
Customer: “Yes”
Amazon: There was a problem with your payment method. Please check your Alexa app for more details.
<routes to skill>
Skill: No worries. You can always ask me about packs later. Now, want to replay today’s trivia challenge?
<etc.>
Notice in this example how the skill gracefully handles the error. The skill does not repeat anything that the Amazon flow said and does not ask the customer to try again. Additionally, it prompt the customer to continue using the skill without the purchase.
One more transition we’ll need to consider is our response to customers who ask to cancel a purchase or ask for a refund. If a customer asks the skill to cancel their subscription, the skill must pass the customer to the Amazon purchase flow to deliver the final terms and prompt to cancel a subscription. Amazon will pass the customer back to the skill, where the skill should deliver a prompt to allow the customer to continue engaging with any content to which they are still entitled.
If the customer asks to cancel a purchase or to refund a purchase other than a subscription, the the skill should deliver a card with information about cancellations or refunds to the customer's Alexa App. The skill shouldn't say anything that would sound like a guarantee a refund will be issued.
Don't: “Thanks for playing. For a refund, check out the link I sent to your Alexa App.”
Do: “Thanks for playing. I've sent some information about refunds to your Alexa app.”
Finally, if a skill uses voice-over recordings or Amazon Polly voices, be mindful that the Amazon purchase flow uses Alexa’s voice and standardized GUI, which are not customizable. Consider which product details would be best delivered by your in-skill voice of choice, and which details will be delivered in the Amazon purchase flow (which has limited characters available). Play the full conversation multiple times to determine if the transitions are smooth and the changes from skill to Amazon flow and back are not too abrupt.
Let’s listen to one more smooth handoff:
Here, we haven’t repeated many details, and it sounds like the customer is speaking with one entity rather than multiple robots.
Now that we’ve learned how to handle transactions and transitions, it’s time to think about how customers will be able to access and use the purchases they want. Stay tuned for Part 5 of this series, where we’ll discuss how to provide access to purchases.
We recommend you continue your learning by checking out these additional training materials: