Skip to content

← Back to the blog

Did Your Q1 Retention Offer Work? How to Measure Incremental Revenue

Syeda Rehnoma TanzomBy Syeda Rehnoma Tanzom19 min read
Two customer group cards comparing a 13.0% repeat purchase rate for customers who got a Q1 offer with 9.0% for a holdout group, showing a 4.0-point incremental lift

It's late January. The "$10 off your second order" code you sent to BFCM first-time buyers shows 176 redemptions and more than $12,000 in sales. Your team is calling it a win.

But some of those customers were coming back anyway, and every one of them still got $10 off. Shopify's discount report counts who used the code. It can't tell you which orders the offer actually caused, and that's the number you need to measure incremental revenue.

Small differences decide whether an offer pays. In Ometria's analysis of its retail clients, only 4% of Black Friday 2024 new customers made a repeat purchase within 12 months. When the natural repeat rate is that low, a handful of extra orders can look like a big result, and so can random noise.

Here's the short version: hold back a random group of eligible customers who don't get the offer, then compare repeat purchases and margin between the two groups. This guide covers the six numbers to compare, a setup that uses only Shopify and a spreadsheet, a worked example, and what to do when your store is too small for a clean answer. It's the hands-on version of the Q1 measurement stage of a holiday retention plan.

Short answer: A retention offer caused a repeat purchase only if customers who got it bought again more often than similar customers who didn't. To measure incremental revenue, randomly hold back 10% to 30% of eligible customers, send the offer to the rest, and compare repeat purchase rate and contribution margin per customer between the two groups over the same 60 to 90 days.

TL;DR

  • Redemptions count everyone who used the code, including customers who would have bought anyway, so they overstate what the offer caused.

  • A holdout group is a random slice of eligible customers who get no offer, and it shows what would have happened without one.

  • Compare per-customer results, not totals: repeat rate, contribution margin after the discount, time to second order, and full-price repeat rate.

  • Work out your break-even lift before sending, so you know how big a difference the offer needs to pay for itself.

  • Shopify segments, customer tags, and an orders export are enough to run the test, and a discount app like DiscountRay can deliver the offer to the test group only.

  • Small groups give noisy answers, so treat one test as a direction and repeat it before you change your whole Q1 plan.

Why Redemptions Don't Prove Your Retention Offer Worked

Redemptions tell you who used the offer, not who changed their behavior because of it. Every redeemer falls into one of three groups, and only one of them is a real gain.

  • Would have bought anyway. These customers were already planning a second order. The offer gave them money for something they were going to do, so their discount is pure cost.

  • Persuaded. These customers bought because of the offer. They're the incremental repeat purchases you're paying for.

  • Pulled forward. These customers would have bought in March and bought in January instead. The offer moved the date, not the total.

A redemption report mixes all three. It can also miss part of the effect. In 70 field experiments on emailed discount offers, Sahni, Zou and Chintagunta found the offers raised average spending by 37.2%, but 90% of that gain came from purchases that didn't use the offer at all. Some people saw the email, remembered the store, and bought at full price. A redemption count would credit the offer with none of those orders.

So redemptions can overstate the effect and understate it at the same time. "Attributed revenue" in an email tool has the same blind spot, because it counts orders that followed a message, not orders the message caused. That's why a high redemption rate that still loses money is so common after BFCM: the code got used, but mostly by people who didn't need it.

What Incremental Revenue Means for a Retention Offer

Incremental revenue is the revenue your offer group produced above what a comparable group with no offer produced, over the same period. You find it by comparing the two groups per customer, then multiplying the difference by the size of the offer group.

Two terms do most of the work:

  • Exposed group: the eligible customers who received the offer.

  • Holdout group: a random set of eligible customers who received no offer. They show your baseline, meaning what the exposed group would have done without the discount.

The key word is random. If you hand-pick the holdout, or compare redeemers with non-redeemers, the groups were different before the offer went out, and the comparison measures that difference instead of the offer.

Redemption report

Holdout comparison

Question it answers

How many people used the code?

How many extra people bought because of the offer?

Counts customers who would have bought anyway?

Yes, as wins

No, they cancel out against the holdout

