AWS Marketplace

Learn how CloudSmart Insight’s private offer campaign uses AWS Marketplace APIs for targeted engagement

Are you an Amazon Web Services (AWS) Marketplace seller facing the challenge of effectively reaching and converting potential customers in the vast and competitive environment? Creating targeted customer engagement and standing out from the competition can be a difficult task. A well-planned acceleration strategy can help.

CloudSmart Insights is available in AWS Marketplace and is an AWS Marketplace intelligence environment that powers cloud go-to-market (GTM) and co-selling for sellers. CloudSmart Insights removes the guesswork and repetitive authoring from AWS Marketplace seller operations, including reporting and offer management. You can easily view sales, forecast, and offer visuals without any coding, business intelligence authoring, or data science skills. CloudSmart Insights gives you the ability to extend private offers, create flexible terms, and include custom engagement using AWS Marketplace APIs.

In this post, we highlight the use of CloudSmart Insights to create custom private offer rules, discounts, and messaging with customers. We explore how to create a campaign, determine the offer recipients, and deliver offers at scale. We reference the AWS Marketplace Catalog API, which lets sellers create private offers programmatically from their internal applications without needing to use the AWS Marketplace Management Portal. You can start by creating a draft private offer and iterate until the offer is ready to publish.

Prerequisites

Complete the following prerequisites before implementing the CloudSmart Insights solution built using the Catalog API:

  1. Subscribe to CloudSmart Insights in AWS Marketplace.
  2. Choose the appropriate tier for your company size.
  3. Choose Setup Account to configure the software.
  4. Enter the relevant information including name, company, email, and telephone number.
  5. Follow the instructions to schedule a short onboarding session with CloudSmart Insights customer service.

Solution overview

CloudSmart Insights empowers you with a comprehensive seller intelligence dashboard for analyzing AWS Marketplace sales performance. Moreover, with its private offer campaign feature, you can create customized rules for cost, quantity, and duration, streamlining both single private offers and large-scale sales plays all using AWS Marketplace Catalog API. The CloudSmart Insights private offer curation feature in campaign mode automates private offers by providing a ruleset for quantity, duration, pricing, and messaging that can be applied to a sales campaign. With this flexibility, you can tailor deals to individual customer needs, manage renewals efficiently, and deploy targeted promotional offers.

CloudSmart Insights private offer curation empowers you to personalize customer experiences. By curating targeted messages, you can provide valuable resources, guidance, and access to relevant features, helping customers maximize their investment from the outset. CloudSmart Insights private offer campaign mode streamlines the creation of private offers by automating ruleset generation and validation, significantly reducing errors and applying consistent discounts across multiple offers based on defined criteria.

Architecture diagram

The architecture diagram in figure 1 illustrates the components of AWS Marketplace and CloudSmart Insights, which include:

  • Amazon QuickSight serverless architecture – Serverless architecture allows automatic scaling to meet the requirements of hundreds of thousands of users without manual server management. This architecture also makes sure that dashboards remain responsive during peak usage periods.
  • Embedded analytics – Being able to embed Amazon QuickSight into CloudSmart Insights allows AWS Marketplace sellers to use the systems they have already found to be effective and decrease the amount of individual configuration they need to make to examine the data.
  • AWS Marketplace Catalog API and AWS Marketplace Agreements API for automation and extension – AWS Marketplace provides APIs for creating and managing catalog products, offers, and agreements. AWS Marketplace Catalog API also provides read-and-write actions to create, list, and manage private offers.
  • Amazon SageMaker – You can automate and standardize machine learning operations (MLOps) practices and governance across your organization to support transparency and auditability for software as a service (SaaS), server, and professional services categorization using Amazon SageMaker.

Figure 1: Architecture diagram flow of AWS Marketplace and CloudSmart Insights

Solution walkthrough: Creating a private offer in CloudSmart Insights

In this section, we walk through the steps needed to deploy the solution, as shown in figure 2. A tenant must authenticate to the private offer experience as shown in the steps highlighted here. You must enter a valid AWS account number, AWS Region, and verification code.

  1. Authenticate to CloudSmart Insights using your AWS account ID and AWS Region.
  2. Confirm the one-time-password (OTP) with a verification code.

CloudSmart Dashboard

Figure 2: Adding account ID, AWS Region, and verification code into the private offer template

 3. Select the appropriate listing from the entities list, as shown in figure 3.

cloudsmart listing

Figure 3: Selecting the appropriate listing from the entities list

4. Confirm the messaging in custom email templates, as shown in figure 4.

cloudsmart email template

Figure 4: Confirming the custom email template

5. Select the contract duration, as shown in figure 5.

6. Select the dimension and contract price.

7. Set the offer expiration date.

Cloudsmart configuration

Figure 5: Selecting contract duration, dimension, contact price, and the expiration date for the offer

At this point, as shown in figure 6, your campaign is confirmed and ready for activation.

Cloudsmart Review and Confirm

Figure 6: The campaign is ready for activation in saved campaigns.

AWS Marketplace Private Offer process flow

