ZyanDocs

Sell services from your storefront

Turn on a public, branded product page that takes payment through Stripe and creates the client, portal and onboarding automatically after a purchase.

The storefront is a public product page on your own domain. A buyer picks a plan, pays through Stripe Checkout on your connected account, and Zyan creates the client, the portal and the entitlement, applies an onboarding pack and emails the invite — without you touching anything.

Before you start: three switches, all required

The storefront only answers when all of these are true:

  1. The platform-level storefront switch is on for your workspace. This is not self-served — it is enabled for you.
  2. Self-serve storefront is on under SettingsStorefront.
  3. A Stripe account is connected.

With any one of them off, the storefront URL returns a plain 404. Every refusal looks identical from the outside, so check all three before debugging anything else.

Buyer picks a plan

On your public storefront page

Stripe Checkout

Your connected account, your money

Client and portal created

No step from you

Entitlement attached

What they bought, on that portal

Invite emailed

Onboarding pack applied, discovery waiting

Everything after checkout is automatic, which is why the onboarding pack you set is the one every buyer gets.

Get your plans ready first

Products on the storefront come from your Billing Catalog. A plan only appears on the page when it is active, priced above zero and fully synced to Stripe.

A plan that drifts out of sync silently disappears

There is no error on the public page. The product stops being listed. If a buyer says a plan vanished, check its Stripe sync state first.

Turn the storefront on

Create your plans in the Billing Catalog

Let them finish syncing to Stripe before you go any further.

Open the storefront settings

Go to SettingsStorefront. Five cards: Storefront, Products, Onboarding, Terms & messaging and Embed cards.

Turn on Self-serve storefront

Buyers can now purchase and onboard themselves at your storefront link.

Copy the Storefront URL

It uses your verified custom domain, or your workspace subdomain if you have not set one up.

Switch on the products you want to sell

On the Products card, enable each plan, then tick Storefront and optionally Embed, set an Order, and pick a per-product onboarding Pack if it needs its own.

Set the default onboarding pack

On the Onboarding card. It is applied to every portal created by a storefront purchase.

Write your terms and success message

On the Terms & messaging card.

Settings reference

SettingWhat it changesDefault
Self-serve storefrontBuyers purchase and onboard themselves at your storefront link.Off
Embed cardsLets your product cards be embedded on your own website.Off
Storefront URLRead-only. Your verified custom domain, or your workspace subdomain.
Per-product switchWhether a catalog plan is sold at all.Off
Storefront / EmbedWhich surfaces the product appears on.
OrderThe product's position on the page.
PackA per-product onboarding pack that overrides the default.Storefront default
Default onboarding packApplied to portals created by storefront purchases.
Terms URLLinked at checkout. Leave it blank to show the terms text instead.
Terms textShown at checkout when no terms URL is set.
Success messageShown to the buyer after a successful purchase.

A live storefront with no products is an empty page

Turning the switch on does not list anything by itself. Switch on at least one product before you share the link.

Where the pages live

PageAddress
Product grid<your portal domain>/client-portal/store
A single product<your portal domain>/client-portal/store/<plan slug>
After checkout<your portal domain>/client-portal/store/success

Link to the grid from your marketing site, your ads or an email. Link to a single product page when you are selling one thing.

What happens after a purchase

The buyer pays through Stripe Checkout on your connected account, and the rest of the chain above runs without you. They set a password and land in their portal with the discovery questionnaire waiting.

The new client then appears in DeliveryClients like any other, portal already attached. Their Overview tab carries the onboarding timeline, so you can see how far into the pack they got before you follow up.

Embed the cards on your own site

If you would rather keep buyers on your own website, turn on Embed cards, mark the products Embed, and copy a snippet from the Embed cards card. There are two:

  • All product cards — renders every product marked Embed.
  • A single product's card — the same snippet scoped with a data-plan attribute on the div.

Checkout happens inside the card. The buyer is returned to your hosted success page afterwards. A For developers block on the same card offers optional visual controls, and a How it behaves block explains the runtime behaviour.

The Billing tab is hidden on iOS

Storefront and billing surfaces do not render inside the iOS admin shell. Do this setup on the web.

Troubleshooting

SymptomCauseFix
The storefront URL returns 404The storefront switch is off, no Stripe account is connected, or the platform switch is not on for your workspaceCheck all three. Every refusal looks the same from outside
The page loads but is emptyNo products are switched onEnable at least one product under Products
A plan is missing from the pageIt is inactive, priced at zero, or not fully synced to StripeFix it in the Billing Catalog and let it re-sync
A buyer got no onboardingNo default onboarding pack is setSet one on the Onboarding card
The embed snippet renders nothingEmbed cards is off, or the product is not marked EmbedTurn both on, then re-copy the snippet
Checkout shows no termsNeither Terms URL nor Terms text is filled inSet one of them