How to measure what coupon extensions really do to your sales

Extension shoppers look like your best customers, and before/after checks can't say why. What to measure, how to do it in GA4, and when you need a holdout.

Author:BensonUpdated 6 October 202612 min

Jump to a section

The short answer

Shoppers with a coupon extension often look like your best customers because many had already decided to buy, so comparing them with everyone else, or checking before and after a change, can't show what the extension causes. Describe the gap with cohorts, get a first read in GA4, then put any change behind a random holdout and report the result with a range.

It's the budget review. The affiliate invoice is on the screen, and a good slice of the commission went to coupon and cashback extensions. Your finance lead asks one question: how many of those orders would we have had anyway?

You have an answer, of sorts. Shoppers with a coupon extension convert far better than everyone else, and the network's dashboard credits them with a healthy share of revenue. That sounds like a case for keeping them.

But you suspect the opposite. These look like people who had already filled their basket, and the extension turned up at the last moment with a discount and an invoice.

Both stories fit the numbers you have. This guide shows why extension shoppers look so good on paper, why the obvious check lies, and how to get a number finance will accept.

Why do extension shoppers look like your best customers?#

Because most of them already were, before the extension did anything.

People who install shopping extensions shop online a lot. CJ, one of the largest affiliate networks, commissioned a study with Namogoo across 67 million shopping occasions. It found extension users spent far more per shopper than people without an extension, and said this was true whether or not they interacted with the extension. [CJ and Namogoo, Nov 2023] (opens the source)

185%

more spent per shopper by extension users than by shoppers without one, in a study an affiliate network commissioned. The gap held whether or not they used the extension.

CJ and Namogoo, Nov 2023(opens the source)

That's the trap in any "extension sessions against everyone else" comparison. The gap is mostly about who these shoppers are, not what the extension did for you.

The same study went on to compare extension users who saw a pop-up with users whose pop-ups happened to be switched off, and reported a lift. It's worth reading, but the groups weren't split at random, and the network that paid for it earns commission on extension sales. Treat it as a reason to test, not as your answer.

Timing makes it worse. Coupon extensions typically pop up on the cart or checkout page, after the shopper has chosen what to buy and where. Under last-click attribution, the final click before the order takes the credit.

PartnerCentric, an agency that sells its own incrementality measurement, looked at its clients' data from October to December 2024. Coupon, loyalty and cashback partners started only 13% of the conversions credited to them, on average. [PartnerCentric, Feb 2025] (opens the source)

This isn't special to coupons. In a large field experiment at eBay, economists found that paid search returns were a fraction of what the usual reports suggested, and brand-keyword ads had no measurable short-term benefit. Their reason applies here too: the people who click are often the people who were going to buy anyway. [NBER (Blake, Nosko and Tadelis), May 2014] (opens the source)

The argument has run in public for years, and both sides make a fair point.

Only a test on your own store tells you which of those is true for you.

Why won't finance accept the number you have?#

Because marketing numbers are under more suspicion than they've been in years, and an attributed revenue figure is easy to argue with.

60%

of US marketers say people inside their company question their metrics at least sometimes.

TransUnion, Oct 2025(opens the source)

In the same survey, run by EMARKETER with TransUnion (which sells measurement), nearly 29% said doubts about measurement had put up to a fifth of their budget at risk or moved it elsewhere. [TransUnion, Oct 2025] (opens the source)

Senior marketers ranked CFOs as the executives most sceptical of marketing's value, and only 52% said they could prove that value and get credit for it. [Gartner, Sep 2024] (opens the source) When Gartner asked CFOs where they planned to cut in 2026, 27% named marketing. [Gartner, Oct 2025] (opens the source)

Last-click doesn't help your case. Only 21.5% of US marketers in an EMARKETER and Snap survey were confident it reflects a platform's long-term impact. [EMARKETER, Oct 2024] (opens the source)

When someone does run a proper test, the answer can be blunt. Haus, which sells incrementality testing, worked with a global DTC brand that switched off all its US affiliate loyalty partners for seven weeks while seven other countries carried on. US revenue didn't change against the comparison regions, and the brand cut its spend on the channel with no material drop in revenue. [Haus, May 2023] (opens the source)

That's one brand and one type of partner. It doesn't mean every extension is worthless to you. It means the attributed number on the dashboard can't settle the question, and a test can.

Why does the before-and-after check lie?#

The instinctive test goes like this: change something (hide the pop-ups, end an affiliate deal, add your own discount widget), wait a fortnight, and compare the fortnight before with the fortnight after. It feels rigorous. It isn't, for three reasons.

Seasonality moves faster than you think. Payday, the weather, a bank holiday or the start of a sale season can swing conversion by more than the effect you're looking for. If your change went live the week before Black Friday, the "after" period wins and the change takes the credit.

