Skip to content

AWS Marketplace Listing Specification

Date: 2026-05-09 Status: Pre-launch reference. Single source of truth for what should appear in AWS Marketplace Seller Central for the Vellocity SaaS Contract listing. Companion docs: - PRICING_ALIGNMENT_AUDIT_2026_05_06.md — multi-surface pricing audit - PRICING_PAGE_COPY_GTM_POSITIONING.md — public copy - AGENTIC_PAYMENTS_X402_OPPORTUNITY.md — agentic metering rail


TL;DR

  • One AWS MP listing with 3 self-serve contract tiers (Starter / Accelerate / Command) + Enterprise via Private Offer.
  • Two contract durations: monthly + annual. Annual is the same SKU at a discounted price.
  • Headline prices match direct Stripe ($299 / $1,499 / $3,999 monthly). The 3% AWS Marketplace fee is absorbed as CAC, not passed through to the listing price.
  • 8 metering dimensions handle usage above the included tier allocation.
  • Divergence from Stripe is allowed only in Private Offers and in metering rate cards.

Source-of-truth chain

Layer Storage Authoritative for
Vellocity DB (plans) MySQL Tier names, slugs, headline prices, included credits, marketing copy
Stripe gateway_products DB → Stripe API Direct-subscription checkout SKUs
Vellocity DB (marketplace_pricing_dimensions) MySQL AWS MP overage dimensions, base unit prices
AWS MP listing Seller Central (manual) Public AWS MP listing — mirrors Vellocity DB
AWS MP private offers Seller Central per-customer Permitted to diverge from public list pricing

When any of the first three change, the AWS MP listing must be updated manually in Seller Central. There is no automated publish from this repo to AWS MP.


SaaS Contract pricing rows

These are the rows to enter in Seller Central when configuring the SaaS Contract listing.

Tier Duration List price (USD) DB plan ID Stripe product Stripe price ID
Starter Monthly $299/mo 1 prod_UTtKp8BBHoo8jC price_1TUvXMJ64NJeR1n97xgOUuuC
Starter Annual $2,990/yr ($249/mo equiv) 6 prod_UTtKp8BBHoo8jC (yearly price ID — see DB gatewayproducts)
Accelerate Monthly $1,499/mo 2 prod_UTtQTDFcw2hGF8 price_1TUve1J64NJeR1n96ngyir9W
Accelerate Annual $14,990/yr ($1,249/mo equiv) 7 prod_UTtQTDFcw2hGF8 (yearly price ID)
Command Monthly $3,999/mo 3 prod_UTta7cxYfFBD8V price_1TUvnjJ64NJeR1n9NJoAt6Jo
Command Annual $39,990/yr ($3,333/mo equiv) 8 prod_UTta7cxYfFBD8V (yearly price ID)
Enterprise Custom Private Offer only 4 none (no self-serve SKU) n/a

Naming for Seller Central: Vellocity GTM — Starter / Vellocity GTM — Accelerate / Vellocity GTM — Command. Internal slugs (starter / accelerate / command_plus) and brand line ("Vellocity — GTM for Marketplaces") agreed in the May 6 audit.

Annual savings = 17% (not 20%). Yearly prices are monthly × 10, i.e. 2 months free, which works out to 16.7%. Public marketing currently advertises "Save 20%". Pick one — either round honestly down to "Save 17%" or bump yearly prices to monthly × 9.6 (≈$2,870 / $14,390 / $38,390) to make 20% true. Don't ship the public AWS MP listing with a 20% claim that the SKU prices contradict.


Metering dimensions (overage)

These are the 8 dimensions seeded in marketplace_pricing_dimensions (2026-02-03). Each maps 1:1 to an AWS MP aws_dimension_name and represents the cost of usage above the included tier allocation. Each customer's tier grants an included_quantity; AWS MP meters consumption above that and bills monthly via BatchMeterUsage.

AWS dimension Vellocity key Unit Base price Included (Starter) Tier floor Metered
Words words per 1,000 words $0.001 50,000 any yes
Images images per image $0.050 100 any yes
AudioMinutes audio_minutes per minute $0.010 30 Accelerate+ yes
VideoMinutes video_minutes per minute $0.500 5 Command+ yes
APIRequests api_requests per 1,000 reqs $0.010 10,000 Accelerate+ yes
GTMWorkflows gtm_workflows per workflow $5.000 5 Starter+ yes
TeamSeats team_seats per seat/month $29.000 0 (per-tier floor) any no (entitlement)
SEOCredits seo_credits per credit $0.100 50 any yes

Volume tiers are seeded per-dimension in pricing_tiers JSON and unlock automatic discounts at higher usage bands (e.g. words: $0.001 → $0.0008 above 100K → $0.0006 above 500K). Volume tier discounts apply to public list prices; Private Offers may override.

