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.
Identity
Section titled “Identity”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.
Landing page
Section titled “Landing page”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.
Abandoned carts
Section titled “Abandoned carts”The opt-in and the delay. Abandoned cart recovery.
The Overview
Section titled “The Overview”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.