Skip to content

Store settings

Settings in the admin is grouped by what it affects. The store’s settings row is one object, settingsInputSchema in shared/api.ts, and every field has a fallback so a store that sets nothing renders exactly as it did before the field existed.

The store name, the currency (ISO 4217, set once at setup), and the language.

Language is the store’s BCP 47 tag, and it decides how money, dates and country names are written everywhere: the storefront, the admin, and order email. It defaults to en-US. A euro shop that leaves it there prints €1,234.56; set to de-DE it prints 1.234,56 €. It also sets <html lang>, so screen readers and translation prompts get the right answer. Prices are stored as integer cents regardless, and the CSV exports are unaffected. It is the store’s locale, never the buyer’s: a shop’s prices should read the same in every screenshot of it.

The opening block of the landing page: a heading, a line of text, a button label and target, and an optional background image. Leave any empty and the storefront falls back to the store name, no paragraph, and a Shop everything button pointing at /shop. The button’s target is held to a same-origin path or an https:// address on both sides of the wire, so it cannot be made to point at javascript: or a plain-http:// downgrade.

Plain text, deliberately not Markdown. A hero is one sentence, and a bold word inside it is a decision the theme should be making.

The theme: colours, scheme, radius, logo, font and font stylesheet URL. Theming has all of it.

Tax, Shipping, Email, Visibility, Webhooks

Section titled “Tax, Shipping, Email, Visibility, Webhooks”

Each has its own page: Tax, Shipping, Email, Storefront visibility, Outbound webhooks.

The opt-in and the delay. Abandoned cart recovery.

The admin’s first screen says the things a fresh store does not otherwise say: no Stripe key, a test key on a public store, no shipping rates for live physical products, a zone no rate can price, tax off, email not configured, products live but not published, products published under stale tax settings. Each links to the place it is fixed. It reports live state rather than marching through a wizard, because most of those are environment variables that a wizard could not click.