AWS+Marketplace+-+SaaS+Integration+Guide
AWS+Marketplace+-+SaaS+Integration+Guide
1 © 2019, Am azon Web Ser vices, Inc. or its affiliates. All ri ghts reserved.
AWS Marketplace SaaS Guide / About this guide
1. Register as a seller and submit tax & banking information. This step is required before you can request to list a
paid product. Click here to learn how to register & submit tax and banking information.
2. Become familiar with the AWS Marketplace Management Portal (AMMP). This is the tool that you use to
register as a seller and manage the products that you sell on AWS Marketplace. Click here to learn about AMMP.
3. Learn about tools available to you as an AWS Marketplace seller. Click here for your seller toolkit.
4. Determine your product s pricing model. SaaS products can be created with one of three pricing options:
Contract, Contract with Consumption, or Subscription.
Click here to learn more about Contract pricing (or) Click here to learn more about Subscription pricing
Contents
SaaS Contract (upfront billing) Code examples
Listing process & integration requirements ResolveCustomer
BatchMeterUsage
SaaS Contract with Consumption
Listing process & integration requirements Frequently Asked Questions (FAQs)
Integration diagram
External resources
SaaS Subscription (pay-as-you-go)
Listing process & integration requirements
Integration diagram
2 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract
SaaS Contract
Listing process &
integration requirements
Integration diagram
3 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract / Listing Process & Integration Requirements
SaaS Contract
Note: Each item refers to a step in the diagram (see next page)
Listing Process
1 Collect Assets 5 Onboard New Customers
Before submitting a product, you will need to provide: After successfully verifying a customer s subscription, onboard them onto your
application. For example, have them fill out a form to create a new user account. Or,
Product logo URL provide them with next steps to get access to the application.
End User License Agreement (EULA) URL
SaaS fulfillment URL (redirect page customers will be sent to after subscribing) 6 Handle No Entitlement Scenarios
If no entitlement is returned from GetEntitlement, either during onboarding or
Metadata
ongoing verification, determine how to manage access & their experience.
Support information
After end-to-end testing is complete, you will have the chance to review the product
Integration Requirements page with the original prices. After giving approval, the AWS Marketplace Ops team will
4 Validate New Customers make the product page live in the public catalog.
After a customer subscribes to your product, they will be redirected to the fulfillment URL.
The redirect is a POST request & includes a temporary token. Your app then needs to:
Exchange the token for a customerID by calling ResolveCustomer in the AWS
Marketplace Metering Service.
After obtaining a customerID, persist it in your application for future calls.
With the customerID, call GetEntitlement in the AWS Marketplace Entitlement Service
to verify which dimension the customer is subscribed to and the quantity, if applicable.
4 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract / Integration Diagram
A
MS
= AWS Marketplace Ops Team Action
Subscribe Setup new
Call
Store CustomerID With CustomerID to: queue in SQS
ResolveCustomer
B
7
Call GetEntitlement Example SNS Topic
Check customer s arn:aws:sns:us-east-1:287250355862:aws-mp-
If no entitlement returned to verify active Listen for:
entitlement entitlement-notification-PRODUCTCODE
subscription
ES
entitlement-updated
Entitlement
DB message
SNS topic
6
If active entitlement
5 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract with Consumption
SaaS Contract
with Consumption
Listing process &
Integration requirements
Integration diagram
6 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract with Consumption / Listing Process & Integration Requirements
7 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Contract with Consumption / Integration Diagram
Call GetEntitlement 8
Check customer s
If no entitlement returned to verify active Listen for: Example Entitlement SNS Topic
entitlement
subscription arn:aws:sns:us-east-1:287250355862:aws-mp-
ES
entitlement-updated entitlement-notification-PRODUCTCODE
Entitlement Subscription
DB message
SNS topic SNS topic
6 Example Subscription SNS Topic
8 arn:aws:sns:us-east-1:287250355862:aws-mp-
If active entitlement Listen for and handle each scenario: subscription-notification-PRODUCTCODE
8 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Subscription
SaaS Subscription
Listing process &
Integration requirements
Integration diagram
9 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Subscription / Listing Process & Integration Requirements
SaaS Subscription
Note: Each item refers to a step in the diagram (see next page) 5 Onboard New Customers
After successfully verifying a customer, onboard them onto your application. For
Listing Process example, have them fill out a form to create a new user account. Or, provide them with
next steps to get access to the application.
1 Collect Assets
Before submitting a product, you will need to provide: 6 Sending Metering Records
Product logo URL You use the BatchMeterUsage operation in the AWS Marketplace Metering Service to
End User License Agreement (EULA) URL deliver metering records to AWS on behalf of your customers. We recommend using
CloudTrail to monitor activity to ensure that billing information is being sent to AWS
SaaS fulfillment URL (redirect page customers will be sent to after subscribing) Marketplace. Keep in mind when sending metering records:
Metadata Marketplace de-duplicates metering requests on the hour
Support information Records sent every hour are cumulative
Best practice is to send records every hour, even if quantity is 0
2 Submit via Management Portal
Create a product page using a seller account that has access to the AWS Marketplace
7 Monitor for Changes
Management Portal (AMMP).
Setup an SQS queue and subscribe to your product s SNS topic. This topic provides
notifications about changes to customers subscription. This enables you to know when
3 Product Page Published to Limited to provide and revoke access for specific customers. Possible scenarios include:
The AWS MP Ops team will publish your submission as a limited product page visible to unsubscribes, successful subscription, & failed subscription.
you and any AWS accounts you have requested to be whitelisted. Prices will be
temporarily reduced to enable you to test the purchase flow without incurring high 8 Verify Successful Subscription
charges. The Ops team will send you the following via email to enable this testing: After you receive a subscription notification with subscribe-success, the customer
Product code account is ready for metering. Records that you send before this notification aren't
SNS topic(s) metered. Additionally, we recommend waiting for this message before launching
resources on behalf of a customer.
Product page URL
Listing Process (continued after completion of integration)
Integration Requirements
9 End-to-end testing with AWS Marketplace
4 Validate New Customers After you have completed all the integration requirements and tested the solution,
After a customer subscribes to your product, they will be redirected to the fulfillment URL. notify the AWS Marketplace Ops team. They will then test the solution by verifying you
The redirect is a POST request & includes a temporary token. Your app then needs to: have successfully sent metered records via BatchMeterUsage and sufficiently onboard
Exchange the token for a customerID by calling ResolveCustomer in the AWS new customers.
Marketplace Metering Service.
After obtaining a customerID, persist it in your application for future calls. After end-to-end testing is complete, you will have the chance to review the product
page with the original prices. After giving approval, the AWS Marketplace Ops team will
make the product page live in the public catalog.
10 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / SaaS Subscription / Integration Diagram
Subscription
DB SNS topic
7
Listen for and handle each scenario:
Grant access to
product
unsubscribe-success subscribe-fail unsubscribe-pending subscribe-success
message message message message
8
Verify you receive subscribe-success
before spinning up resources on behalf of customers
11 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / Code Examples
Code Examples
ResolveCustomer
GetEntitlement
BatchMeterUsage
12 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / Code Examples / A - ResolveCustomer
A ResolveCustomer
Pricing Models
This code example is relevant for all pricing models (i.e. Contract, Contract with Consumption, & Subscription).
Purpose
Exchanging x-amzn-marketplace-token for customerID.
Reference
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html#MarketplaceMetering.Client.resolve_customer
13 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / Code Examples / B - GetEntitlement
B GetEntitlement
Pricing Models
This code example is relevant for SaaS Contract & Contract with Consumption.
Purpose
Verify that a customer has an active entitlement. Identify which dimension(s) that customer is subscribed to.
Reference
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/marketplace-entitlement.html#MarketplaceEntitlementService.Client.get_entitlements
14 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / Code Examples / C - BatchMeterUsage
C BatchMeterUsage
Pricing Models
This code example is relevant for SaaS Subscription & Contract with Consumption.
Purpose
Send a metering record to AWS Marketplace.
Reference
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/meteringmarketplace.html#MarketplaceMetering.Client.batch_meter_usage
15 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / Frequently Asked Questions (FAQs)
Should I revoke access on the expiration date indicated in the entitlement document if I don t
receive a notification that the entitlement document has been updated?
No. Your product should wait for an entitlement update or periodically check GetEntitlements to verify that the
allocation should be revoked. Use the expiration field only to notify customers of a possible loss in allocated
resources. Don't use the information in this field to limit functionality. Amazon SNS notifications are delivered with
best effort, so your product should check GetEntitlements before revoking access.
Private Offers
How do I transact with private offers for SaaS-based products?
Before transacting with a private offer, your SaaS product must have a publicly available dimension similar to the
service you intend to include in the private offer. Additionally, the offer must match durations already enabled in
your product. Private offers augment the public offering (pricing, dimension and EULA) but do not change the
technical integration. Click here to read more about getting started with private offers.
Customer Experience
Can a customer downgrade their contract?
No. Customers can only upgrade to one of a higher value except for longer durations. For example, they can upgrade
to higher quantities or higher-value entitlements. Customers are given a prorated credit for their existing contract.
Customers can't decrease the size of their existing contract. They can only decrease the size at renewal, or cancel
their renewal.
Cancellations
How do I handle cancellations?
Customers cancel SaaS subscription products through their AWS account. When a customer cancels a subscription,
you receive a notification, and you have 1 hour to send a final metering record for the customer. You notify the
customer from your product that the cancellation is in progress. If a customer indicates that they want to cancel
through your product, direct the customer to AWS Marketplace.
For SaaS contract products, customers can request a cancellation and refund within 48 hours through AWS Support.
When a customer cancels a contract, you receive a notification, and have 1 hour to send a final metering record for
the customer for any additional usage charges.
16 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.
AWS Marketplace SaaS Guide / External resources
External Resources
Below are resources to help get you started as a SaaS seller. Click each link to open the resource in your browser.
Reporting
Private Offers
Seller Private Offers Overview
Developers
AWS Marketplace Metering Service API Reference
AWS SDKs
Blog Articles
How to Best Architect Your AWS Marketplace SaaS Subscription Across Multiple AWS Accounts
Tutorials
Creating an Amazon SQS Queue
17 © 2019, Amazon Web Services, Inc. or its affiliates. All rights reserved.