← All docs

Analytics

Analytics is the page that answers "is this program working". It has two halves. The top half counts referred orders, the revenue they brought in, and the commission they cost, and it works on every plan. The bottom half, Link analytics, counts clicks on affiliate links and the storefront pages those visitors opened before ordering, and it needs the Growth plan or higher.

Analytics, for one date range
Tracked clicks
142
Turned into orders
6.3%
Average time on store
4m 32s
Pages per visit
4.5

Average time on store is measured across visits that saw more than one page. A visit that opened one page and left has no measurable duration, so it is left out rather than counted as zero.

What counts as a referred order

The page merges your paid commission history with the live referrals sitting in the app right now: ones waiting for your approval, ones on hold, and ones already approved for payout. Manual bonuses and gifts are excluded, because they are not sales. History you imported from a previous affiliate app counts too, so a migrated store does not open this page and see an empty track record.

Two kinds of referral are left out on purpose. Referrals you rejected do not count, and neither do approved referrals worth zero commission. Separately, on the Free plan only the first 200 referral orders in a calendar month are attributed at all, so anything past that never reaches this page.

The four totals at the top are:

TotalWhat it is
Referred ordersHow many referral rows fall in the window, dated by the order.
Referred salesThe sum of the sale amounts on those rows, in your store currency. The two tables below head the same figure "Revenue".
CommissionThe sum of the commission on those rows. This is what the program cost you, not what you have paid out yet.
Active affiliatesHow many different affiliates appear in those rows.

When an order is refunded, Sprout Affiliate writes a clawback: a row that takes back the share of the commission the refund cancelled. It is named after the original order with the word "refund" on the end, it carries a negative sale and a negative commission, and it is dated to the original order. Revenue and Commission therefore net out correctly, but Referred orders counts that clawback as one more row, so a heavily refunded month reads slightly high on order count.

If Shopify does not answer when the page asks for your live orders, a warning appears saying the figures show paid history only. Reload before you act on the numbers.

The two tables

Top affiliates is capped at the 15 highest by revenue in the window. It is a leaderboard, not a full list. By program has no cap. Both disappear entirely when the window has no referred orders, replaced by "No referred orders in this window yet."

Filters, and one thing they do not filter

The Affiliate and Program selectors sit in the URL, so a filtered view survives a refresh and can be shared. They apply to the four totals, the chart, and both tables. Affiliates still awaiting approval are not offered in the list.

Neither selector applies to the Link analytics block. Its tiles are always whole-store, counting every affiliate's clicks together. To see clicks for one affiliate, open Tracked clicks and use the affiliate filter there.

Grouping by program uses the program each affiliate belongs to now, not the program they were in when the sale happened. Move an affiliate to a different program and their whole history moves with them. An affiliate with no program shows under a dash.

The date range

Presets are Today, Last 7 days, Last 30 days, Last 90 days, Last 12 months, Since last payout, All time, and Custom. The default is the last 30 days.

Since last payout starts the day after your most recent payout, because the payout itself is settled money and is not part of what the next run will owe. All time starts on the date of your earliest recorded commission, or falls back to the last 730 days if you have none yet. A custom span is capped at 730 days.

Every day here starts and ends on your store's clock. The timezone comes from your Shopify shop settings, and Sprout Affiliate re-reads it as you use the app, at most once every five minutes. If your store is behind UTC, a sale at 6pm local time counts as that day here, even though it is already tomorrow in UTC.

The chart

Pick one measure at a time: Referred sales, Commission, or Referred orders. Only one line is drawn on purpose. Those three sit on completely different scales, and stacking them would need a second scale up the right-hand side, which makes the point where two lines cross an accident of the two scales rather than anything real.

How much time each point on the line covers follows the window, and you cannot set it by hand: a one-day window plots one point per hour, up to 120 days one point per day, and anything longer one point per month. The chart only appears when the window produces more than one point.

