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.
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:
| Total | What it is |
|---|---|
| Referred orders | How many referral rows fall in the window, dated by the order. |
| Referred sales | The sum of the sale amounts on those rows, in your store currency. The two tables below head the same figure "Revenue". |
| Commission | The sum of the commission on those rows. This is what the program cost you, not what you have paid out yet. |
| Active affiliates | How 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.
Link analytics (Growth plan and up)
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:
- Numerator: tracked clicks in the window that ended in an order. The match is exact. The cart carries the identity as the
Sprout Reforder attribute, and an order counts only when that attribute matches the click. - Denominator: every tracked click in the window.
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.
Where link analytics is blind
- Identities only exist where the app embed ran. Content blockers, privacy browsers, and unusual themes under-report, so treat clicks as a floor rather than a census.
- Page views are only recorded for codes belonging to an active affiliate. Pause or remove an affiliate and their visits stop being tracked from that moment.
- Page trail rows are deleted after 120 days, and the copy of your Shopify orders that Sprout Affiliate matches them against only holds 90 days (orders you still owe commission on are kept for as long as they are owed). On an All time window, clicks and the share that turned into orders will thin out or disappear for older periods.
- The four tiles cut their window at UTC midnight while the totals and charts cut it on your store's clock. If your store is not on UTC, the tile figures and the clicks chart can differ by the clicks that fall in the offset hours at either end.
- None of these four tiles is proof of anything. Nothing binds a page trail row to a verified browser session, and Sprout Affiliate stores no IP address, no user agent (the identifying text a browser sends about itself), no cookie, and no customer id. It is storefront analytics.
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
- Clicks but no orders: check that the theme app embed is enabled under Theme editor, App embeds, and remember that discount-code sales never produce clicks.
- Orders but no clicks: the app embed is off, or the buyer's browser blocked the small background request that reports each page. The order can still be credited by the discount code or by the Web Pixel (the Shopify extension that reports completed checkouts to Sprout Affiliate) while the page trail records nothing.
- Link analytics missing on a paid plan: the card is hidden rather than shown broken when the click data cannot be read. Reload.
- The first or last day of the range looks empty: the totals and the charts use your store's calendar, so compare against your local date, not UTC.
- Numbers that changed since yesterday: an order placed days after its click still attaches to that click, refunds and order edits change the sale and commission behind a row, and approving or rejecting a referral moves it in or out of the totals.