Customers

Customer lookup

How to find a customer workspace and what data is available on their profile.

Finding a customer

Ops → Customers

Use the search box to filter by workspace name or slug (ILIKE, minimum 1 character). You can also filter by status:

Status Meaning
active Paid subscription, in good standing
onboarding New account, not yet on a plan
suspended Account suspended by ops

The list is paginated using stable keyset cursors — the page order doesn't shift when new customers sign up mid-browse. Use Next / Previous to navigate.

Columns: Name (slug), Plan, Status, Members, Credits, Joined

Customer profile

Click any row to open the full customer profile. Viewing a customer profile is an audited action — it is logged to the ops audit trail with your email, their tenant ID, timestamp, and your IP.

What the profile shows

Header: Workspace name, status badge, slug, tenant ID, join date

4 stat cards:

Card Value Notes
Plan Plan name + billing cycle "Pro · monthly"
Credits Total balance (subscription + permanent) Subscription credits expire at period end
Members Count of workspace users
Renewal Next billing date Shows "Ends at period end" if cancellation scheduled

Members table — all users in the workspace with role and join date. Owners are highlighted.

Spend by service (30d) — horizontal bar chart showing net credit consumption broken down by service bucket (ai, blog, forms, email, content, analytics, other). Includes transaction count hints.

Recent transactions — last 15 credit ledger entries, consolidated:

  • Hold/capture pairs are collapsed into a single net row (what was actually charged)
  • Hold/void pairs are hidden (no net charge)
  • Compensating refunds are shown as positive rows

Credit balance breakdown:

Total:                  850 credits
├─ Subscription:        500 cr (expires 2026-07-28)
└─ Permanent:           350 cr

Internal notes — staff-authored notes on this workspace. See Notes and audit for details.

Credit balance explained

Each customer has two credit buckets:

Bucket Source Expires?
Subscription Included with their plan Yes — at billing period end
Permanent Purchased top-ups or manual grants No

The total visible in the list and profile is subscription + permanent. Expired subscription credits are automatically treated as 0 (lazy expiry — no cleanup job needed).

Revenue context

For billing context on a specific customer, cross-reference with the Revenue page which shows their plan, trial status, and past-due date at a glance.

API endpoint

GET /api/admin/customers/:tenantId

Responds with the full CustomerDetail shape. Writing a view_customer entry to ops audit log is part of this call.

Internal Ops · CustomersEdit on GitHub