On the Today view the line stops at the current hour and the last leg is drawn dashed, because the current hour is still filling up. Hours that have not happened are not drawn at all, since a flat line through the rest of the day reads as "no sales" instead of "not yet".

The figure above the chart is the window total. It always reads "no earlier period to compare" beside it, because this chart draws no previous-period line. The only previous-period line on the page is the grey dashed one on the clicks chart, which comes with a key naming the two date ranges it draws.

A quiet window draws a flat line along zero. That is a real answer, not a broken chart.

Tracked clicks, Turned into orders, Average time on store, and Pages per visit are built from the page trail: the list of storefront pages a referred visitor opened, reported one page at a time by the Sprout referral tracking app embed you switch on in your theme. That trail is recorded on every plan, including Free, so upgrading shows you the history you already have rather than starting from zero.

Tracked clicks

One click means one visit identity, not one tap. When someone lands with ?ref= on the URL, the embed mints an identity made of the affiliate's code and the moment of the click, and keeps it in the browser for the length of your attribution window, which is how long after a click an order still earns commission (30 days unless a program sets its own). Re-clicking the same affiliate's link keeps the original click time, so it stays one click. Clicking a different affiliate's link starts a new one.

A click belongs to the window based on when the click happened. Everything else about that visit, including pages viewed days later and the order it eventually became, is credited back to the click's own day.

Clicking the tile opens Tracked clicks, one row per visit, carrying the same range.

Turned into orders

The percentage, to one decimal place, is:

The order lookup has no end date, so an order placed after the window closes still counts against the click that started it. A rate for a recent window can rise over the following days. With no clicks at all, the tile shows a dash rather than 0%.

Turned into orders asks only "did the click reach an order". It counts an order you later rejected, so it can sit above what the top half of the page pays for. Orders from a discount code with no link click never appear here at all, though they do count in Referred orders above.

Average time on store

Page views for one visit are split into sessions on any gap longer than 30 minutes, the same rule Google Analytics uses. Each session contributes the time from its first page to its last, and the visit's total is the sum of its sessions. Without the split, one visitor who parked a tab and came back hours later produced a 183-minute "visit" that tripled a store's average on its own.

A visit with a single page has no measurable time, because there is no "they left" event to measure against. Such visits are left out of the average entirely rather than counted as zero. Counting them as zero would drag the average down and suggest people bounced instantly, when the truth is that you cannot tell.

So read Average time on store as "how long people stayed, among the visits where staying was measurable". It shows a dash until at least one such visit exists.

Pages per visit

Total pages recorded for the window's clicks, divided by the number of clicks, to one decimal place. A page is recorded once per visit per path, the path being the part of the web address after your domain, such as /products/mug, so a visitor who returns to the same product page later does not add to the count. Read it as distinct pages seen, not page views. A single visit stops recording after 200 pages.

Tracked clicks, the drill-down

The Tracked clicks page lists every visit in the window, newest first, with the time on your clock, the affiliate it credits, the page they landed on, how many pages they saw, the visit length (gaps longer than 30 minutes removed, the same rule the average uses), and the external page that sent them when there was one. Each row expands to the page-by-page journey with timestamps, up to the first 50 pages, while the page count itself stays complete. Filter by affiliate, or by outcome (turned into an order, or no order). A row that turned into an order links straight to that order's referral.

Two limits. The affiliate filter cannot find visits that arrived through an affiliate's old link name, because those rows show the raw code rather than a linked affiliate. And this page's range picker has no history of its own, so All time here means the last 730 days and Since last payout here means the last 30 days.

What your affiliates see

Affiliates have their own Analytics tab in the portal, using the same date-range presets. It shows their commission over time with a dashed previous-period line and a percentage change, plus the same four link tiles scoped to their own code and any old codes that still credit them, plus an "Every click" list of their visits with the pages seen and the order each one became.

The link section of their Analytics tab follows your plan, not theirs. On Free they do not see it. If your plan cannot be read at that moment, Sprout Affiliate shows it to them anyway, because a billing hiccup must never read as a downgrade.

If a number looks wrong