store/list-customers summarises the customer base: how many accounts exist, how many of those have bought something, whether there are guest orders, and how order counts are distributed.
It returns no names, no emails and no addresses. Nothing here identifies anybody.
At a glance
| Ability | store/list-customers |
| Toolset | WooCommerce — toolset/woocommerce |
| Group | WooCommerce › Customers |
| Requires | WooCommerce, active on the site |
| Capability | manage_options |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
Most questions a shop owner asks about customers are questions about the aggregate. How many do we have, how many come back, what proportion have ordered more than once, are we accumulating accounts that never buy. None of those need a name.
So this answers them at that level, and it is the call to reach for by default. The distribution of order counts is the useful part: a base where almost everyone has ordered once is a different business from one where a third have ordered five times, and the headline count hides that difference entirely.
Guest orders are flagged separately, because a shop with many of them has a customer base larger than its account count suggests, and every per-customer figure here understates it.
When named records are genuinely needed — a data subject request, a migration — store/export-customers releases them under explicit conditions. That separation is the design: the cheap call cannot leak, and the leaking call is hard to run by accident.
Input
This ability takes no input.
What comes back
| Name | Type | What it is |
|---|---|---|
registered_customers | integer | How many customer accounts exist. |
purchasers | integer | How many of them have bought something. |
guest_orders_present | boolean | Whether the store has orders without an account. |
orders_per_customer | object | The distribution of order counts. |
personal_data_included | boolean | Always false. Nothing here identifies anybody. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
How many customers do we have, and how many actually buy?
It resolves to one call:
{
"ability": "store/list-customers",
"parameters": {}
}Worth knowing
- No names, emails or addresses, ever. There is no flag to change that.
- The order-count distribution says more than the headline number.
- Guest orders mean the real customer base is larger than the account count.
Related abilities
- Get Customer — one customer’s order history
- Export Customers — when named records are genuinely needed
- Get Sales Summary — the money side
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category