Customers
A customer in Distribu is a business account you sell to — a restaurant, a boutique, another distributor, whoever. Each customer account has:
- An email address and password used to sign in to your storefront.
- A status —
ACTIVE(can log in and order) orBLOCKED(locked out). - Optional notes and a credit limit you track internally.
- Any number of shipping addresses.
- Optional price overrides — custom per-product pricing just for them.
- Optional contacts — extra users who log in under the same account.
- A full order history with stats.
You'll find the list at
/dashboard/customers. Click any row to open the full
customer profile.
What's in this section
- Adding customers — how customers end up in your account (self-register or CSV import — there's no "Add customer" button).
- CSV import — bulk-create and update customers from a spreadsheet.
- Customer contacts — inviting additional buyers and viewers under a single customer account.
- Price overrides — custom pricing per customer without touching your catalog.
- Storefront access — login URLs, session behavior, and how to block a customer.
Related topics
- Customer contacts → Roles — the
ADMIN,BUYER, andVIEWERpermission model. - Customers CSV format — the exact column spec used by import and export.
- REST API — Customers endpoints — create and update customers programmatically.
Anatomy of a customer
| Field | Type | Notes |
|---|---|---|
email | string, required | Unique per company — two customers in the same store can't share an email. Max 254 chars. |
name | string, optional | Business or contact name. Max 100 chars. |
password | hashed, optional | Stored hashed, never in plain text. Only set when the customer self-registers or is invited as a contact. Imported customers have no password until they reset one. |
status | enum, defaults to ACTIVE | ACTIVE or BLOCKED. Blocked customers can't log in. |
notes | string, optional | Free-form internal notes. Up to 2000 chars. Not visible to the customer. |
creditLimit | decimal, optional | Up to 2 decimal places, ≥ 0. For your records — Distribu doesn't enforce it on orders. |
Customers are scoped to your company. A customer with email
buyer@acme.com at one distributor is a completely separate account from
a customer with the same email at another distributor — they have separate
passwords, orders, and histories.
No "Add customer" button. By design, you can't create a customer manually from the dashboard — the list page only offers Import CSV and Export CSV. Customers come in by registering themselves or by CSV. See Adding customers for the full explanation.
The customer detail page
Opening a customer at /dashboard/customers/{id} gives you a single-page
dashboard for everything about them:
- Header with name, email, status badge, join date, and a toggle to activate or block.
- Stats — total orders, total spent, average order, credit limit.
- Edit form — notes and credit limit.
- Custom pricing — add/edit/remove per-product price overrides.
- Contacts — manage the users who can log in under this account.
- Shipping addresses — read-only list of addresses the customer has saved via the storefront.
- Order history — every order they've placed, with status and totals.
Everything here is edit-in-place. Changes write a CustomerUpdated,
CustomerStatusChanged, PriceOverrideSet, or similar entry to the
audit log so you can see who changed what.
Next: Adding customers.