Promotions overlap. A new email, a price change or an influencer post in the same fortnight leaks into the comparison, and there's no way to separate them afterwards.

The traffic changes. Paid campaigns pause, a new affiliate starts sending visitors, an extension changes how it behaves. The shoppers after aren't the shoppers before.

Before and after, confoundedA conversion-rate line rises sharply the same week a change goes live, because a seasonal sale starts that week too. Comparing before with after credits the change with the sale's lift.Seasonal saleChange goes liveBeforeAfter
Before/after comparisons can't tell your change from everything else that changed that week.

Before/after numbers are a fine smoke test. When commission or margin is on the line, you need two groups whose only difference is the thing you changed. First, though, describe the problem properly.

What should you measure first?#

Split your sessions into two cohorts: sessions where a coupon or cashback extension is present, and everyone else. Then compare them on five numbers.

  1. Extension share. The share of sessions with at least one coupon extension. It tells you how big the issue is before you spend more time on it. Look at it by extension, device and traffic source; the split is rarely even.
  2. Conversion rate. Orders divided by sessions, per cohort. Expect extension sessions to look strong. As above, many of these shoppers were already heading for the checkout.
  3. Average order value. Revenue divided by orders, per cohort, before discounts. A cohort that converts well at a smaller basket can still lose you money.
  4. Discount depth. Total discount divided by gross revenue, per cohort. This is usually where extensions show up most clearly: a code meant for a small group gets applied for everyone who has the extension.
  5. Margin per session. Revenue after discounts and affiliate commission, per session. It pulls the other four together and tells you whether the cohort pays its way.
Extension sessions compared with everyone elseFour metrics, each shown as two bars: sessions with a coupon extension, and sessions without. The shapes are illustrative; your own numbers come from your store.Sessions with an extensionEveryone elseConversion rateAverage order valueDiscount depthMargin per session
Split every metric by cohort. The gaps are where the money is.

Write down what you expect each number to be before you look. It stops the numbers you find from quietly becoming the numbers you expected.

Reading the results#

The cohorts usually fall into one of three patterns.

  • Small share, small gaps. Extensions touch a sliver of your sessions and those sessions look like everyone else's. Check monthly and spend your time elsewhere.
  • Healthy conversion, deep discounts. Extension sessions convert well but carry much deeper discounts, often with a private or single-use code in the list. These shoppers were going to buy; the extension handed them a discount you didn't mean them to have. This is where hiding pop-ups and tightening code rules tends to pay.
  • Genuine lift. Extension sessions convert noticeably better at a similar discount depth, and the difference holds across devices and sources. The extension may really be persuading undecided shoppers. Test it before you touch it: you might do better offering the same deal to every shopper yourself, without the commission.

The second pattern is the one merchants describe most often in public.

Whichever pattern you see, treat it as a hypothesis. Cohorts tell you where the difference is. Only an experiment tells you what causes it.

How do you get a first read with GA4 and your dataLayer?#

You can do this without buying anything, as long as something on your site can tell you when an extension is present.

Benson's storefront script pushes a dataLayer event the first time it sees an extension in a session. The name and fields are stable, so you can build on them in Google Tag Manager:

// Pushed by Benson once per session, per extension, when detection is positive
window.dataLayer.push({
  event: "benson_ext_detected",
  benson_actor_class: "extension",
  benson_actor_id: "honey",   // which extension
  benson_confidence: 0.95,
});

// Also available: benson_ext_blocked, benson_widget_shown, benson_code_applied

dataLayer and GA4 events lists every event and field. With that in place:

  1. In Google Tag Manager, create a Custom Event trigger for benson_ext_detected, and Data Layer Variables for benson_actor_id and benson_confidence.
  2. Send a GA4 event from that trigger (for example extension_detected) with actor_id as an event parameter. Register it as a custom dimension in GA4 so you can report on it. Google says new custom dimensions take 24 to 48 hours to appear in reports.
  3. Build two segments in a GA4 exploration: sessions that include extension_detected, and sessions that don't.
  4. Compare the cohorts on sessions, purchases, purchase revenue and your discount field (if you send coupon value with purchases). Export to a spreadsheet to work out discount depth and margin per session.

If you'd rather skip Tag Manager, Benson can send the same events straight to GA4. Use one route, not both, or every event is counted twice.

Not using Benson? Any reliable signal works, but a home-made check for one extension's markup will miss the others and break when that extension updates.

Three traps to avoid:

  • Consent. If your GA4 setup respects consent (it should), shoppers who decline analytics drop out of both cohorts. Fine for comparing rates; don't read the counts as your whole audience.
  • Late detection. Some extensions only appear on the cart or checkout. Count the session as an extension session wherever in the visit the extension first appears.
  • Small numbers. A week of a few hundred extension sessions can swing wildly. Look at weeks, not days, and distrust any gap smaller than the normal week-to-week wobble.

