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

At a glance

The day-by-day count of orders created over the last 90 days. The simplest of the time-series cards, useful for spotting promotion peaks, weekly seasonality, post-holiday collapses, and incident-driven dips. Plotted as a line chart with a 7-day moving average overlay to smooth weekly noise.
What it countsFor each day in the 90-day window: COUNT(orders WHERE created_at IN day). Order counted regardless of state, including canceled, pending_payment, payment_review. The intent is “orders the customer placed”, not “orders we collected money on”.
API fieldentity_id, created_at from the orders index. Adobe Commerce REST: GET /rest/V1/orders with searchCriteria filtering on created_at.
State filterAll states included by default. Toggle filters on the chart legend to exclude canceled, pending_payment, etc. for cleaner views. The default-includes-canceled stance differs from value-side cards (which often exclude canceled to avoid double-counting refunds); for count, all-states is the right default.
VAT / tax / shipping / discounts / currencyn/a, this is a count card.
RefundsA refunded order still counts as an order placed. Refunds happen later; this card is about creation time.
Channels / sourcesAll Adobe Commerce sources counted: storefront, Admin-created, B2B portal, Marketplace if installed.
Multi-store scopeAll Store Views by default; per-Store-View slicing via legend filter.
Time window90D rolling. Daily granularity. 7-day moving average overlay.
Alert triggerNone on this card directly. The hourly canary is on Revenue Drop Alert.
Sentiment keyorder_count_trend
Rolesowner, marketing, operations

Calculation

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

Worked example

A B2B+DTC apparel merchant on Adobe Commerce 2.4.7. Snapshot 13 May 26, 90-day rolling. Aggregate stats over the window:
MetricValue
Days90
Total orders14,420
Mean orders / day160
Median orders / day153
Min day (Sun 7 Apr 26)67
Max day (Mon 14 Apr 26, post-Easter)297
Standard deviation38
Weekly seasonality (mean orders by day of week):
DayMean orders
Mon184
Tue175
Wed166
Thu161
Fri148
Sat142
Sun134
Monday-to-Sunday spread is about 38%. Typical for B2B+DTC. Notable events on the chart:
DateOrdersWhat happened
24 Feb 26247Flash sale 25% off; +54% vs Tue average
14 Mar 2689-39% vs Sat average; investigate (turned out: storefront 502 errors for 2 hours)
14 Apr 26297post-Easter Monday catch-up + post-holiday surge; +61% vs Mon mean
28 Apr 26 to 5 May 2678-95/daysustained dip; supplier sizing issue caused PR; recovery from 6 May
Insight pattern:
  1. The 14 Mar dip (-39%) is the canary. A single day, a Saturday so volume is naturally lower. But the absolute drop was sharp enough to suggest an incident. The merchant cross-checked Revenue Drop Alert for that day; it had fired at 11:00 GMT (storefront 502 burst). Confirmation that the alert worked.
  2. The 14 Apr spike (+61%) is benign. Post-holiday catch-up; B2B accounts that didn’t order during Easter weekend post fresh POs Monday morning. Cross-link with Revenue Over Time, revenue should also spike but the AOV may dip (high order count, normal AOV per order).
  3. The 28 Apr to 5 May sustained dip. This is the most concerning pattern. Eight straight days below the 7-day moving average, with the average itself trending down. Cause: a viral negative review on a B2B forum about the uniform sizing issue. Mitigation: the merchant’s PR team posted corrections and offered replacements; volume recovered by 6 May.
  4. Weekly seasonality is the dominant noise. B2B-leaning merchants always show Mon > Tue > … > Sun pattern. Compare this card’s daily values to the same DOW two weeks prior, not yesterday, for clean signal.
  5. Cross-link with Customer Trend. If order count is up but customer count is flat, repeat-customer concentration is rising, healthy retention. If order count is up because customer count is up, acquisition is winning.
  6. canceled orders included. The 134 cancelled orders in the period contribute to the count. Toggle the legend to exclude for “captured-only” view; it’s about 1% lower on most days.

Sibling cards merchants should reference together

