SaaS
A SaaS marketing site lives or dies on messaging: pricing framing, feature positioning, onboarding copy inside the product itself. This walkthrough sets up a Pricing Plans collection and an in-app onboarding experiment.
Modeling pricing plans
| Field | Type | Notes |
|---|---|---|
| name | text | e.g. “Growth” |
| tagline | text | One-line pitch shown on the pricing page |
| monthlyPrice | number | |
| annualPrice | number | |
| features | multi_enumeration | Feature flags included in the plan |
| highlighted | boolean | Whether to show the “Most popular” badge |
| ctaLabel | text | Button copy, e.g. “Start free trial” |
Driving the pricing page
The marketing site fetches all plans and renders them in the order returned, sorted by price:
?sort=monthlyPrice:ascTesting onboarding copy
The first screen a new signup sees inside the product is often managed as content too - a Onboarding Steps collection rendered by the app shell. Run an experiment on the first step's entry to test two different framings of the value proposition, and record a conversion when a new user completes onboarding rather than abandoning it:
GET /collections/onboarding-steps/content/1?experiment=1Because variant resolution is opt-in per request, the same entry can keep being read normally everywhere else in the product (support tooling, internal previews) while only the onboarding flow itself asks for a variant.
Plans as relations
relation field from your Accounts collection back to Pricing Plans so the dashboard shows which plan an account is on without a separate lookup table.