Skip to Content
IntegrationsMarketplace OffersOverview

Marketplace Offers — Overview

Marketplace Offers is FlowState’s integration for managing AWS Marketplace private offers — custom pricing and terms extended to a specific buyer — against your own AWS Marketplace SaaS products.

This is unrelated to Billing → AWS Marketplace, which is about your organization subscribing to FlowState itself through AWS Marketplace. Marketplace Offers is about your own AWS Marketplace listing — the products you sell, and the private offers you extend to your buyers. A tenant’s AWS Marketplace seller account and the AWS account it pays FlowState from are not necessarily the same one, and FlowState never assumes they are.

Who should enable this

Marketplace Offers is for AWS Marketplace sellers — companies with at least one published SaaS product in AWS Marketplace who negotiate custom pricing or terms with individual buyers. If you don’t sell through AWS Marketplace, you don’t need this integration.

Where you do this

FlowState’s own web app is the administrator surface: tenant setup, connecting the AWS account, enabling the feature, troubleshooting the connection, and a read-only view of your products and offers for verifying the integration (Admin view). That is what this page and the rest of this section (Prerequisites, Trust policy, Getting started, Admin view, Disconnecting, Troubleshooting) cover.

Day-to-day work with individual offers — creating one, releasing it, cloning it, extending or expiring it — is not done in FlowState’s web app. FlowState’s surface for end users inside HubSpot is the FlowState card on the deal record, the same place APN Sync’s business-problem generation happens (see APN’s overview). The card’s Marketplace Offers surface is not built yet. The REST API and MCP tools behind every action below already exist and are kept in full parity with each other, but there is currently no documented place inside HubSpot where an end user reaches them.

What the API and MCP tools do

Marketplace Offers is a direct, live control panel over your own AWS Marketplace Catalog. It does not sync data into HubSpot and has no bidirectional field mapping — unlike APN Sync, there is nothing to reconcile, because FlowState never stores a copy of your offer data. Every list or detail view reads your AWS account live; your AWS Marketplace Catalog is always the source of truth.

Through the REST API and its matching MCP tools you can:

  • List the SaaS products in your seller account and see each product’s declared pricing dimensions.
  • List and inspect the private offers already created against a product.
  • Preview the exact AWS changeset a private offer would submit, without submitting it.
  • Create a private offer as a draft, priced either as standard contract pricing or as a fixed-upfront amount billed on an installment schedule.
  • Upload a custom EULA document for an offer, or use AWS’s own standard EULA.
  • Release a draft to its buyer.
  • Extend an offer’s availability, or end it immediately.
  • Clone an existing offer into a new draft.
  • List your purchase agreements, and create a replacement offer against an active one.

There is no sandbox

Unlike APN Sync, Marketplace Offers has no Sandbox/Production distinction. The AWS Marketplace Catalog API has no sandbox catalog: every action you take — preview aside — submits against your real, live AWS Marketplace listing (catalog AWSMarketplace, us-east-1). A preview never calls AWS; every other write, once submitted, is real.

Drafts, and why there is no edit or cancel

AWS Marketplace gives private offers exactly two states that matter here: draft and released. Creating an offer always stops at a draft — nothing is shown to a buyer until you explicitly release it. Once released, an offer’s commercial terms (pricing, buyer accounts, payment schedule) can never be changed again — this is an AWS constraint, not a FlowState one. AWS gives you two ways to work around that:

  • Clone a released (or draft) offer into a new draft, pre-filled with its pricing and targeting, so you can adjust something and release the result as a separate offer.
  • Expire a released offer immediately, or extend its availability into the future. AWS has no cancel, withdraw, or delete for a released offer — ending one early means setting its availability end date to yesterday, which is exactly what the expire action does.

An offer that already has active purchase agreements can instead be superseded with a replacement offer, tied to that agreement.

Draft creation and release are asynchronous

Creating, cloning, and releasing an offer submit a real StartChangeSet call to AWS and return immediately with a job_id — AWS Marketplace changesets can take anywhere from a few seconds to several minutes to process. Poll the job until it reports succeeded or failed; a failed job carries a plain-English translation of the specific AWS error, not just an error code.

A create, clone, or release call requires an Idempotency-Key header. A private offer, once created, is a real object in your AWS account that cannot be deleted — only expired — so a retried request must reuse the same key rather than risk creating (or releasing) a second one.

Connecting your AWS account (administrator)

FlowState reaches your AWS Marketplace Catalog by assuming a cross-account IAM role that you create in your own AWS account — a FlowStateMarketplaceConnector role, separate from and independent of the APN connector. This is done once, by a tenant admin, in FlowState’s web app. See Prerequisites and Getting started.

Enabling the feature (administrator)

Marketplace Offers is off by default per tenant. A tenant owner or admin turns it on via Settings → Features, or the tenant:features:write-gated PATCH /tenants/{id}/features endpoint, setting marketplace_offers to true. The connector’s own status can only be read or configured once the feature is on.

Permissions

Every action is gated by one of three permissions:

PermissionAllowsGranted to
tenant:marketplace:offers:readList/view products, offers, jobs, and agreementsOwner, admin, member
tenant:marketplace:offers:writeConnect/disconnect the connector, create, clone, extend availability, upload a EULA, create a replacement draftOwner, admin
tenant:marketplace:offers:releaseRelease a draft, or expire an offer immediatelyOwner, admin

release is kept separate from write because both actions it gates are irreversible.

Billing

Once an offer is released (drafts are never billed), FlowState meters it hourly as long as AWS itself still reports it Released with an availability end date in the future or unset — extending an offer keeps the meter running, expiring it stops the meter at the next hourly sample. See Billing → Metering for the marketplace_offers dimension’s price and mechanics.