Platform subscribers directory

Subscribers are B2C trader accounts (DOC-002). Platform staff use this directory to onboard retail users, review plan access, and troubleshoot scanner limits — not restaurant tenants or org staff.

Overview

Platform subscribers directory

Figure: Operations → Subscribers — search by login email, status filters, row actions, and Invite subscriber (modal).

What each column means

Name

Display name chosen at invite or self-registration (for example Jane Trader).

Email

Primary login email (primaryEmail) — the identifier support should use. Slug is internal and not shown in this table.

Plan

Commercial plan code linked via Stripe subscription (for example LITE, PLUS).

Status

ACTIVE or SUSPENDED. Suspended accounts cannot sign in to the subscriber app.

Invite subscriber (P1)

Requires platform.subscribers.create (seeded on PLATFORM_OPERATIONS / PLATFORM_SUPPORT).

  1. Open Operations → Subscribers.
  2. Click Invite subscriber (toolbar, top right).
  3. Enter Email and Display name.
  4. Submit — API provisions Subscriber + owner User + trial plan and emails a password setup link.

The email points to /reset-password?token=…&subscriber={slug}. After the trader sets a password they sign in at /login and land on /app/dashboard.

Detail modal

Click a row to open the scrollable detail dialog:

  • Overview — account metadata, billing flags, impersonate / suspend actions.
  • Entitlements — scanner quotas (watchlist, async runs/day, paper diary), feature toggles, linked data sources, subscription badges. FoodHub location/user limits are not shown.

To change scanner defaults for many accounts, edit the Plan (S-106) scanner entitlements step.

Impersonate

When permitted, Impersonate opens the subscriber app with an amber banner. With B2C single-user accounts this is equivalent to signing in as the trader.

Permissions

| Action | Permission | | ------ | ---------- | | List / detail | platform.subscribers.read | | Invite | platform.subscribers.create | | Suspend / activate | platform.subscribers.suspend | | Entitlements read | platform.billing.read or platform.subscribers.read | | Impersonate | platform.subscribers.impersonate |

Common questions (Support)

I invited someone but they did not receive email

Check Mailpit locally (port 8025) or production SMTP logs. Confirm the address is not disposable-blocked and unique in User.

Why is there no Users tab?

B2C V1 — one trader per Subscriber. Staff IAM is platform-only (/platform/access/users).

Scanner limits look wrong

Open detail → Entitlements. Compare usage vs plan caps. Edit plan scanner entitlements (S-106) or subscriber subscription tier if billing changed.