At a glance
Daily (or weekly) SUM(totalPrice) plotted as a time series across the 90-day window. The headline trend chart for revenue health, the first thing most owners check on a Monday morning.
| What it counts | SUM(totalPrice) GROUP BY date(createdAt) over the window. Each point is one day of gross customer-paid revenue. |
| VAT / tax treatment | Whatever totalPrice includes. UK / EU stores see VAT-inclusive points; US stores see tax-exclusive. |
| Shipping | Included (sits inside totalPrice). |
| Discounts | Deducted (post-discount). |
| Refunds | NOT deducted. The original day is what counts; refund timing doesn’t move revenue between days. For the post-refund view, overlay Refund Value as a second series. |
| Cancelled / voided orders | Included if Shopify indexed them. |
| Currency | Multi-currency arithmetic without FX. Stores transacting in mixed currencies see jagged daily points; filter to one currency for a usable trend. |
| Channels / sources | All channels blended. POS sales create weekend / event spikes; B2B sales create occasional five-figure single-day jumps; subscriptions create steady billing-day lifts. |
| Time window | 90D (default 90D rolling) |
| Alert trigger | None on the chart itself; revenue_trend sentiment key drives the headline-trend alert via the parent revenue card. |
| Roles | owner, marketing |
Calculation
Worked example
A US wellness DTC brand on Shopify Plus, mostly DTC online, light Amazon presence. Window 12 Feb 26 to 12 May 26 (90 days, 91 daily points). Smoothed weekly view of the daily series:| Week of | Revenue | Note |
|---|---|---|
| 16 Feb 26 | $182,400 | Baseline |
| 23 Feb 26 | $174,600 | Mild dip, Presidents’ Day softness |
| 02 Mar 26 | $189,200 | Recovery |
| 09 Mar 26 | $215,800 | Spring drop launched 11 Mar |
| 16 Mar 26 | $241,300 | Drop momentum continued |
| 23 Mar 26 | $198,400 | Pull-back to organic baseline |
| 30 Mar 26 | $192,100 | Steady |
| 06 Apr 26 | $186,400 | Easter softness, US |
| 13 Apr 26 | $204,300 | Email reactivation campaign |
| 20 Apr 26 | $197,800 | Steady |
| 27 Apr 26 | $208,500 | End-of-month payday cluster |
| 04 May 26 | $221,400 | Mother’s Day push |
| 11 May 26 | $164,200 (partial) | Window cut-off, only 1 day in |
| 90D total | $2,576,400 | Over 90 days = $28,627 / day average |
- The chart’s job is to show the shape, not the total. The 90D total goes on the Total Revenue tile; this chart’s job is trend. Look at the slope first, the variance second, the absolute level third.
- The Spring Drop spike (week of 09 Mar) is the campaign signature. A clean two-week bump that returns to baseline. If it didn’t return to baseline, you’d suspect a step-change in baseline demand. Pair with New Customers to see whether the bump kept buyers or just front-loaded existing ones.
- Easter softness (06 Apr) is structural. US Easter Sunday in this window. Most categories see -5 to -15% week-over-week; not a problem, just mark the calendar.
- The “11 May 26 partial” gotcha. The trailing point is incomplete because the window is rolling. New users misread this as a sudden drop on the most recent day. The Vortex IQ chart greys out the trailing day’s bar; merchants who export to CSV often miss this.
- Weekly view kills the noise. Daily points show 30 to 50% intra-week swing; weekly smooths to ~10%. For trend decisions, work weekly. For incident decisions, work daily.
Sibling cards merchants should reference together
Revenue Over Time is the headline trend. The supporting cast:| Card | Why pair it with Revenue Over Time |
|---|---|
| Total Revenue | The 90D total in a single number. Use the chart for shape, the tile for level. |
| Orders Over Time | Order-count companion. Revenue up + orders flat = AOV growing; revenue up + orders up proportionally = pure volume. |
| Average Order Value | The implicit ratio. Sustained AOV change shows up as drift between this chart and Orders Over Time. |
| Refunds Over Time | Overlay to compute net revenue daily. A revenue rise that’s partly offset by refund-rise is misleading. |
| Discount Over Time | Spikes here often align with discount-driven days. Sanity check whether revenue gains are organic or promo-driven. |
| Revenue by Day of Week | The pattern view. Use to identify systematic weekday weaknesses. |
| Revenue by Channel | Channel decomposition of the trend. A flat headline can hide a falling DTC + rising marketplace mix. |
| Cancelled Over Time | Late-stage failure trend. Rising cancellations alongside flat revenue means hidden churn. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin:Shopify Admin → Analytics → Reports → “Total sales over time” (under the Sales category)The most direct equivalent. Set the same window and granularity (daily / weekly / monthly). The chart shape and totals should match this card to within sync-lag and time-zone tolerance. Other Shopify Admin views that overlap:
- Analytics → Dashboards → Overview: a default-30D revenue chart on the home dashboard. Useful for a quick glance, less granular.
- Analytics → Live View: real-time today-only chart with map. Use to verify “today” is reflected.
- Reports → Sales by sales channel over time: same chart shape, broken by channel.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Daily totals shift | Shopify Admin uses store time zone; Vortex IQ uses UTC. Boundary days differ by up to one day. The 90D total reconciles; individual day totals may not. |
| Refund treatment | Same | Both use original-order-date for revenue attribution by default. Net Sales (refund-adjusted) differs. |
| Multi-currency | Slice totals nonsensical | We don’t FX-normalise; Shopify Admin reports do for the headline. |
| Sync lag | Trailing day(s) lower | Most-recent 5 to 15 minutes of orders may not be in the index. Yesterday and earlier are caught up. |
| Cancelled / test orders | Slight differences | Shopify Admin can hide test orders; Vortex IQ does not yet filter Order.test. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_revenue_over_time | Same shape, lower absolute | GA4 misses 10 to 25% of orders due to ad blockers and cookie rejection. Shape tracks within ±5%; level runs lower. Treat Shopify as truth for £; GA4 for channel attribution. |
stripe.stripe_volume_over_time | Tracks Stripe-gateway orders only | Will be lower than this card if the store has Shopify Payments + alternate gateways (PayPal, Apple Pay, Klarna). |
Known limitations / merchant FAQs
Why does my chart show a sudden dip on the most recent day? Almost always because the window is rolling and the trailing day is incomplete. Vortex IQ greys out the partial day on the chart, but if you’re exporting raw data, the most recent day may include only a few hours of orders. Don’t react to it. Wait until the next day. My weekend revenue looks flat compared to weekdays. Is that normal? Depends on category. UK DTC fashion typically peaks Thursday/Friday with a weekend dip; US homewares often peak Sunday/Monday. Pair with Revenue by Day of Week for the pattern view, then compare against your category benchmark. Why is my chart noisy day-to-day? Three usual causes:- Low daily order volume. Stores doing <50 orders/day naturally show jagged charts; one £500 wholesale order moves the daily figure 10%+. Switch to weekly granularity for a usable trend.
- Heavy promo cadence. A weekly “flash sale” creates a regular spike-and-trough rhythm.
- Channel mix shifting. A POS event day or a marketplace dump-day creates one-day spikes.
- Is it more than 1 standard deviation below the 30D rolling average? If not, it’s normal noise.
- Does it persist for 3+ consecutive days? Single-day dips are often calendar-driven (holiday, weather event); persistent dips are real.
- Does the order count drop too, or just revenue? Revenue-only drops point to AOV (mix shift, discounting); count drops point to demand or top-of-funnel issues.
totalPrice is summed at the raw amount in its presentment currency. A USD $100 order and a GBP £100 order both contribute “100” to the daily total. This is wrong. Filter the card to a single currency for a usable view; multi-currency aggregation is on the roadmap.
How does this card handle negative revenue (heavy refund days)?
The card shows gross revenue, so refunds don’t pull it negative. To see net, overlay Refunds Over Time. On a single day with refunds > new orders, gross is positive but net is negative.
Action playbook when the trend turns down:
- Confirm it’s a real dip (3+ consecutive days, beyond 1σ).
- Decompose: orders down or AOV down? Pair with Orders Over Time and Average Order Value.
- Check upstream traffic and ad spend. A drop in Google Analytics traffic or Google Ads spend usually leads revenue dips by 1 to 7 days.
- Check channel mix. Revenue by Channel reveals whether one channel is responsible.
- Check refund rate. A spike in Refund Rate points to a quality / fit / shipping issue suppressing repeat demand.
- Check inventory. Products with Zero/Negative Stock on top-revenue SKUs causes orders to evaporate; rate falls a few days later.