At a glance
The count of distinct Customer.id values across orders placed in the period. This is “how many distinct people bought from us in the last 30 days”, regardless of how many orders each placed.
| What it counts | CARDINALITY(customer.id.keyword) over orders in the window. Each customer counts once regardless of order frequency. |
| API endpoint | Admin GraphQL. Order.customer.id. Anonymous orders (no customer record) are excluded; that includes most POS guest checkouts. |
| Anonymous / guest checkout | EXCLUDED. An online or POS guest checkout without an email or account creates an order without Order.customer.id; it does not count here. To count distinct buyers including guests, use a checkout-fingerprint metric (currently on roadmap). |
| VAT / tax treatment | Not applicable (count of customers). |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | A customer whose order was fully refunded still counts here if they placed the order. |
| Cancelled / voided orders | Customers whose only order in the window was cancelled DO still count if Order.customer.id was set at creation. |
| Currency | Multi-currency safe (count of customers, not money). |
| Channels / sources | Not filtered. Online store, POS-with-account, B2B all contribute. POS-guest does not. |
| Customer merging | Shopify auto-merges customer records by email when an account is created retroactively. Re-runs of the index should reflect the merged customer; pre-merge data may show two customer rows for the same buyer. |
| Time window | 30D (single window) |
| Alert trigger | None on this card directly; significant drops are caught via Customer Trend. |
| Roles | owner, marketing |
Calculation
Worked example
A US multi-channel home goods brand on Shopify Plus. Period: 12 Apr 26 to 11 May 26.| Channel | Orders | Distinct customers (with id) | Guest orders |
|---|---|---|---|
| Online Store | 5,120 | 4,180 | 38 |
| Shop POS (4 retail outlets) | 1,240 | 612 | 614 |
| Buy Button (3rd-party site) | 89 | 71 | 14 |
| TikTok Shop | 391 | 340 | 0 |
| Total | 6,840 | 5,203 (sum, before dedup) | 666 |
| Unique customers (this card) | 4,712 (after cross-channel dedup) |
- Cross-channel dedup is real. 491 customers (5,203 - 4,712) bought across more than one channel, e.g. POS visit + online repeat, or Online + Buy Button. They count once. This is why summing per-channel customer counts overstates the unique base.
- POS guest checkouts are nearly half of POS orders. 614 of 1,240 POS orders had no customer record. The Shop POS app does not require account creation; staff often skip the email-capture step at busy moments. Those 614 transactions are invisible to retention marketing and to this card. To improve, train POS staff to ask for email at checkout (a 2-second prompt that adds 30 to 50% to addressable customer base).
- Online vs POS customer overlap. Of the 4,180 online customers and 612 POS customers, only ~210 are in both sets (~5%). The omnichannel narrative is often more aspirational than real; most stores see <10% overlap. Plan loyalty mechanics around bridging the gap (single account across channels, omni-CRM tools).
- TikTok Shop produces near-1:1 customer-to-order ratio. 391 orders, 340 customers. New shoppers, no repeat behaviour yet. Common for newly-launched marketplace channels. Don’t compare AOV or repeat-rate against your established channels until 6 to 9 months of data exists.
- Refunds and cancellations don’t reduce the count. A customer who placed and refunded one order still counts as 1 unique customer this period. To see only successful-purchase customers, use a fulfilled-only filter (manual today; on roadmap as a separate variant).
Sibling cards merchants should reference together
Customer count is rarely useful alone. Pair with these for context:| Card | Why pair it with Customer Count | What the combination tells you |
|---|---|---|
| New Customers | The new vs returning split. | Customer count = new + returning. The mix tells you whether growth is acquisition-driven or retention-driven. |
| Customer Trend | Month-over-month delta. | A flat customer count masks underlying churn + acquisition swap; trend exposes the dynamics. |
| Order Count | Customer count’s denominator counterpart. | Orders ÷ customers = orders-per-customer (frequency). Rising orders with flat customers = repeat behaviour growing. |
| Total Revenue | Revenue per customer. | Revenue ÷ customer count = revenue-per-customer this period. The lifetime-value proxy. |
| Repeat Rate | Subset of customers who returned. | Tells you the share of this card’s count who bought more than once. |
| Customer Segments | VIP / mid / low-tier breakdown. | A flat customer count can hide a shift in segment mix (more low-value, fewer VIPs). |
bigcommerce.customer_count | Same definition. | Documentation cross-link. |
adobe_commerce.customer_count | Same definition. | Documentation cross-link. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Analytics → Reports → “Customers over time” → set the date range to match this card. The unique-customer count for the period should match within reconciliation tolerances. Other Shopify Admin views that look similar but are not the same:- Analytics → Dashboards → Overview: shows total customer count (lifetime, not period). Different metric.
- Customers → All customers: shows the full lifetime customer base. Filter by Last order date in window to approximate this card.
- Reports → First-time vs returning: a split of this card’s number, useful for tracking New Customers.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Shopify uses store time zone; Vortex IQ uses store time zone for daily buckets but UTC for window edges. Border-day customers may differ by one. |
| Guest checkouts | Either | Both Shopify and Vortex IQ exclude guest orders from customer count. POS guest orders are excluded similarly. |
| Customer merging | Transient | Shopify may merge customer records by email retroactively. Pre-merge, we may show 2 customers; post-merge, 1. Re-runs of the index reconcile. |
| Test orders | Ours slightly higher | We do not yet filter Order.test = true. Test customers may inflate our count if test orders are frequent. |
| Sync lag | Ours lower for “today” | Webhooks fire within seconds; index lag 5 to 15 minutes. |
| Sales channel split | Either | Shopify’s report can be filtered by channel; this card aggregates across all channels. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_users | GA4 users >> Shopify customers (most users browse without buying) | A 5 to 30× ratio is normal. Conversion rate ties them. |
klaviyo.klaviyo_subscribers | Klaviyo subscribers > Shopify customers (includes non-purchasers) | Email signups without purchase appear in Klaviyo, not here. |
Known limitations / merchant FAQs
Why is my count flat while orders are rising? Repeat behaviour is growing. Each customer is buying more this period than last. Healthy if accompanied by stable Repeat Rate, risky if it means you are over-relying on a small core. Why is my count rising while orders are flat? Acquisition is up but each customer is buying less. Often a sign of new-customer surge from advertising or PR; the new cohort needs time to develop repeat behaviour. Why is my Shopify Admin number higher? Most often, time-zone or filter scope. Shopify Admin defaults to store time zone for the date range; Vortex IQ uses UTC for window edges. The Shopify report may also include channels that Vortex IQ filters out (or vice versa). For exact reconciliation, set the same date range and channel filter on both sides. Do guest checkouts count? No. A guest order withoutOrder.customer.id does not contribute to this card. Most POS orders fall in this bucket; train POS staff to capture email at checkout, or use a POS app that auto-creates customer records.
Multi-store, can I see total customers across stores?
Not yet within a single card. Each store is a separate integration. A cross-store rollup with email-based dedup is on the roadmap. Today, sum carefully and acknowledge cross-store overlap is invisible.
Multi-currency, any impact?
None on the count. Customer cardinality is currency-blind.
Shopify Plus vs basic?
No definitional difference. Plus stores typically run multiple stores under a Shopify Plus organization; each store has its own customer count. Markets (multi-region) settings within a single store do not affect this card.
Refresh cadence?
Webhooks fire within seconds; index lag 5 to 15 minutes. The 30-day rolling window updates each ingest cycle.
B2B vs DTC?
B2B customers (companies, locations within a company) count once each in this card. A B2B customer with 5 buyers across 2 locations counts as 1 customer (one parent record). For per-buyer-individual counts, use Shopify B2B’s separate Customer endpoint; that is on the roadmap as a B2B-specific card.
The card moved, what should I do?
- Cross-reference New Customers and Repeat Rate to attribute the move to acquisition or retention.
- If acquisition is up but customers flat, churn is hiding the growth. Pair with Churn Risk.
- If customers fell sharply, check whether ad spend changed; usually a paused channel explains it.
- If POS contributes a large share, audit POS staff email-capture habits; missed emails turn into invisible customers.