Reading the sales chart and the orders list
How the Total sales chart and the Orders list work — what they plot, how to group and page through them, and the edge cases to watch.
Below the summary cards, the Analytics page has two data-display widgets: the Total sales chart and the Orders list. They answer different questions. The chart shows how your offer revenue moved over time inside the range and filters you picked. The orders list is a raw, unfiltered feed of every tracked order, newest first, so you can find the specific order behind a number. This page explains both in detail — including a few places where they behave differently than you might expect.
Both widgets only ever show tracked orders — orders that contain at least one campaign offer item. Orders where no offer was taken never appear here. For the exact definition of every figure, see the Metrics reference.
Part A — The Total sales chart
The chart is a single line labelled Total sales. It plots offerItemsSubtotal — the subtotal value of the offer items your campaigns sold — for the selected date range only. Change the date range (or any other filter) and the line redraws to match. The range you chose is also printed as the line's name, formatted to match the current grouping (for example Jan 01 - Jan 31).
What the line measures
Each point on the line is the Total sales (offer-item subtotal) for one time bucket. The chart never shows your whole-store revenue and never shows order counts here — just the money your offers brought in, bucketed over time. Because it reads the same offerItemsSubtotal figure as the Total sales card above it, the points on the chart sum to that card for the same range and filters.
Group by: Daily or Monthly
A Group by control sits in the top-right of the chart card with a dropdown. It has two options:
| Group by | X-axis label format | Example label | What each point represents |
|---|---|---|---|
| Daily (default) | MMM DD | Jan 05 | One calendar day of offer revenue |
| Monthly | MMM YYYY | Jan 2026 | One month of offer revenue, summed |
The default is Daily. The two groupings build their buckets differently:
- Daily walks the range one day at a time and places each day's
offerItemsSubtotalon its own point. Days with no tracked sales are still drawn — they show as 0, so the line touches the axis rather than skipping the gap. - Monthly walks the range one month at a time and, for each month, adds up the
offerItemsSubtotalof every day that falls in that month into a single point. A month is included whenever the range overlaps it.
Monthly points are sums of whatever days fall inside your selected range, not whole calendar months by default. If your range starts on Jan 20, the Jan 2026 point only includes Jan 20–Jan 31, so it will look smaller than a full January. To compare months fairly, set the range to whole months before switching to Monthly.
Reading a point: the hover tooltip and the axes
- Hover tooltip. Hovering a point shows the exact amount as money — the full value, not the rounded axis label — in your selected currency, alongside the full date formatted as
MMM DD, YYYY(for exampleJan 05, 2026). Use the tooltip whenever you need the precise figure behind a point. - Y-axis (money). The vertical axis uses compact money notation so large numbers stay readable — for example
$1.2kinstead of$1,200. These labels are rounded for display; trust the tooltip for the exact amount. - X-axis (time). The horizontal axis uses the format from the table above —
MMM DDin Daily,MMM YYYYin Monthly.
Days are bucketed in your shop timezone
A day on the chart is a day in your shop's timezone, not the viewer's browser timezone. This is the same boundary the rest of Analytics uses, so a sale lands on the same day here as it does in your Shopify reports. If a late-night order seems to fall on the "wrong" day, it is almost always a timezone boundary — see the Metrics reference for how days are aggregated in your shop timezone.
Empty state
If there are no tracked sales for the selected range and filters, the chart shows the text No analytics instead of a line. This is normal for a brand-new campaign, a quiet range, or a filter combination that matches nothing — widen the date range or relax a filter and the line returns.
Recipes
Spot weekday vs weekend offer performance
Keep Group by on Daily and set the range to a couple of weeks. Scan for the rhythm of peaks and troughs — if weekends sit consistently higher or lower, your offers convert differently by day of week. Hover individual days to read exact amounts before acting.
Spot a launch spike
After launching a new campaign, stay on Daily and look for a sharp step-up on the launch day. A clean spike that holds tells you the offer is pulling revenue; a spike that immediately decays back to the prior baseline suggests novelty rather than durable lift.
Switch to Monthly for seasonality
To see the bigger picture, set the range to several whole months and switch Group by to Monthly. Each point now sums a month, smoothing out daily noise so seasonal trends (holiday lift, summer dips) stand out. Remember the partial-month caveat above — use whole-month ranges for fair comparisons.
Part B — The Orders list
Under the heading Orders list is a paginated table of your tracked orders, newest first. Each row is one order that took at least one offer.
Columns
| Column | What it shows | Format / notes |
|---|---|---|
| Order | The Shopify order name | Links to the order in your Shopify admin, opening in a new tab. Falls back to #0000 if the order has no name. |
| Date | When the order was created | MMM D at h:mm A z — for example Jan 5 at 2:30 PM EST |
| Order Total | The order's subtotal | The whole order's subtotal, in that order's own currency |
| Campaign Amount | Offer revenue on that order | The sum of every campaign's total on the order |
| Campaign Items | How many offer items were sold | A line count with pluralization — 1 item, 2 items, and so on |
A few details worth knowing:
- Order Total is the full order subtotal, while Campaign Amount is only the offer portion. On most orders Campaign Amount is smaller than Order Total, because the shopper also bought non-offer products.
- Campaign Amount sums across all campaigns on the order. If one order took offers from two different campaigns, this column adds both together.
- Every cell in a row is a link to the same Shopify admin order, so clicking anywhere on the row takes you there.
Sorting, page size, and pagination
The list is always sorted newest-first by creation date — you cannot re-sort it. To move through it:
Choose how many rows per page
Use the Show selector at the bottom of the table to set the page size. The options are 10 (default), 25, and 50 rows per page. Changing the page size reloads the list.
Page forward and back
The pagination control shows your position as page/totalPages (for example 2/7). Use Previous and Next to move between pages. Previous is disabled on page 1, and Next is disabled on the last page. While a page is loading, the controls are inert and a spinner appears over the table.
The orders list ignores your filters — on purpose
The Orders list is not affected by the date range, funnel, campaign, or currency filters at the top of the Analytics page. It is a raw, paginated feed of all your tracked orders, newest first — independent of everything the cards and chart respond to.
This is by design. The cards and chart are computed from filtered, aggregated metrics, but the orders list is loaded separately from its own /orders endpoint, which is server-paginated: it asks the server for one page at a time (the page number and page size you picked) and the server always returns the most recent tracked orders for your shop, regardless of any filter. So:
- Narrowing the date range does not shrink the orders list.
- Selecting a single campaign or funnel does not filter the rows.
- Switching the currency filter does not change which orders appear — each row already shows its own order's currency (see below).
If you need a filtered view, read it from the cards and chart. The orders list is the place to find an individual order, not to slice your data.
Edge cases
Recipe: find the specific order behind a number
Locate the order
Page through the list (newest-first) or bump the page size to 50 to scan faster, then click the Order name to open it in your Shopify admin in a new tab.
Read the row, not the cards
The row's Campaign Amount and Campaign Items tell you exactly what that one order contributed. This is the ground truth for a single order.
The totals you add up from the orders list will not match a filtered card. The cards respond to your date range, campaign, funnel, and currency filters; the orders list ignores all of them and spans every currency. Use the list to inspect individual orders — use the cards to read totals for a specific filter. For why a card's revenue can differ from a row's, see How revenue is attributed.
Related pages
Metrics reference
Exact definitions of Total sales, Order Total, Campaign Amount, and every other figure.
How revenue is attributed
How offer items are tagged and valued — including post-purchase orders.
Currencies in Analytics
How the app keeps each currency separate and never converts between them.
Analytics overview
A tour of the whole page: cards, filters, the chart, and the orders list.
How revenue is attributed to campaigns
Exactly how the app decides which order lines count as campaign revenue, what it records, and why the numbers are conservative by design.
Filtering analytics: date ranges, funnel, campaign, currency
A behavior-accurate guide to the four Analytics filters, every date preset, and how the filters reset and combine with one another.