Catches buyers who didn't use the code?

No

Yes

Includes the cost of the discount?

Usually not

Yes, if you track margin

Setup needed

None

A random split before you send

The Holdout Scorecard: Six Numbers to Compare

The Holdout Scorecard is the set of six numbers you calculate for each group at the end of the test. Always compare rates and per-customer figures, because the groups are different sizes.

Metric

How to calculate it for each group

What it tells you

1. Repeat purchase rate

Customers with at least one order in the window ÷ customers in the group

The basic "did they come back?" number

2. Incremental repeat-purchase lift

Exposed repeat rate minus holdout repeat rate, in percentage points

How many extra customers per 100 the offer brought back

3. Incentive cost

Every discount given in the exposed group, plus the cost of free gifts or free shipping

What you paid, including to people who'd have bought anyway

4. Contribution margin per customer

(Net sales minus product cost, shipping and fulfillment, and payment fees) ÷ customers in the group

Whether the extra orders covered the incentive cost

5. Time to second order

Median days from first order to second order, for customers who came back

Whether the offer sped people up, or only moved a date

6. Full-price repeat rate

Customers who placed an order with no discount ÷ customers in the group, during the test and for 60 to 90 days after it ends

Whether the offer trained people to wait for the next code

Two numbers come out of the Scorecard:

  • Incremental contribution = (exposed contribution per customer minus holdout contribution per customer) × exposed group size.

  • Cost per incremental repeat customer = incentive cost ÷ incremental repeat customers.

Contribution margin matters more than revenue here, because a discount lowers the profit on every order it touches. If you haven't worked out your profit margin after a discount per order, do that first, using the same costs for both groups.

The sixth number is easy to skip, and you shouldn't. In three large field experiments by Anderson and Simester, deeper discounts increased future purchases by first-time customers but reduced future purchases by established customers. An offer can look good in January and cost you full-price orders in April, so keep measuring after the code expires.

Before You Send: Work Out Your Break-Even Lift

Break-even lift is the smallest improvement in repeat rate your offer needs to pay for its own discount. Work it out before the campaign, so you know whether the offer even has a realistic chance.

Break-even lift = expected incentive cost ÷ (contribution per repeat order × exposed group size)

Here's an illustrative example. You'll send $10 off to 1,600 customers, and you expect about 176 of them to redeem it, so the expected incentive cost is $1,760. A typical second order is $70, and after product cost, shipping, and payment fees it leaves $31.50 in contribution margin.

$1,760 ÷ ($31.50 × 1,600) = 0.035, or 3.5 percentage points.

So if your normal repeat rate for this group is 9%, the offer has to lift it to about 12.5% just to cover the discounts. If that seems unlikely, make the offer cheaper (free shipping or a smaller fixed amount), or narrow it to the customers least likely to come back on their own.

How to Measure Incremental Revenue From a Retention Offer

To measure incremental revenue, you pick one group and one goal, split the group at random, give the offer to one side only, and compare both sides after the same window. These seven steps use Shopify's own tools and a spreadsheet.

Step 1: Pick One Group and One Job

Choose a single group with a single goal, such as "BFCM first-time buyers, second order by early April." Mixing first-timers, lapsed customers, and VIPs in one test hides what happened in each group.

Clean the group before you split it. If you can identify gift buyers, consider leaving them out, because gift orders that don't reflect the buyer's own taste behave differently in Q1. Also remove anyone who's owed a service recovery offer after a late or damaged order. Those customers get their gesture no matter what, so they don't belong in a test.

Step 2: Build the Segment in Shopify

Create a customer segment for the group. For BFCM first-timers, a filter like this works, using the Shopify segment query language:

number_of_orders = 1 AND first_order_date BETWEEN 2026-11-20 AND 2026-12-02

Adjust the dates to your own BFCM window. Build the segment the day you split, because customers who place a second order before then shouldn't be in the test.

Step 3: Split the Group at Random

Export the segment as a CSV, add a column with a random number for each row (=RAND() in Google Sheets or Excel), and sort by that column. Mark the first 20% as the holdout and the rest as exposed. Then copy the values so the random numbers stop changing.

