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 counts | For 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 field | entity_id, created_at from the orders index. Adobe Commerce REST: GET /rest/V1/orders with searchCriteria filtering on created_at. |
| State filter | All 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 / currency | n/a, this is a count card. |
| Refunds | A refunded order still counts as an order placed. Refunds happen later; this card is about creation time. |
| Channels / sources | All Adobe Commerce sources counted: storefront, Admin-created, B2B portal, Marketplace if installed. |
| Multi-store scope | All Store Views by default; per-Store-View slicing via legend filter. |
| Time window | 90D rolling. Daily granularity. 7-day moving average overlay. |
| Alert trigger | None on this card directly. The hourly canary is on Revenue Drop Alert. |
| Sentiment key | order_count_trend |
| Roles | owner, marketing, operations |
Calculation
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:| Metric | Value |
|---|---|
| Days | 90 |
| Total orders | 14,420 |
| Mean orders / day | 160 |
| Median orders / day | 153 |
| Min day (Sun 7 Apr 26) | 67 |
| Max day (Mon 14 Apr 26, post-Easter) | 297 |
| Standard deviation | 38 |
| Day | Mean orders |
|---|---|
| Mon | 184 |
| Tue | 175 |
| Wed | 166 |
| Thu | 161 |
| Fri | 148 |
| Sat | 142 |
| Sun | 134 |
| Date | Orders | What happened |
|---|---|---|
| 24 Feb 26 | 247 | Flash sale 25% off; +54% vs Tue average |
| 14 Mar 26 | 89 | -39% vs Sat average; investigate (turned out: storefront 502 errors for 2 hours) |
| 14 Apr 26 | 297 | post-Easter Monday catch-up + post-holiday surge; +61% vs Mon mean |
| 28 Apr 26 to 5 May 26 | 78-95/day | sustained dip; supplier sizing issue caused PR; recovery from 6 May |
- 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.
- 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).
- 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.
- 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.
- 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.
canceledorders 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
| Card | Why pair it with Orders Over Time |
|---|---|
| Total Orders | Aggregate of this card. |
| Revenue Over Time | Value-side companion. Diverging shapes diagnose AOV swings. |
| Daily Order Trends | Intraday view. |
| Cancelled Over Time | Cancellations subtracted; for understanding the captured-orders shape. |
| Refunds Over Time | Same chart shape pattern; useful for incident-correlation. |
| Customer Trend | Customer count over time; pair to disentangle volume from acquisition. |
| Revenue Drop Alert | Real-time canary; this card is the historical context. |
shopify.orders_over_time | Shopify peer. |
bigcommerce.orders_over_time | BigCommerce 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:
| Reason | Direction 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 |
| Card | Expected relationship | What divergence tells you |
|---|---|---|
google_analytics.ga_transactions_over_time | GA4 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_time | Stripe daily successful charges ≤ this card’s order count | Gap = 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 includecanceled 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.