Customers

Every account of your site in one list: who signed up, who verified, who is locked out - and the switch that stops someone signing in.

A customer is a site member seen from the admin: a record of a model that has accounts enabled, identified by its identity (usually an email). There is no separate customer table. If your workspace has two account models - say members and wholesale - the Customers area lists both, with a tab per model.

The area lives next to Commerce and Team in the admin navigation. It shows up once at least one model has accounts enabled; before that it points you to Models.

The list

Search by identity, filter by status, and by company when the model declares one. Each row shows the display field of the record (or the identity when it is blank), the model, the status and the last sign-in.

  • active - can sign in.
  • pending - registered, email not verified yet. Only exists when the model requires verification.
  • suspended - sign-in refused, every live session ended.

A lockout after too many failed attempts is not a status: the row shows locked until and it expires on its own.

The detail page

The account card, then three tabs: Profile (the record's fields, read-only; Edit opens the same record dialog as Models), Orders and Carts of this customer. The profile is the record, so editing it needs the models:edit permission; the two tabs need orders:view and carts:view.

Suspend and reinstate

Suspend blocks sign-in and invalidates every access and refresh token the customer holds - the next request with an old token is refused. Orders, carts and the record itself stay. A pending account cannot be suspended: verifying it would otherwise turn into a way of activating it.

Reinstate lets the customer sign in again and clears any lockout. Both actions refuse when the account is already in the target state, so an agent retrying a call cannot flip it twice.

Orders and guests

An order placed by a signed-in member is attached to that member. A guest order is attached later, when the guest registers and verifies the same email - so "my orders" fills in retroactively. From the order detail you can also attach or detach a customer by hand.

Companies (B2B)

On the account model's Auth tab you can name a company field (a relation to your company model) and a company role field (a select such as buyer / approver). The Customers list then shows a Company column and filter, orders and carts can be listed by company, and an order freezes the company name at checkout so a later rename does not rewrite history. Nothing about the company is exposed on the public API.

Permissions

  • customers:view - see the area, the list and the detail. Seeded on the Viewer role.
  • customers:manage - suspend and reinstate. Seeded on the Editor role.

Attaching a customer to an order is an order change, so it needs orders:manage.

From MCP and Spotlight

The same surface is available to agents: list_customers (model, status, search, company, paging), get_customer (summary plus the record's data), suspend_customer and unsuspend_customer. get_model returns the model's auth config, and update_model sets the company fields. See the tool catalogue.

Next steps