At a glance
Daily order count over the last 90 days, plotted as an area chart. The time-series companion to Total Orders, which collapses the same data to a single number. The shape of the curve is the value here, not the headline.
| What it counts | DATE_HISTOGRAM(createdAt, interval=1d) → COUNT(_id). Each Order.id contributes one to its createdAt calendar day (in UTC). Bars are inclusive on the left edge, exclusive on the right. |
| API endpoint | Admin GraphQL. Order.id + Order.createdAt, aggregated by the engine. |
| VAT / tax treatment | Not applicable (count metric). |
| Shipping | Not applicable. |
| Discounts | Not applicable. The card answers “when did orders happen”, not “how much was spent”. |
| Refunds | NOT deducted from the bar of the original order day. A refund posted on day +14 does not retroactively reduce the day-0 bar. The series is the placement timeline, not the kept timeline. |
| Cancelled / voided orders | Included. Same convention as Total Orders: cancelled orders represent demand that came in. |
| Currency | Multi-currency safe (count, not money). |
| Channels / sources | Not filtered. Online + POS + Buy Button + marketplaces all roll up into the same daily bar. The shape of POS Saturdays vs Online-Store Mondays is invisible at this level; use Shopify Admin’s Sales by channel if the channel-split shape matters. |
| Bucket interval | Fixed at 1 day. A 90-day window produces 90 bars. The chart auto-fills zero-order days as zero (not as missing); a true gap in data appears as a flat-zero strip rather than a break in the line. |
| Time window | 90D (default). The 90-day window is long enough to expose seasonality (week-over-week + monthly cycles) without flattening recent noise. |
| Alert trigger | None on the time series itself. The companion sentiment order_count_trend watches the 30D vsP rolling change on the headline number. |
| Roles | owner, marketing, operations |
Calculation
Worked example
A US multi-channel home-goods brand on Shopify Plus. Window: 12 Feb 26 to 12 May 26 (90 days). The smoothed daily curve produces these reference points:| Date / window | Daily order count | Notes |
|---|---|---|
| Mon 16 Feb 26 | 412 | Presidents Day promo, +28% vs prior Monday |
| Tue 17 Feb 26 | 198 | Post-promo dip |
| Sat 14 Mar 26 | 305 | Weekend baseline |
| Mon 30 Mar 26 | 96 | Cloudflare incident 09:00 to 11:00 ET, checkout briefly down |
| Tue 31 Mar 26 | 412 | Recovery + delayed-conversion catch-up |
| Wed 22 Apr 26 to Sun 26 Apr 26 | avg 285 | ”Spring Sale” event, sustained 5-day lift |
| Mon 11 May 26 | 224 | Mother’s Day post-peak comedown (US Mother’s Day was Sun 10 May) |
- The 30 Mar dip is a system event, not a demand event. A Cloudflare CDN incident knocked checkout offline for 2 hours; orders compressed into the surrounding hours and the next-day bar shows the recovery spike. Pair with
datadog.dd_incident_countto confirm the cause. The card alone cannot distinguish “demand collapsed” from “infrastructure broke”, the time series only tells you orders weren’t placed; the cause lives elsewhere. - Mondays run hot, Tuesdays run cold. The 16 Feb / 17 Feb pattern repeats almost every week (Mondays are highest order day for this category, by 25 to 35%). Always compare like-for-like (Mon-vs-Mon, Sat-vs-Sat) when reading the chart, never raw day-over-day.
- The Spring Sale event is visible as a 5-day plateau, not a single spike. The campaign drove sustained lift from 22 Apr to 26 Apr, with the largest day on Wed (the email-send day). Pair with Total Revenue Over Time to check whether the lift was AOV-driven or volume-driven.
- The Mother’s Day comedown is structural, not a problem. US gift-driven categories see a 15 to 25% dip the week after a major holiday as forward-pulled demand settles. The 11 May figure of 224 looks low next to the prior week’s average of 280, but it’s a known cycle. The 30D vsP comparison would falsely flag it; the 90D series shows it for what it is.
- The smoothed-baseline shift is the interesting signal. Comparing the first 30 days of the window (avg 245 orders/day) to the last 30 (avg 282 orders/day), the underlying baseline rose 15%. That trend, not any single bar, is what the series is most useful for.
Sibling cards merchants should reference together
The time series is a diagnostic tool. Pair it with the cards that explain why the shape moved:| Card | Why pair it with Orders Over Time |
|---|---|
| Total Orders | The single-number summary. The chart is the breakdown of this card. Read them together: the chart shows when, the number shows how much. |
| Total Revenue Over Time | Revenue twin. If orders rose but revenue rose more, AOV climbed; if orders rose but revenue stayed flat, AOV dropped. The two charts diff to AOV. |
| AOV | The per-order value. A flat order chart with falling AOV usually means a discount cycle is biting. |
| Orders by Channel | The channel decomposition. Tells you whether a daily spike came from Online Store, POS, or marketplaces. |
| Refunds Over Time | The companion negative series. A demand spike followed 14 to 21 days later by a refund spike is a quality-failure signature. |
| Conversion Rate | Sessions ÷ orders. A drop in this chart with stable conversion rate means traffic fell; a drop with stable traffic means conversion fell. The split is diagnostic. |
datadog.dd_incident_count | Infrastructure incidents. Sharp single-day dips often map to a Datadog incident on the same day. |
google_analytics.ga_purchases_trend | The GA4-side time series. Shapes should track within 5 to 15% (ad-blocker / consent gap). Persistent divergence indicates tracking drift. |
bigcommerce.orders_over_time | Same definition. Documentation cross-link. |
adobe_commerce.orders_over_time | Same definition. Documentation cross-link. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin:Analytics → Reports → “Orders over time”This is the definitional twin of this card. Set the date range to match and the daily bars should align bar-for-bar within sync-lag tolerance. Other Shopify Admin views that look similar but read different shapes:
- Analytics → Dashboards → Overview: shows a sparkline for the last 30 days only. Useful for the at-a-glance read; not the same axis density as the 90-day card.
- Reports → Sessions over time: traffic, not orders. The two charts together compose conversion rate.
- Reports → Sales over time: revenue, not orders. Differs in shape on heavy-discount days when AOV moves.
- Home → “Live View”: real-time per-minute order counter; useful for sale launches, not for trend comparison.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Shopify Admin uses store time zone for the daily-bucket boundary; Vortex IQ buckets in UTC. Orders placed near midnight on the boundary days fall on different sides of the line. The headline 90-day total reconciles; individual day bars can shift by a few orders. |
| Test orders | Ours slightly higher | Order.test = true is not yet filtered. |
| Cancelled orders | Both include | Both include cancelled orders by default. Shopify Admin can apply a fulfillment-status filter to exclude; this card cannot yet. |
| Channel filter | Either | Shopify can filter the report to a single channel; this card aggregates all channels. To match, run the Shopify report with “All channels” selected. |
| Sync lag | Ours lower for “today” | Webhook-driven, 5 to 15 minute index lag. Yesterday’s bar is fully caught up; today’s is not. |
| Sampling on large windows | None on Shopify side, but watch GA4 | Shopify Admin reports are unsampled. GA4 cross-comparisons are subject to sampling above ~10M sessions per query. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_purchases_trend | GA4 daily purchases ≈ Shopify daily orders × (1 - tracking gap) | Ad blockers, cookie consent, tag-fire failures cause GA4 to undercount by 5 to 25%. The shape should track; the level will lag. |
stripe.stripe_charges_count | Stripe charges per day ≈ Shopify orders per day on the Stripe-paid subset | Differs because: (1) some orders pay via PayPal / Klarna / external gateways and don’t appear in Stripe; (2) failed-then-retried charges can produce multiple Stripe events per Shopify order. |
Known limitations / merchant FAQs
How do I read seasonality on this chart? Compare same-weekday over multiple weeks rather than day-over-day. A 90-day window contains ~13 of each weekday; the average of, say, the last 13 Mondays gives you a clean weekday baseline. Holiday weeks distort the average; either exclude known holiday weeks or extend the window to 180 days for a smoother base. Do not use 30-day windows for seasonality work, you only get 4 of each weekday and one of them is almost certainly an outlier. Why does my chart have flat-zero days? Three causes, in order of likelihood:- You actually had no orders. Small DTC stores in slow weeks legitimately have zero-order days. Common for B2B-only merchants where orders cluster in business-hours pockets.
- A checkout outage. A Shopify-side incident, a payment-gateway outage, or a custom checkout app failure all show as a zero day surrounded by normal volume. Cross-reference
datadog.dd_incident_countand the Shopify Status page for the day in question. - A timezone artefact at the chart edge. The first and last bars on the chart can read low if your local day starts mid-UTC-day. The 1st-of-month bar showing 30% of normal is usually this, not a real demand drop.
Order.id with a fresh createdAt timestamp matching the billing date. So a customer who subscribed in January generates a fresh order on the 15th of every subsequent month, plotted on each of those days. This means subscription-heavy stores see a recognisable monthly billing-cycle bump.
Shopify Plus vs basic plan, behavioural differences?
None for this card. The underlying Order object is identical across plans; the date histogram works on every Shopify tier. Plus stores with multiple stores in a Shopify Plus organisation see one chart per store; Combined Customer Records does not affect order plotting.
B2B vs DTC, do they distort the daily shape?
Yes, on stores where B2B is material. B2B order timing is structurally different (Mon-Fri business hours, weekly cycle, monthly close) versus DTC (evening peaks, weekend skew). A blended store shows a hybrid shape; segmenting reveals the two distinct patterns. If you can’t filter, watch for B2B-style ordering windows (10am to 4pm spike, near-zero weekends) as a tell.
Action playbook when the chart shows an unexpected drop:
- Identify the day. Was it a known holiday in any major customer region?
- Check
datadog.dd_incident_countand Shopify Status for that day. If anything was down, that’s the cause. - Cross-reference paid-channel spend (Meta, Google) for the prior 3 to 5 days. Spend cuts show in orders 3 to 7 days later for most stores.
- Pull Sessions Over Time. If sessions held but orders fell, it’s a conversion problem, not a traffic problem; bias toward checkout / cart investigation.
- If nothing explains the drop, look for a discount-cycle change. A coupon that expired the night before will visibly cut next-day orders even if traffic and infra are healthy.