Never split by engagement, spend, location, or alphabet, and never move a customer between groups after the split. Write down the date and the size of each group.

Step 4: Tag Both Groups

Add a customer tag to each group, such as q1-26-offer and q1-26-holdout. You can add tags with Shopify's bulk editor or a tagging app.

Be careful with CSV imports. Shopify's Help Center notes that importing with the overwrite option replaces all of a customer's data, including their tags, so an import can wipe tags your other apps rely on.

Step 5: Send the Offer to the Exposed Tag Only

Make the discount available only to customers tagged q1-26-offer. In Shopify you can limit a code to specific customers or customer segments, with one use per customer and an end date. Codes locked to one customer are best, because a code shared on a coupon site can reach your holdout and blur the result.

Give the offer a fixed window, such as January 6 to February 2, and don't change the amount once it's live.

Step 6: Keep the Message the Same for Both Groups

If you can, send both groups the same January email and leave the offer out of the holdout's version. That way the test measures the discount, not the reminder. Many stores find the email alone brings some customers back.

If you send nothing to the holdout, the test measures "email plus offer" together. That's still useful, but say so when you report the result.

Step 7: Read the Results at the End of the Window

Use the same window for both groups, for example January 6 to April 5. Then gather two things.

  • Repeat counts. A segment such as customer_tags CONTAINS 'q1-26-holdout' AND last_order_date >= 2027-01-06 shows how many holdout customers ordered again. Run the same filter for the exposed tag.

  • Revenue and margin. Export your orders for the window. The file includes each order's email, subtotal, discount amount, total, and refunded amount. Match the emails to your two group lists and total each group.

One detail to watch: the export's Discount Code column doesn't include automatic discounts, but the Discount Amount column still shows what was taken off. Subtract refunds before you calculate margin.

A Worked Example: 2,000 BFCM First-Time Buyers

Here's the Holdout Scorecard for an illustrative store with 2,000 BFCM first-time buyers. It sent $10 off a second order to 80% of them and held back 20%, then measured from January 6 to April 5.

Exposed group

Holdout group

Customers

1,600

400

Customers who ordered again

208

36

Repeat purchase rate

13.0%

9.0%

Orders that used the code

176

0

Incentive cost

$1,760

$0

Contribution before discounts ($31.50 per order)

$6,552

$1,134

Contribution after discounts

$4,792

$1,134

Contribution per customer

$2.995

$2.835

Now the results:

  • Incremental repeat-purchase lift: 13.0% minus 9.0% = 4.0 points.

  • Incremental repeat customers: 4.0% × 1,600 = 64.

  • Incremental contribution: ($2.995 minus $2.835) × 1,600 = $256.

  • Cost per incremental repeat customer: $1,760 ÷ 64 = $27.50, against $31.50 of margin on a typical order.

The redemption report would have shown 176 orders and about $12,300 in sales on the code. The real gain was 64 customers and $256 in contribution. The offer worked, just barely, and it cleared the 3.5-point break-even lift by half a point.

Notice that 32 people in the exposed group came back without using the code. The redemption report misses them. The holdout comparison counts them.

There's also noise to account for. With these group sizes, the 95% range for the lift runs from about 0.7 to 7.3 points. That means the true result could be anywhere from a loss to a solid gain. A sensible decision is to keep the offer, test a cheaper version next time, and check the full-price repeat rate for both groups through May before scaling it up.

How Big Does Your Holdout Group Need to Be?

Bigger than most stores expect. When repeat rates are low, small lifts need thousands of customers per group before you can tell them apart from chance.

The table shows roughly how many customers each group needs to reliably detect a lift, using standard settings (95% confidence and 80% power, with equal-sized groups).

Holdout repeat rate

Exposed repeat rate you hope for

Customers needed in each group

8%

10%

about 3,200

8%

11%

about 1,500

8%

12%

about 880

8%

13%

about 590

15%

20%

about 900

20%

25%

about 1,100

