Analytics

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 byX-axis label formatExample labelWhat each point represents
Daily (default)MMM DDJan 05One calendar day of offer revenue
MonthlyMMM YYYYJan 2026One 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 offerItemsSubtotal on 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 offerItemsSubtotal of 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 20Jan 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 example Jan 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.2k instead 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 DD in Daily, MMM YYYY in 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

ColumnWhat it showsFormat / notes
OrderThe Shopify order nameLinks to the order in your Shopify admin, opening in a new tab. Falls back to #0000 if the order has no name.
DateWhen the order was createdMMM D at h:mm A z — for example Jan 5 at 2:30 PM EST
Order TotalThe order's subtotalThe whole order's subtotal, in that order's own currency
Campaign AmountOffer revenue on that orderThe sum of every campaign's total on the order
Campaign ItemsHow many offer items were soldA 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.

On this page