This describes who extension shoppers are. It can't tell you what would happen if you changed something, because they're different people to begin with. For that you need a holdout.

How does a holdout give you a number finance will accept?#

A holdout is the simplest experiment there is. Take the sessions you want to change, say sessions with a coupon extension, and split them at random. Most get the change. A fixed slice, the holdout, doesn't. Then compare the two groups over the same weeks.

A holdout experimentShoppers with an extension are split at random. Most get Benson; a fixed slice is held out and sees the store as before. Both groups shop in the same weeks, so the difference between them is the effect of Benson.Extension sessionssplit at randomWith Bensonmost of the trafficHoldouta fixed slice, unchangedΔ
Same weeks, same shoppers, one difference. What's left is the effect.

Because the split is random, both groups get the same mix of devices, traffic sources, weather and promotions. The only systematic difference is your change. So when the group with the change earns more per session than the holdout, the change caused it, not the calendar.

Three things make a holdout trustworthy:

  1. Randomise, and keep it stable. A shopper who lands in the holdout should stay there for the whole visit, or the effect gets smeared across both groups.
  2. Decide the measure up front. Pick one primary metric before you start; revenue or margin per session is usually right. Checking five metrics and reporting the one that moved is how false wins happen.
  3. Report a range, not a point. A confidence interval shows how sure you can be. If the whole range sits above zero, the effect is real. If it straddles zero, you don't know yet.

How big should the holdout be? A bigger one reaches an answer sooner but costs you the effect on those sessions while it runs. Holding out somewhere between a tenth and a fifth of eligible sessions is a sensible default. Run it for at least two full weeks so every weekday appears in both groups, and don't start one in the middle of a big sale.

Run your first experiment: pick one change, keep a holdout, and read the result with its range.
Sample store
A holdout readout, with sample data: revenue per extension session for the group with the change against the group left alone.

A holdout also answers the question the cohorts can't. If an extension genuinely brings you sales you wouldn't otherwise have had, the holdout shows it. Then you know to keep the partnership, or to offer the same deal to every shopper yourself.

Where does Benson fit?#

  • Detection in real shopper sessions, with signatures for PayPal Honey, Capital One Shopping, Rakuten, RetailMeNot, Karma and others, updated without redeploying your site. Detection and observe mode, which shows what Benson would hide without changing anything, are on every plan, including Free.
  • Cohorts built in: extension share, conversion rate, average order value and discount depth for extension sessions and everyone else, joined to real orders once your store's orders are connected.
  • Holdouts when you want proof. On Pro, start one when you hide extension pop-ups on your storefront or make checkout rules strict. Benson compares revenue per session for the two groups and shows the result with a range once each group has enough sessions. A/B tests of codes and your own widget are on Pro.
  • A dataLayer bridge that pushes the events above to Tag Manager and GA4, so your own reporting stays in step.

Benson can't change what an extension shows inside Shopify's checkout, and it only measures what its script can see: consent choices and pages without the script leave gaps. Pricing shows what each plan includes.

To size what is at stake before you measure, put your own numbers into the coupon extension cost calculator. Then a sensible order: observe for a fortnight with Your first two weeks, then run your first experiment on the extension you see most.

See Benson on your store

Questions merchants ask

Can I measure extension impact with GA4 alone?
Not on its own. GA4 can compare extension sessions with everyone else once something on the page tells it an extension is present, but it doesn't detect extensions itself, and Google says GA4 reads A/B tests run by a separate testing tool rather than splitting traffic for you.
Why not just compare extension shoppers with everyone else?
Because they were different before the extension did anything. People who install shopping extensions tend to shop online more and arrive at checkout already decided, so they convert well whatever the extension does. The comparison describes them; it can't tell you what the extension caused.
How long should a holdout run?
At least two full weeks, so every weekday appears in both groups, and longer for smaller stores. Agree the stopping point before you start, and keep going until the range around the result no longer straddles zero or you decide the difference is too small to matter.
Doesn't a holdout cost me money?
A little. The held-out slice keeps the old experience while the test runs, so if the change helps, you miss that help on those sessions. Keeping the slice small limits the cost, and it is usually far smaller than the cost of making a permanent decision on a misleading number.
Should I run a holdout during a big sale?
No. Sale traffic and discounts behave differently from a normal month, and a test that starts or ends mid-sale is hard to read. Run the holdout in a normal period, decide your rules, then keep them steady through the sale.

Sources#

Find out what's leaking. Free forever, no card.

Free forever up to 25,000 sessions a month. Every Pro feature free for your first 14 days. No card. We'll email you about getting started. Unsubscribe any time.