Some practical rules follow from this:

  • Holdout size. With tens of thousands of eligible customers, a 10% to 20% holdout is enough. With a few hundred to a couple of thousand, use 30% to 50%, because a tiny holdout makes the whole test noisy.

  • Test length. Run for at least 60 to 90 days, or one natural repurchase cycle for your products, so slow buyers have time to come back.

  • Repeat the test. Run the same split on two or three campaigns and add the results together. Pooled tests give a clearer answer than one big guess.

  • When you're too small. If each group would have only a few hundred customers, you can still run a holdout, but treat the result as a direction, not proof. Prefer cheap offers while you learn, since the downside of being wrong is smaller.

Where Shopify Rollouts Fits, and Where a Customer Holdout Fits

Shopify Rollouts and a customer holdout answer different questions. Rollouts compares storefront visitors over days or weeks, while a customer holdout follows known customers over months.

Since October 2, 2026, Shopify Rollouts can include discounts, and an experiment can split store traffic between a treatment and a control. According to Shopify's rollout analytics documentation, visitors are assigned by a browser cookie, so the same person on a new device can land in a different group. Experiment results focus on conversion metrics, discount-specific metrics aren't available, Shopify POS and headless storefronts aren't included, and experiments require the Grow plan or higher.

That makes Rollouts a good fit for testing a Shopify discount with Rollouts on the storefront, such as which BFCM offer converts better this week. A Q1 retention offer is different. It goes to named customers by email, the second order can happen on any device or channel, and the result you care about is repeat purchases and margin over 60 to 90 days. For that, a tag-based customer holdout is the better tool.

Where DiscountRay Fits, and Where It Doesn't

DiscountRay, a Shopify discount app by EFOLI, can run the offer for your exposed group. It doesn't measure the result. Shopify data and your spreadsheet or analytics tool do that part.

Here's where it helps in this method:

  • Offers for one tag only. On the Growth plan, DiscountRay supports pricing by customer tag, so you can limit the offer to customers tagged q1-26-offer.

  • Codes that can't leak. Personalized single-use codes are tied to one customer: the buyer's email must match, and the code works once. That keeps holdout customers from using a shared code.

  • Fixed dates. You can schedule the offer's start and end dates, so the window is the same for every exposed customer.

  • Richer conditions. On the Pro plan, personalized discounts by tag or customer list can also use cart value, country, and order history, with a fixed amount, percentage, free shipping, or free gift as the reward.

And here's what it doesn't do: it doesn't split customers into groups, calculate lift, or report incremental revenue. It's not an experimentation tool, so read your results from Shopify segments and the orders export. Growth is $14 a month and Pro is $29 a month, both with a 14-day free trial, as listed on DiscountRay's pricing page.

Who You Should Never Put in a Holdout

Only hold out customers from offers that are optional. If a customer is owed something, giving it to them matters more than a clean test.

  • Customers owed service recovery. Someone whose order arrived late or broken should get the fix you'd normally give.

  • B2B accounts with agreed pricing. Contract or price-list terms aren't a test variable.

  • Promised rewards. If you advertised a reward, such as a loyalty perk or a "second order discount" printed in the box, everyone who qualifies gets it.

Common Mistakes

Hand-picking the holdout. If you hold back "less engaged" customers, the holdout will look worse no matter what, and the offer will look better than it is.

Comparing redeemers with non-redeemers. People who redeem were already more interested. Always compare the whole exposed group with the whole holdout.

Letting codes leak. A public or shareable code can reach holdout customers through coupon sites. Use customer-locked codes and watch for discount code sharing.

Changing the offer mid-test. Raising the discount after two slow weeks turns one test into two half-tests.

Stopping at the first good week. Early results swing a lot. Decide the end date before you start and keep it.

Reading totals instead of rates. The exposed group is bigger, so it will always have more orders. Compare per customer.

Forgetting refunds and the post-offer period. A returned second order isn't a repeat purchase, and a January win can turn into an April dip in full-price orders.

Turning the Result Into Your Next Q1 Decision

Use the result to change one thing at a time. Compare the lift with your break-even lift, then look at how wide the range is.

What you found

What to do next

Lift is above break-even and the range stays above zero

Keep the offer. Roll it out to a larger share and keep a small holdout.

Lift is above break-even, but the range includes zero

Repeat the test with a bigger holdout before scaling.

Lift is positive but below break-even