CardWhy pair it with Orders Over Time
Total OrdersAggregate of this card.
Revenue Over TimeValue-side companion. Diverging shapes diagnose AOV swings.
Daily Order TrendsIntraday view.
Cancelled Over TimeCancellations subtracted; for understanding the captured-orders shape.
Refunds Over TimeSame chart shape pattern; useful for incident-correlation.
Customer TrendCustomer count over time; pair to disentangle volume from acquisition.
Revenue Drop AlertReal-time canary; this card is the historical context.
shopify.orders_over_timeShopify peer.
bigcommerce.orders_over_timeBigCommerce peer.

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin:
Reports > Sales > Orders with “Show By” set to “Day”, date range matching this card. The chart shows daily order count alongside daily revenue. The count column should match this card.
For the live grid:
Sales > Orders filtered by Purchase Date range; the bottom-of-grid total row count gives the period’s count.
Why our number may legitimately differ from Adobe Commerce Admin:
ReasonDirection of divergence
Time-zone. Reports use Store View locale; this card uses UTC by default. Day-edge orders shift.Bucket-shift
Reports indexer lag. Reports > Sales > Orders relies on the sales_order_aggregated_* tables refreshed nightly. Today’s orders may not show until tomorrow.Vortex IQ ahead by ~12-24h on most-recent day
Status filter on Reports. Reports > Sales > Orders defaults to “Status = Any”. Match unless the merchant overrode the filter.Usually no divergence
pending_payment and canceled inclusion. Reports includes them by default; so does this card.None expected
Multi-store scope. Both default to “All Store Views”.None
Sync lag. 5-15 min.Standard
Cross-connector reconciliation (when these connectors are connected for this merchant):
CardExpected relationshipWhat divergence tells you
google_analytics.ga_transactions_over_timeGA4 daily transactions ≈ this card × (1 − tracking gap, typically 10-25%)Persistent <70% means GA4 tracking is broken or consent is blocking events. >100% almost always means double-firing tags.
stripe.stripe_charge_count_over_timeStripe daily successful charges ≤ this card’s order countGap = orders paid via PayPal, Authorize.Net, manual transfer + orders in pending_payment/canceled that never hit Stripe.

Known limitations / merchant FAQs

Why does the card include canceled and pending_payment orders? Because the question this card answers is “how many orders did customers place?” An order created and then cancelled is still demand the merchant captured. For “how many orders did we collect money on”, filter the chart legend to exclude canceled and pending_payment; for “what’s our acquisition velocity”, keep them. Why does Saturday always look low? Because B2B accounts don’t order on weekends. DTC orders on weekends but at lower volume than weekdays. Compound the two and Saturday is the structural low. Use the day-of-week comparison rather than yesterday-vs-today for cleaner signal. My 7-day moving average is smoothing too much, can I disable? Yes. The chart toggle “Show MA” can be turned off. Daily-only view exposes incidents more clearly but is noisier. Why is today’s last data point lower than yesterday’s? Because today is incomplete. The trailing data point is “orders so far today” which is structurally less than a full day’s count. The chart should annotate this with “(in progress)”; if not, mentally exclude the trailing point. A spike on a weekend, real or admin-created? Adobe Commerce admins occasionally create bulk orders manually (e.g. importing wholesale POs from email). These show up as Admin-created orders with created_at = now() even though the actual customer order date might be 3 days prior. Cross-check with the Admin user attribution; if a single admin user created 50 orders on Sat 2pm, it’s a backlog import, not real demand. Filter admin_created orders out for true demand signal. Multi-store, can I see one Store View at a time? Yes. Filter via the chart legend. Useful for comparing US store seasonality vs UK store seasonality (very different). Why doesn’t Google Analytics agree? GA4 typically misses 10-30% of orders due to ad blockers, consent banners, tag-fire failures, browser tracking prevention. Adobe Commerce is the system of record (it has the order); GA4 is a sampled view. Don’t try to reconcile them; use Adobe for absolute count and GA4 for marketing attribution. A B2B Company places one PO that creates 3 child orders, do I see 3 spikes? Adobe Commerce B2B “Quotes” can convert to multiple orders if the customer splits delivery. Each child order is a separate row in the orders index, so the count is 3. If you want to see the parent quote count, use a separate quote-volume card (custom). Can I overlay events (campaign launch, system upgrade, supplier change)? Yes via the Vortex IQ workspace’s annotations. Marked events show on every time-series card to help correlation across Orders Over Time, Revenue Over Time, Refunds Over Time, etc. Today’s number jumped from 145 to 167 in 30 minutes. Can that happen? Yes if you had a 30-minute promotion or email send. It is unusual on a quiet Wednesday afternoon. Cross-check against the marketing campaign calendar and against Stripe charge count. If Stripe didn’t see 22 new charges in that window, somebody is creating Admin orders in bulk.

Tracked live in Vortex IQ Nerve Centre

Orders Over Time is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce 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.