Paywall runs the backend side of your paywall today: plans, feature flags, tokens, checkout and fulfilment. The next step is the screen itself, drop-in components rendered from the same published catalogue.
Nothing here needs new configuration. Every component renders from the plans, prices and flags you already publish, so the frontend can never drift from what checkout charges.
A drop-in component rendered from your published plans and live quotes. The price on screen is the price at checkout, in the visitor's currency.
Wrap any feature. When the flag is off, the modal shows the plans that unlock it and starts checkout in place.
One element that knows the current plan, the next plan up and the right provider for the customer.
A hub-hosted checkout page for apps that don't want to own a pricing page at all. Link to it, get a fulfilled customer back.
The billing portal as a component inside your settings page, not just a hosted redirect.
Every component ships with the same LLM-ready guide, so an agent can add a pricing page the same way it adds the backend.
// Planned. Not shipped yet — the hooks below it are what you use today.
<PricingTable highlight="pro" onCheckout={(plan) => track("upgrade_clicked", { plan })} />
<Paywall feature="exports">
<Exporter />
</Paywall>The building blocks the components will sit on are shipped and documented. You can build a pricing page with them today.
const { quote } = useQuote("pro");
const checkout = useCheckout();
return (
<button onClick={() => checkout({ planKey: "pro" })}>
Upgrade for {quote.amount} {quote.currency}
</button>
);usePaywall, useFeature, useCheckout and useBillingPortal over a vendored client with automatic customer-token refresh.
A short-lived session opens a hub-hosted page with the current plan, feature list, payment history and upgrade buttons.
One public endpoint returns the exact price, currency and provider checkout will use for a visitor's country.
A stable anonymous id from the first visit, stitched to the customer once they identify.
Everything the components will render already lives in your published catalogue. Set it up now and the frontend pieces drop in when they ship.