Make the offer cheaper, such as free shipping instead of $10, or narrow it to less likely returners.

No lift

Stop the offer. Keep sending the message without the discount.

The goal is a lower cost per incremental repeat customer over time. That number is also the fairest way to weigh a targeted offer against a points program, because it compares the cost per extra repeat order instead of the number of rewards handed out.

Conclusion

A retention offer earns its place only if it brings back customers who wouldn't have returned on their own, at a cost the extra margin can cover. Redemptions can't show you that. A random holdout group can.

To measure incremental revenue from your Q1 offer, work out the break-even lift before you send, split your eligible customers at random, give the offer to one side, and compare the Holdout Scorecard for both groups after 60 to 90 days. Do it once in January, repeat it in spring, and every Q1 offer after that will be built on what actually worked.

How do I know if a discount caused a repeat purchase?
Compare customers who got the discount with a random group of similar customers who didn't. If the discount group bought again at a higher rate over the same period, the difference is what the discount caused. Redemption counts alone can't tell you this, because they include customers who would have bought anyway.
What is a holdout group in ecommerce?
A holdout group is a random set of eligible customers who don't receive a campaign or offer. Their results show what would have happened without it. Comparing the holdout with the customers who got the offer shows the offer's incremental effect on orders, revenue, and margin.
How big should a holdout group be?
It depends on how many customers you have and how big a lift you expect. Large lists can use a 10% to 20% holdout. Smaller lists of a few hundred to a couple of thousand customers should hold out 30% to 50%. Detecting a two-point lift from an 8% baseline needs about 3,200 customers per group.
How long should a retention offer test run?
Run it for at least 60 to 90 days, or one natural repurchase cycle for your products. Short tests miss slower buyers and can mistake pulled-forward orders for new ones. Then keep checking full-price repeat orders for 60 to 90 days after the offer ends.
Is redemption rate a good measure of a retention offer?
No. Redemption rate shows how many customers used the offer, not how many bought because of it. A high redemption rate can still lose money if most redeemers would have ordered anyway, and it misses customers who came back at full price after seeing the offer.
If my email tool attributes revenue to a win-back campaign, how much was incremental?
You can't tell from attributed revenue alone. Attribution counts orders that followed a message, including ones that would have happened anyway. To find the incremental share, hold out a random group from the campaign and compare their purchase rate and revenue per customer with the group that received it.
Can I measure incremental revenue without an analytics app?
Yes. Build a customer segment in Shopify, split it at random in a spreadsheet, tag each group, and send the offer to one tag. At the end, use segments to count repeat customers in each group and an orders export to total revenue, discounts, and refunds per group.
Can Shopify Rollouts test retention offers?
Partly. Rollouts experiments can compare discounts on the online store, but they split visitors by browser cookie and report conversion metrics. They don't track known customers across devices over months or show discount-specific revenue. For a Q1 retention offer sent to named customers, a tag-based holdout works better.
Does DiscountRay measure incremental revenue?
No. DiscountRay runs the offer, for example a discount limited to one customer tag or single-use codes tied to each customer's email. It doesn't split customers into groups or calculate lift. Measure the result with Shopify segments, an orders export, and a spreadsheet or your analytics tool.
Syeda Rehnoma Tanzom

Syeda Rehnoma Tanzom

This article is written by Syeda Rehnoma Tanzom, an SEO content writer with 3+ years of experience specializing in eCommerce content. What makes the work here a little different? A close collaboration with support teams to understand what merchants are actually going through, their frustrations, their questions, and their wins. The goal is simple: write content that speaks to real problems, not just search engines. When not buried in keywords and content briefs, you'll find her nose-deep in a good book, binge-watching true crime documentaries or psychological thrillers, and occasionally switching gears with a feel-good rom-com.

This article was reviewed by the DiscountRay Technical Support Team, who regularly helps Shopify merchants test discount setup, customer eligibility, cart behavior, and checkout-related discount issues.

Share

Put your discounts on autopilot

Install DiscountRay from the Shopify App Store and set up your first discount in minutes.

Install on Shopify — Shopify App Store

14-day free trial · 30-day money-back guarantee

How to Measure Incremental Revenue From Retention Offers — DiscountRay