Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

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 countsCARDINALITY(customer.id.keyword) over orders in the window. Each customer counts once regardless of order frequency.
API endpointAdmin GraphQL. Order.customer.id. Anonymous orders (no customer record) are excluded; that includes most POS guest checkouts.
Anonymous / guest checkoutEXCLUDED. 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 treatmentNot applicable (count of customers).
ShippingNot applicable.
DiscountsNot applicable.
RefundsA customer whose order was fully refunded still counts here if they placed the order.
Cancelled / voided ordersCustomers whose only order in the window was cancelled DO still count if Order.customer.id was set at creation.
CurrencyMulti-currency safe (count of customers, not money).
Channels / sourcesNot filtered. Online store, POS-with-account, B2B all contribute. POS-guest does not.
Customer mergingShopify 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 window30D (single window)
Alert triggerNone on this card directly; significant drops are caught via Customer Trend.
Rolesowner, marketing

Calculation

CARDINALITY(customer.id.keyword)
  WHERE date BETWEEN [period_start, period_end]

Worked example

A US multi-channel home goods brand on Shopify Plus. Period: 12 Apr 26 to 11 May 26.
ChannelOrdersDistinct customers (with id)Guest orders
Online Store5,1204,18038
Shop POS (4 retail outlets)1,240612614
Buy Button (3rd-party site)897114
TikTok Shop3913400
Total6,8405,203 (sum, before dedup)666
Unique customers (this card)4,712 (after cross-channel dedup)
Customer Count  =  CARDINALITY(customer.id)  =  4,712
Five things to notice:
  1. 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.
  2. 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).
  3. 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).
  4. 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.
  5. 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:
CardWhy pair it with Customer CountWhat the combination tells you
New CustomersThe new vs returning split.Customer count = new + returning. The mix tells you whether growth is acquisition-driven or retention-driven.
Customer TrendMonth-over-month delta.A flat customer count masks underlying churn + acquisition swap; trend exposes the dynamics.
Order CountCustomer count’s denominator counterpart.Orders ÷ customers = orders-per-customer (frequency). Rising orders with flat customers = repeat behaviour growing.
Total RevenueRevenue per customer.Revenue ÷ customer count = revenue-per-customer this period. The lifetime-value proxy.
Repeat RateSubset of customers who returned.Tells you the share of this card’s count who bought more than once.
Customer SegmentsVIP / mid / low-tier breakdown.A flat customer count can hide a shift in segment mix (more low-value, fewer VIPs).
bigcommerce.customer_countSame definition.Documentation cross-link.
adobe_commerce.customer_countSame 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.
Why our number may legitimately differ from Shopify Admin:
ReasonDirectionWhy
Time zoneBoundary daysShopify 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 checkoutsEitherBoth Shopify and Vortex IQ exclude guest orders from customer count. POS guest orders are excluded similarly.
Customer mergingTransientShopify may merge customer records by email retroactively. Pre-merge, we may show 2 customers; post-merge, 1. Re-runs of the index reconcile.
Test ordersOurs slightly higherWe do not yet filter Order.test = true. Test customers may inflate our count if test orders are frequent.
Sync lagOurs lower for “today”Webhooks fire within seconds; index lag 5 to 15 minutes.
Sales channel splitEitherShopify’s report can be filtered by channel; this card aggregates across all channels.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
google_analytics.ga_usersGA4 users >> Shopify customers (most users browse without buying)A 5 to 30× ratio is normal. Conversion rate ties them.
klaviyo.klaviyo_subscribersKlaviyo 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 without Order.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?
  1. Cross-reference New Customers and Repeat Rate to attribute the move to acquisition or retention.
  2. If acquisition is up but customers flat, churn is hiding the growth. Pair with Churn Risk.
  3. If customers fell sharply, check whether ad spend changed; usually a paused channel explains it.
  4. If POS contributes a large share, audit POS staff email-capture habits; missed emails turn into invisible customers.

Tracked live in Vortex IQ Nerve Centre

Unique Customers is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.