Storefront

Every Distribu account comes with a public-facing storefront where your customers log in, browse your catalog, place orders, and review their order history. No extra setup, no separate subscription. If you have products in Distribu, you have a storefront.

This section is the customer-facing counterpart to everything else in the docs. If Orders is how you see an order, this is how your customer places it.

The URL

Your storefront lives at:

https://distribu.app/store/{slug}

…where {slug} is your company's URL slug. The slug is auto-generated from your company name — "Acme Distributors" becomes acme-distributors. You can see (but not directly edit) it in Settings → Company. Rename the company and the slug regenerates; see Setting up your storefront for the caveats around that.

Share the base /store/{slug} URL with customers — it redirects to the catalog if they're logged in, or the login page if they're not.

What customers see

When a customer opens your storefront:

  • Branding — Your company name at the top of every page, plus a small colored square with your company's first initial. That's the full extent of storefront branding today; no logo upload, no custom color, no custom domain.
  • A four-link nav (once logged in) — Catalog, My orders, Addresses, and a Sign out button. Contact users also see their role as a small gray badge next to their name (Admin, Buyer, or Viewer).
  • A product catalog — Every active product in your catalog with stock > 0, paginated 24 per page. Ordered by category then name.
  • Their order history — Every order placed by this customer, with statuses synced to what you see in the dashboard.
  • Saved shipping addresses — Any number of addresses, one marked as default, reusable across orders.

The storefront is fully server-rendered and doesn't require JavaScript for browsing — though the cart itself uses a client component for live quantity updates.

URL map

PathPurpose
/store/{slug}Landing — redirects to /catalog or /login
/store/{slug}/loginSign-in form (primary + contact logins)
/store/{slug}/registerCreate a customer account
/store/{slug}/setup-passwordFirst-time password for invited contacts
/store/{slug}/catalogBrowse products + cart + checkout
/store/{slug}/ordersCustomer's order history
/store/{slug}/orders/{id}Single order detail
/store/{slug}/orders/{id}/invoiceDownload invoice PDF
/store/{slug}/addressesManage saved shipping addresses

If a URL starts with /store/{slug} but the slug doesn't match a real company, it 404s. If it's gated (anything past login) and the customer isn't signed in, it redirects to /store/{slug}/login.

Session model

Customer logins are completely separate from staff logins — different records, different cookie, different auth flow. When a customer signs in, Distribu issues a cryptographically signed customer_session cookie that lasts 7 days. That cookie is scoped to the slug they logged into — if they bounce over to /store/otherco/catalog, they'll be redirected to otherco's login.

See How customers log in for the full auth flow, including the two login tiers (primary customer vs. contact) and how passwords are set.

Storefront vs. dashboard orders

Storefront orderDashboard order
Has a customerYes (the logged-in one)No
Decrements stockYesNo
Requires shipping addressYesNo
Respects price overridesYesN/A (no customer)
Sends customer receiptYesNo
Sends alert to OWNER + ADMINYesNo
Counts against monthly plan limitYesNo
Triggers low-stock alertYesNo

See Orders for the full comparison and Creating orders for the dashboard path.

What's in this section


Next: Setting up your storefront.