At a glance
Daily / weekly timeseries of distinct customers placing orders. The trend version of Customer Count: the shape of acquisition + retention behaviour over time.
| What it counts | DATE_HISTOGRAM(week, CARDINALITY(customer.id)) over the 90-day window. Each week shows the distinct customer count for that week. A customer who ordered in three different weeks contributes to three weekly buckets. |
| API endpoint | Admin GraphQL. Order.customer.id, bucketed by Order.createdAt week. |
| VAT / tax treatment | Not applicable (count metric). |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | Refunded-order customers still count. |
| Cancelled / voided orders | Cancelled-order customers count if customer was attached. |
| Currency | Multi-currency safe. |
| Channels / sources | Online + POS-with-account + B2B contribute. POS-guest excluded. |
| Aggregation note | Weekly customers sum to MORE than monthly customers (a customer who orders in 4 weeks counts 4 times in the weekly view but once in the monthly view). Use this card for shape, not summed totals. |
| Time window | 90D (typically weekly buckets) |
| Alert trigger | None on this card directly; significant drops surface via the Customer Count period comparison. |
| Roles | owner, marketing |
Calculation
Worked example
A UK DTC apparel brand on Shopify. Period: 12 Feb 26 to 12 May 26. Weekly distinct-customer counts:| Week starting | Distinct customers | New customers (subset) | Returning (subset) | Notes |
|---|---|---|---|---|
| 12 Feb 26 | 478 | 281 | 197 | Steady |
| 19 Feb 26 | 502 | 298 | 204 | |
| 26 Feb 26 | 511 | 305 | 206 | |
| 04 Mar 26 | 1,142 | 854 | 288 | Spring drop launch, paid push |
| 11 Mar 26 | 928 | 619 | 309 | Lift continues |
| 18 Mar 26 | 612 | 312 | 300 | Tapering |
| 25 Mar 26 | 521 | 214 | 307 | Returning steady, new normalising |
| 01 Apr 26 | 488 | 198 | 290 | |
| 08 Apr 26 | 461 | 187 | 274 | |
| 15 Apr 26 | 471 | 191 | 280 | Easter push |
| 22 Apr 26 | 502 | 211 | 291 | |
| 29 Apr 26 | 488 | 188 | 300 | |
| 06 May 26 | 491 | 189 | 302 |
- The 04 Mar spike is the spring drop wave. Distinct weekly customers more than doubled, driven by ad-spend lift. The wave decayed across 3 weeks (1,142 → 928 → 612), a typical drop-launch shape. Returning-customer count remained elevated for longer than new-customer count (304 vs 854 → 191), evidence the returning cohort responded later to the email campaign than new acquisition responded to ads.
- The acquisition wave didn’t lift the returning baseline. Pre-drop returning was 197 to 206 / week; post-drop 274 to 302 / week. That is a 35% lift in returning customers maintained for 8 weeks. Some of those new acquisitions converted into early-repeat buyers; the rest of the lift is the existing base coming back for the new collection. Pair with New Customers to confirm the cohort split.
- Returning-customer steadiness is the retention health signal. A flat 290 to 305 returning customers / week post-spike means the retention engine is steady. A step-down to 200 returning would be a churn alarm even with new-customer surge masking the headline.
- Easter (15 Apr) shows a small bump. Acquisition campaigns produce visible week-level signatures here; you can audit campaign effectiveness against this card directly. A campaign that produces no visible lift in the weekly distinct count almost certainly did not work.
- POS-guest checkout invisible. The brand’s pop-up retail event on 21 Mar at a London market generated 80+ in-person sales but most without email capture; weekly distinct-customer count does not reflect them. POS-guest is a known gap for omnichannel brands.
Sibling cards merchants should reference together
Customer trend is the timeseries view of Customer Count. Pair with these for context:| Card | Why pair it with Customer Trend | What the combination tells you |
|---|---|---|
| Customer Count | The 30D summary view. | Trend reveals the shape; count gives the headline. |
| New Customers | Acquisition subset over time. | New-vs-returning split by week shows the engine driving the headline. |
| Repeat Rate | Retention proportion. | A rising customer trend without rising repeat rate = pure acquisition; sustainable only with the funnel funded. |
| Orders Over Time | Order timeseries counterpart. | Orders per customer per week = frequency. |
| Revenue Over Time | Revenue timeseries. | Revenue ÷ customer trend = revenue per customer per week. |
| Churn Risk | Lapsed cohort. | A flat customer trend masking rising churn is a leaking-bucket alarm. |
google_ads.google_spend_over_time | Acquisition channel input. | Compare ad-spend timeseries to customer trend; the lag and lift reveal CAC efficiency. |
google_analytics.ga_users_over_time | Top-of-funnel counterpart. | GA4 users vs Shopify customer trend = funnel conversion shape. |
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 and the resolution to weekly. Shopify’s report should align week-to-week with this card. Other Shopify Admin views:- Reports → First-time vs returning over time: shows new vs returning segments of the same trend; companion view.
- Reports → Sales by month: revenue companion; pair to derive revenue-per-customer trend.
- Apps like Polar Analytics, Triple Whale: build richer customer-trend cohort views (acquisition cohorts, retention curves). Useful complements.
| 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. |
| Bucket alignment | Either | ”Week” can start Mon (ISO) or Sun (US). Shopify defaults to Sun-start; Vortex IQ to Mon-start (configurable). Verify when comparing. |
| Test orders | Ours slightly higher | The card does not yet filter Order.test = true. |
| Customer merging | Transient | Pre-merge data may show duplicates; reconciles after merging. |
| Channel filter | Either | Shopify can be filtered by sales channel; this card aggregates. |
| Sync lag | Ours lower for “today” | 5 to 15 minute lag. The latest week’s bar will rise during the day. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_users_over_time | GA4 users >> Shopify customers | Conversion rate ties them. |
klaviyo.klaviyo_subscribers_over_time | Email signup vs purchase trend | Often diverge; email signups are top-of-funnel, customer trend is bottom-of-funnel. |
Known limitations / merchant FAQs
Why does the trend not sum to the 30D customer count? Because the same customer can order in multiple weeks. A customer who orders in 4 weeks counts 4 times in the weekly view but once in the 30D distinct view. Use this card for shape (week-over-week), not for summed totals. Why is the latest week’s bar lower? Sync lag plus partial-week. The current week is in progress; bars are partial until end of week. Yesterday and earlier weeks are caught up. My weekly trend has a strong day-of-week pattern, why? Weekly bucketing usually smooths day-of-week effects, but if a brand’s promotion calendar lands on specific days (e.g. always-Friday drops), week-on-week distinct customers will reflect campaign timing more than baseline behaviour. Multi-store, can I see the combined customer trend? No, each store is a separate integration. Multi-store rollups are on roadmap. Multi-currency, any impact? None on the count; weekly customer trend is currency-blind. Shopify Plus vs basic? No definitional difference. Plus stores typically have larger absolute numbers; the trend shape is qualitatively similar. Refresh cadence? Webhooks fire within seconds; index lag 5 to 15 minutes. Weekly buckets recompute on each ingest. B2B vs DTC, any difference? B2B customer counts are smaller and more event-driven; the trend can show large weekly swings tied to specific account activity. DTC trends are smoother. Mixed B2B + DTC stores benefit from filtering by tag (manual today; on roadmap). The trend dropped sharply last week, what should I do?- Cross-reference Orders Over Time. Did orders drop too? If yes, real volume issue; if no, customers might be ordering more per visit.
- Cross-reference Revenue Over Time. A flat customer count + flat revenue suggests this is real, not artefact.
- Check ad spend channels: a paused or under-performing ad campaign is the most common cause of a single-week customer drop.
- Check site performance: a site outage or checkout error in the affected week often correlates.
- Check email programme: a missed weekly campaign can show up as a returning-customer dip.