A private offer in AWS Marketplace requires metadata, including offer details, the target buyer’s AWS account ID, End User License Agreement (EULA), negotiated pricing terms, payment schedule, offer availability date, support, and legal terms. The following process diagram (figure 7) shows stages of private offer creation and corresponding AWS Marketplace Catalog API change types to create and update private offers using the API.

AWS MP Private offer process flow

Figure 7: Steps for creating and updating private offers through AWS Marketplace Catalog API

CloudSmart Insights uses the AWS Marketplace Catalog API StartChangeSet action to generate private offers. This action enables modifications to catalog entities (products, offers, and resale authorization). The following request payload to StartChangeSet publishes a private offer for a SaaS product. This product uses a pricing model of contractual term billing and flexible payment schedule. In this example, replace prod-1111111111111 (Product ID), 111111111111 (Buyer Account), custom EULA (End User License Agreement) with your own information.

{
    "Catalog": "AWSMarketplace",
    "ChangeSet": [
        {
            "ChangeType": "CreateOffer",
            "Entity": { 
                "Type": "Offer@1.0"
            },
            "ChangeName": "CreateOfferChange",
            "DetailsDocument": {
                "ProductId": "prod-1111111111111"
            }
        },
        {
            "ChangeType": "UpdateInformation",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "Name": "Test private offer for SaaSProduct using AWS Marketplace API Reference Code",
                "Description": "Test private offer with subscription pricing for SaaSProduct using AWS Marketplace API Reference Code"
            }
        },
        {
            "ChangeType": "UpdateTargeting",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "PositiveTargeting": {
                    "BuyerAccounts": [
                        "111111111111"
                    ]
                }
            }
        },
        {
            "ChangeType": "UpdatePricingTerms",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "PricingModel": "Contract",
                "Terms": [
                    {
                        "Type": "FixedUpfrontPricingTerm",
                        "CurrencyCode": "USD",
                        "Price": "0.0",
                        "Grants": [
                            {
                                "DimensionKey": "BasicService",
                                "MaxQuantity": 1
                            }
                        ]
                    }
                ]
            }
        },
        {
            "ChangeType": "UpdateValidityTerms",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "Terms": [
                    {
                        "Type": "ValidityTerm",
                        "AgreementDuration": "P12M"
                    }
                ]
            }
        },
        {
            "ChangeType": "UpdatePaymentScheduleTerms",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "Terms": [
                    {
                        "Type": "PaymentScheduleTerm",
                        "CurrencyCode": "USD",
                        "Schedule": [
                            {
                                "ChargeDate": "2024-01-01",
                                "ChargeAmount": "200.00"
                            },
                            {
                                "ChargeDate": "2024-02-01",
                                "ChargeAmount": "170.00"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "ChangeType": "UpdateLegalTerms",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "Terms": [
                    {
                        "Type": "LegalTerm",
                        "Documents": [
                            {
                                "Type": "CustomEula",
                                "Url": "https://s3.amazonaws.com/sample-bucket/custom-eula.pdf"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "ChangeType": "UpdateAvailability",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "AvailabilityEndDate": "2023-12-31"
            }
        },
        {
            "ChangeType": "UpdateSupportTerms",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {
                "Terms": [
                    {
                        "Type": "SupportTerm",
                        "RefundPolicy": "Some kind of refund policy description"
                    }
                ]
            }
        },
        {
            "ChangeType": "ReleaseOffer",
            "Entity": {
                "Type": "Offer@1.0",
                "Identifier": "$CreateOfferChange.Entity.Identifier"
            },
            "DetailsDocument": {}
        }
    ]
}

Explore the GitHub repository to find example code for handling private offers, products, reseller authorizations, and agreements. Use Amazon EventBridge to receive Offer Released event notifications and monitor the publication of private offers.

Conclusion

In this post, we showed you how to create a custom private offer using CloudSmart Insights without logging in to AWS Marketplace Management Portal. We also provided the process flow of creating a private offer using AWS Marketplace Catalog API, which lets sellers create private offers programmatically from their internal applications.

Visit these additional resources to learn more about AWS Marketplace Catalog API:

About the authors

Tres Vance Trés Vance is the CTO of CloudSmart LLC. He is an industry leader with a passion for innovation in customer engagement and buying through Cloud Marketplace.He currently holds the position of Cloud Go-to-Market Leader at CloudSmart, leveraging his expertise to help ISVs achieve their AWS Marketplace commerce goals. Trés is a global traveler, international karaoke star, and renowned BBQ chef. Trés is also actively involved in the AWS Builder Ecosystem holding AWS Certified Solutions Architect Professional and AWS Certified Cloud Practitioner certifications.
Tasrin Amin is a Technical Business Developer with APN Delivery. She helps AWS Marketplace sellers and buyers integrating with AWS Services and bringing in more adoption to businesses. In her free time, she likes to explore US national and state parks, binge watch TV shows, and travel with her friends and family.
Author - Chandra Chandrashekar Vishweshwara serves as a Specialist Solutions Architect for AWS Marketplace. In this capacity, he assists partners in listing their products in AWS Marketplace. When not at work, Chandrashekar enjoys quality time with his family members and canine companion.