Self-Serve Pricing Page and Plan Upgrade Flow
Self-Serve Pricing Page and Plan Upgrade Flow
As of v1.0.124, the platform ships a fully self-serve pricing page and plan upgrade flow. Visitors can evaluate plan tiers, select a plan at sign-up, and existing users can upgrade without any human sales involvement.
Pricing Page
The pricing page is accessible from the main landing page and displays all available plan tiers.
Plan Tiers
| Plan | Target User | Billing |
|---|---|---|
| Free | Individuals exploring the platform | No charge |
| Pro | Teams shipping production products | Monthly / Annual via Stripe |
| Enterprise | Organisations requiring advanced controls | Monthly / Annual via Stripe |
Each plan card shows:
- Monthly and/or annual price
- Included credit allocation (sourced from the
creditTransactionsschema) - Feature entitlements specific to the plan tier
- A primary CTA button to sign up or upgrade
Plan Selection at Sign-Up
When a new user visits src/app/sign-up, they are now presented with plan choices before completing account creation.
Flow:
- User arrives at the sign-up page.
- Plan options are displayed with pricing and entitlement summaries.
- User selects a plan.
- If a paid plan is selected, Stripe Checkout is initiated.
- On successful payment (or for Free plan, immediately), the user account is created with
users.planset to the chosen value.
In-App Upgrade Flow
Signed-in users on the Free or Pro tier can upgrade at any time from within the product.
Flow:
- User navigates to the billing or account settings section.
- Current plan and available upgrades are displayed.
- User selects a higher tier and confirms.
- Stripe handles payment;
users.planis updated on successful charge. - New credit entitlements are applied immediately via the
creditTransactionstable.
Schema Reference
users.plan
Stores the active plan for each user account.
enum: 'free' | 'pro' | 'enterprise'
This value gates feature access throughout the application and is the source of truth for what the pricing UI displays as the user's current plan.
creditTransactions
Records credit allocations and consumption. The pricing page reads plan-level credit entitlements from this schema to display accurate limits on each plan card.
Stripe Integration
Stripe is used for all paid plan billing. Plan selection in both the sign-up flow and the in-app upgrade flow triggers Stripe Checkout or Stripe Billing Portal respectively. No manual invoicing or sales handoff occurs at any point.
Design Rationale
Prior to this release:
- The landing page had no pricing section — visitors saw features and infrastructure detail but no plan tiers or costs.
- The sign-up flow created user accounts without presenting plan options, defaulting every new account to
free. - Conversion from visitor to paying customer required manual outreach.
This release aligns the main platform with the self-serve conversion model already present in the product template (template/src/app/pricing/page.tsx) and removes the human bottleneck from the sales path entirely.