Paywall  /  Store page

Store page

The Store is your hosted pricing page — the screen a buyer sees before checkout, with one card per plan. In the dashboard preview the cards render straight from your products, so there's nothing to design up front. This tab is where you make it yours: layout, ordering, badges, and per-card copy.

Designing the store ≠ making it sellable. The cards here render from your products automatically (options are optional — they just let you reorder / customise). But to actually take money, two things must be ON: the Access Gate “Plan required” (right here on this tab) — and a connected Stripe account. With the gate off the store still displays, but the /buy checkout returns 404. Full integration on the Store page.

Access Gate

The Access Gate answers two separate questions, and the second one only appears once the first is on.

1. “Plan required” — is the app paid? Off, everyone who signs in gets the app. On, a user without an active plan doesn't get in. It fires on sign-in as much as sign-up: an existing customer whose plan lapsed hits the same gate. A plan priced at 0 satisfies it exactly like a paid one — the gate asks whether there is a plan, not whether money changed hands.

2. Where are people allowed to buy? Two choices, and this one is not about iOS even though App Review is why it exists:

ChoiceWhat your users get
Sign in only (default)
Buyers pay on your website
The app never sells inside itself, on any platform. Sign-up disappears from the hosted sign-in page, the in-app store refuses to open, and the customer portal hides buying and plan changes. A signed-in user with no plan sees “No active plan — this account doesn't have access to {your app} right now” and can switch account.
Show the store
I handle compliance
The store opens in-app and buyers check out there. On iOS and the Mac App Store this is the choice that puts App Review guideline 3.1.1 on you — see Store in your app.
“Sign in only” is not an iOS setting. It applies to web, Android, desktop — everywhere. If you sell on your own website and treat the app purely as a client, this is the correct choice regardless of what you ship to. Picking it on an Apple app additionally keeps you clear of 3.1.1; that is a consequence, not the definition.
The gate never blocks the things people are entitled to. Cancelling a subscription, downloading an invoice or a receipt and requesting a refund work in every configuration. Blocking those would be a worse problem than an App Review rejection.

Your SDK sees the choice as in_app_store_allowed in /api/sdk/config, so you can hide your own “Upgrade” buttons without hard-coding anything. If your code opens the store anyway, the endpoint answers 409 in_app_store_not_allowed — a loud error while you're building, rather than a silent nothing that surfaces as a rejection weeks later.

Umbrella apps (creating or attaching new ones is coming soon): “Plan required” belongs to the identity — set once on the umbrella app, shared by every app attached to it. Where buying is allowed belongs to the platform, so it is set per attached app: the umbrella app shows one row per attached app instead of a single switch. That is deliberate — your iOS build can be “Sign in only” while the same product's web build sells in-app.
WhereDashboardApplicationsYour appPaywallStoreAccess Gate

Toggle Plan required. With it on, pick Sign in only or Show the store below it. On an umbrella app, choose per attached app in the list.

Products vs Options — the one concept to get

A product is what the buyer pays for. An option is a card on the store page that points at a product. With no options, every active product gets an automatic card. Add options when you want control: a different card order, custom copy, a “Contact sales” card, or two cards selling the same product with different framing.

You want to…Do this
Just show my productsNothing — cards render from Products automatically.
Reorder / restyle the cardsClick + Add option per card, pick its target product, drag to order — first in the list = first on the page (top card in Stack, top-left in Grid).
Custom card textOn the option, turn “Inherit display from product” off — then override title, description, price display, badge, button text, features, footer and color.
A “Contact sales” style cardCustom option with a free-form price display (e.g. “Contact sales”).
An option with no target product shows a warning badge and is hidden from customers until you pick one.
WhereDashboardApplicationsYour appPaywallStoreOptions

Click + Add option, pick its Target product in the editor, drag cards in the left list to set their order. To customise copy, switch “Inherit display from product” off.

Choose a layout

LayoutBest for
StackOne plan, or a simple top-to-bottom comparison. Calm, mobile-friendly.
GridTwo to four plans side by side — the classic pricing page.
FeaturedOne hero card above smaller siblings. Mark a card with “Mark as featured” (only one per app — promoting a new one demotes the old).
WhereDashboardApplicationsYour appPaywallStoreStore Layout

Pick Stack, Grid or Featured — the preview on the right re-renders instantly. For Featured, mark the hero card with “Mark as featured” in its option editor.

Polish the details

The Settings panel groups the store-wide knobs:

GroupControls
HeaderHeading, subheading, your app logo, alignment.
Card displayCard width (Narrow → Extra wide), card borders, compact mode.
Pricing displayShow the old price on sale, the “Save X%” pill, CTA alignment, monthly/annual toggle alignment, badge style (pill / ribbon / corner).
Featured cardHero border width & color.

Everything previews live on the right — toggle Web / Mobile to check both. Colors and typography come from your app's Branding, so the store matches the rest of your product.

Next

Store page — Paywall — Onelo Docs