Analytics
Analytics answers two questions from the same order history. First, the everyday one: what are your discounts actually giving away, and would a per-order cap have saved real money? Second, the one the rest of PromoLock exists to fix: how much are you losing to discounts you didn’t intend? Not your planned promotions — the leaks. It reads your orders, ranks the discounts responsible, and tells you which rule to tighten first.
What counts as loss — and what never does
Section titled “What counts as loss — and what never does”Every discounted item in an order lands in exactly one of two buckets, so nothing is ever counted twice:
Sale-item loss. The item was already marked down (selling below its compare-at price) and a discount was applied on top. Discounting a discount is the leak — the full discount amount on these items counts as loss.
Stacking loss. The item was regular-priced and carried more than one discount. The single largest discount is treated as the one you intended and is never counted. Only the extra discounts stacked on top of it count as loss.
Read that second rule again, because it’s the important one: your planned promotions are never counted against you. A customer using your 20% campaign code exactly as designed contributes zero loss. The report only moves when a code lands somewhere it shouldn’t.
Cancelled orders are removed from the numbers automatically, and refunds and edits correct themselves.
Setting up
Section titled “Setting up”Open Analytics and hit Initialize report, or click Build my report on the dashboard’s Discount insights card, which does the same thing. PromoLock scans up to the last 365 days of orders: a few minutes for most stores, up to a couple of hours for very high-volume ones. You can leave the page; the report fills in on its own.
It’s a one-time setup. From then on the report refreshes automatically every day.
The dashboard card
Section titled “The dashboard card”Once built, the Discount insights card on the dashboard carries the headline for any of the five ranges without opening the report: the total you didn’t need to give (sale-item loss plus stacking loss), then four figures: On sale items, Stacked codes, Uncapped codes (what the most conservative cap on each capped-able discount would have saved, and how many discounts that is), and Total discount given. Full report opens Analytics on the same range.
Reading the report
Section titled “Reading the report”Two selects control what you’re looking at:
- Report — Discount given (the default — the spend overview below), or Sale-item discounts / Stacked discounts, one per loss bucket above.
- Time — last 7, 30, 90, 180, or 365 days (default 30).
The Discount given view
Section titled “The Discount given view”This is where the page opens: everything your discounts handed out in the range, planned or not.
| Tile | Meaning |
|---|---|
| Discounts applied | Total discount value given across the range, in your store’s currency. |
| Discounted orders | How many orders used at least one discount. |
| Sales with discount | Revenue that arrived with one of those discounts attached — how much business your discounting is actually carrying. (If this number can’t be fetched at the moment, the tile shows Avg discount / order instead.) |
Below the tiles, Top discounts by amount given ranks your discounts by what they cost you, biggest spender first — same badges and info buttons as the loss lists.
What a cap would have saved
Section titled “What a cap would have saved”Any row with enough history (10+ orders) expands. The panel starts with the row’s shape — typical order gets $12.40 off · the largest single order took $184.00 — and when those two numbers are far apart, a table shows what a per-order limit would have done:
| If capped at / order | You’d have saved | Orders affected |
|---|---|---|
| $25 | $1,940 | 214 (6.1%) |
| $40 | $610 | 48 (1.4%) |
| $60 | $95 | 6 (0.2%) |
Every number is computed from your own orders — no estimates. The suggested caps are deliberately round dollar amounts that sit above the code’s typical order, so a cap trims the outliers without touching the promotion itself. Percentage discounts are the ones with tails like this: 10% off scales with the cart, and the biggest carts quietly become your biggest giveaways.
Two honest notes the panel makes itself: a fixed-amount discount gives roughly the same on every order, so it says a cap wouldn’t change anything rather than inventing suggestions. And a Campaign row (codes minted by a referral or loyalty app) shows its numbers like any other, but a cap can’t be edited into codes another app already minted. If that app accepts an imported code list — most email and SMS tools do — a capped bulk set can replace its supply going forward; if it insists on minting its own, the Controller’s locks are the lever instead.
The caps from your order history strategy turns this table into a repeatable routine.
The loss views
Section titled “The loss views”Switch the Report select to Sale-item discounts or Stacked discounts and the page shows one loss bucket at a time.
| Tile | Meaning |
|---|---|
| Lost on sale items / Lost to stacking | Total loss for the selected report and range, in your store’s currency. |
| Affected orders | How many orders contained that kind of loss. |
| Avg / order | Loss per affected order — a quick sense of whether you have a “many small leaks” or “few big leaks” problem. |
Top discounts by loss
Section titled “Top discounts by loss”The ranked list below the tiles (called Most-stacked discounts on the stacking report) names the discounts doing the damage, worst first, five per page. Each row carries a badge:
| Badge | Meaning |
|---|---|
| Code / Automatic | A normal discount — yours to open and fix. The info button shows its details and a direct link to it in your Shopify admin (deleted discounts show as Removed). |
| Campaign | A family of unique one-time codes that share a pattern — shown like REF-* or *10OFF. Referral, loyalty, SMS, and win-back apps mint codes like this; PromoLock groups them so an app’s whole output reads as one line. |
| Single-use | The rollup row — “Other single-use codes (N)” — every one-off code that matches no campaign pattern, folded into one line to keep the list readable. |
The info button on any row explains exactly what’s inside it.
When loss is high
Section titled “When loss is high”If the range’s combined loss is significant, a card offers a direct chat with the founder. If the numbers leave you unsure what to change, take it up — that’s exactly what the chat is for.
From number to fix
Section titled “From number to fix”The report tells you where to act; the other tools do the acting:
- Sale-item loss high → the Controller’s sale-items lock, and check your discounts keep On-sale items on No discount (or Sale or code, which never pays more than the code is worth).
- Stacking loss high → the stacking lock, and review each top discount’s Combines with flags.
- One code dominating → open it from the list and add caps, or block it outright.
The Stop discount loss from day one strategy walks this exact loop.