team_seats is an entitlement dimension, not a usage dimension — included counts come from each tier (Starter 3, Accelerate 10, Command 25). The $29/seat overage rate applies for additional seats beyond the included allocation.


Tier × dimension applicability

What each tier customer gets, expressed as the included_quantity × applicable_plan_ids matrix. Annual variants of each tier inherit the same dimension allocations as their monthly counterpart — billing frequency does not change entitlement.

Dimension Starter Accelerate Command Enterprise
Words 50,000 50,000 50,000 custom
Images 100 100 100 custom
Audio minutes 30 30 custom
Video minutes 5 custom
API requests 10,000 10,000 custom
GTM workflows 5 unlimited (per memory note) unlimited custom
Team seats 3 10 25 unlimited
SEO credits 50 50 50 custom

Open inconsistency (deferred): the included-quantity values seeded into marketplace_pricing_dimensions are uniform across tiers (e.g. all tiers get 50,000 words included). The marketing copy on /pricing and the credit pool sizes (500 / 2,500 / 10,000) imply tier-stratified included quantities. These need to be reconciled before publishing the Seller Central listing — either by overriding included_quantity per-tier in marketplace_pricing_dimensions (extend schema) or by entering tier-specific contracts in AWS MP that deduct different included amounts.


Open decisions before publishing the listing

  1. Yearly discount honesty — claim "Save 20%" or deliver 20%. Currently 17%.
  2. Marketplace SEO tier — marketing copy on /pricing says Command-tier, but TeamMemberCapability::minimumPlan() enforces Accelerate. Pick one before AWS MP customers see the listing.
  3. Tier-stratified included quantities for metering dimensions (above) — one schema extension or tier-specific contract setups.
  4. Enterprise — Private Offer only, but should the public AWS MP listing carry an "Enterprise — contact sales" CTA card, or be invisible? Recommendation: invisible on the public listing (matches hidden=1 in DB, matches /payment behavior); surface only via direct outreach + Private Offer URL.
  5. ~~marketplace_pricing_dimensions.applicable_plan_ids still references plan id 5 (deleted in May 6 cleanup) and omits the new yearly plan ids 7,8.~~ Resolved 2026-05-09 by 2026_05_10_000004_reconcile_marketplace_dimension_plan_ids.php — lists are now derived dynamically from the current plans table by slug, keyed off each dimension's tier_level. Verified result: tier=any → [1,2,3,4,6,7,8], tier=accelerate → [2,3,4,7,8], tier=command → [3,4,8].

Update procedure

When tier prices change in plans:

  1. Update plans table (price + name + slug) — preferably via a migration following the May 8 Phase C pattern (2026_05_08_000001_wire_premium_repositioning_stripe_ids.php).
  2. Confirm Stripe products + prices match (php artisan tinkerStripe\Price::retrieve(...)).
  3. Manually update Seller Central listing — change SaaS Contract row prices.
  4. Re-render this spec doc by running the data-extraction tinker script in PRICING_ALIGNMENT_AUDIT_2026_05_06.md and updating the tables above.
  5. Notify existing AWS MP subscribers via the AWS MP-required notification path (60-day grandfathering for SaaS Contract changes).

When metering dimension rates change in marketplace_pricing_dimensions:

  1. Update the row(s) in marketplace_pricing_dimensions.
  2. Manually update the corresponding dimension in Seller Central. Existing entitlements remain at the original rate; only new entitlements pick up the new price.
  3. Update this spec.

Private Offer carve-outs

Divergence from public AWS MP list pricing is permitted only via Private Offers. Common patterns:

  • Multi-year commit discount beyond the standard 17% annual discount (e.g. 25% on 3-year commit).
  • Custom dimension allocations (e.g. Enterprise with 1M words included rather than 50K).
  • Custom dimensions beyond the 8 published (e.g. dedicated AgentCore tenancy, white-label rights).
  • Negotiated contract minimums above the public Command price for Enterprise.

Express Offers infrastructure exists at app/CustomExtensions/CloudMarketplace/System/Services/ExpressOfferPricingService.php. All 8 dimensions are flagged express_offer_eligible=1.


Cross-source consistency reminder

Per AWS internal field intel (May 8): AWS's agent-driven discovery weights cross-source consistency between (a) seller's website, (b) AWS MP listing, and (c) third-party signals. The vell.ai /pricing page and the AWS MP listing must show the same headline tier names, prices, and capability descriptions. Divergence dilutes ranking and signals to discovery agents that the seller is gaming the catalog.

This spec exists to make that consistency easy to maintain. When in doubt, the DB is canonical; everything else mirrors.