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

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 countsDATE_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 endpointAdmin GraphQL. Order.id + Order.createdAt, aggregated by the engine.
VAT / tax treatmentNot applicable (count metric).
ShippingNot applicable.
DiscountsNot applicable. The card answers “when did orders happen”, not “how much was spent”.
RefundsNOT 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 ordersIncluded. Same convention as Total Orders: cancelled orders represent demand that came in.
CurrencyMulti-currency safe (count, not money).
Channels / sourcesNot 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 intervalFixed 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 window90D (default). The 90-day window is long enough to expose seasonality (week-over-week + monthly cycles) without flattening recent noise.
Alert triggerNone on the time series itself. The companion sentiment order_count_trend watches the 30D vsP rolling change on the headline number.
Rolesowner, marketing, operations

Calculation

DATE_HISTOGRAM COUNT(_id)
  WHERE date BETWEEN [period_start, period_end]

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 / windowDaily order countNotes
Mon 16 Feb 26412Presidents Day promo, +28% vs prior Monday
Tue 17 Feb 26198Post-promo dip
Sat 14 Mar 26305Weekend baseline
Mon 30 Mar 2696Cloudflare incident 09:00 to 11:00 ET, checkout briefly down
Tue 31 Mar 26412Recovery + delayed-conversion catch-up
Wed 22 Apr 26 to Sun 26 Apr 26avg 285”Spring Sale” event, sustained 5-day lift
Mon 11 May 26224Mother’s Day post-peak comedown (US Mother’s Day was Sun 10 May)
Five things to notice:
  1. 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_count to 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:
CardWhy pair it with Orders Over Time
Total OrdersThe 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 TimeRevenue 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.
AOVThe per-order value. A flat order chart with falling AOV usually means a discount cycle is biting.
Orders by ChannelThe channel decomposition. Tells you whether a daily spike came from Online Store, POS, or marketplaces.
Refunds Over TimeThe companion negative series. A demand spike followed 14 to 21 days later by a refund spike is a quality-failure signature.
Conversion RateSessions ÷ 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_countInfrastructure incidents. Sharp single-day dips often map to a Datadog incident on the same day.
google_analytics.ga_purchases_trendThe GA4-side time series. Shapes should track within 5 to 15% (ad-blocker / consent gap). Persistent divergence indicates tracking drift.
bigcommerce.orders_over_timeSame definition. Documentation cross-link.
adobe_commerce.orders_over_timeSame 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.
Why our number may legitimately differ from Shopify Admin:
ReasonDirectionWhy
Time zoneBoundary daysShopify 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 ordersOurs slightly higherOrder.test = true is not yet filtered.
Cancelled ordersBoth includeBoth include cancelled orders by default. Shopify Admin can apply a fulfillment-status filter to exclude; this card cannot yet.
Channel filterEitherShopify can filter the report to a single channel; this card aggregates all channels. To match, run the Shopify report with “All channels” selected.
Sync lagOurs 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 windowsNone on Shopify side, but watch GA4Shopify Admin reports are unsampled. GA4 cross-comparisons are subject to sampling above ~10M sessions per query.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
google_analytics.ga_purchases_trendGA4 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_countStripe charges per day ≈ Shopify orders per day on the Stripe-paid subsetDiffers 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:
  1. 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.
  2. 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_count and the Shopify Status page for the day in question.
  3. 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.
How do I do comparable-period (year-over-year) analysis? The card itself shows 90 days only. For year-over-year, ask Ask Viq directly (“show me orders this April vs last April”), or pull both windows in Total Orders using the period picker. The 90-day chart is for trend within the period, not across years. Should I trust the day before yesterday? Yes, fully. Sync lag is 5 to 15 minutes. Anything older than 1 hour is in steady state. The bar for “today” is the only one still moving, and it visibly fills in throughout the day as orders post. Why is the last bar always shorter? Because the day isn’t over. If it’s 3pm in your timezone and you’re looking at “today”, you’re seeing roughly 9 hours of a 24-hour day. The bar will keep growing until midnight. Some merchants find this confusing on the chart; you can hide the partial day in the chart legend toggle. Multi-currency stores, how does this chart handle currency? It doesn’t have to. The chart is order count, not revenue. Multi-currency arithmetic doesn’t apply. The companion Total Revenue Over Time chart has the multi-currency caveat; this one is currency-agnostic. Subscription billings, do they show on the day they bill or the day they were originally signed up? The day they bill. Each Shopify Subscriptions billing creates a new 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:
  1. Identify the day. Was it a known holiday in any major customer region?
  2. Check datadog.dd_incident_count and Shopify Status for that day. If anything was down, that’s the cause.
  3. 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.
  4. Pull Sessions Over Time. If sessions held but orders fell, it’s a conversion problem, not a traffic problem; bias toward checkout / cart investigation.
  5. 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.

Tracked live in Vortex IQ Nerve Centre

Orders Over Time 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.