Discounts

Offer Fatigue Is Real: What Happens to Conversion After a Visitor's Third Promotion

Muhammed Tüfekyapan By Muhammed Tüfekyapan
13 min read
Offer Fatigue Is Real: What Happens to Conversion After a Visitor's Third Promotion

The fourth promotion of the quarter gets approved on the strength of one number. Offer three converted at 4.1%. Offer one converted at 4.0%. Nothing dropped, so nothing gets questioned. Here is what that number does not carry. Across the nine quiet weeks between those promotions, full-price conversion slid from 2.6% to 1.9%. The store earned less on its ordinary days than it did last year, on more traffic.

That is why offer fatigue almost never gets caught. Every promotion reports on itself, and the report looks fine. Response rate holds. Revenue spikes on cue. Somebody marks the campaign a success. Nothing in that workflow asks what happened in the weeks nobody was watching. A steady response rate on your third offer is not proof the offers work. It is the clearest fatigue signal you have. Each round filters your audience down to the people who only buy on discount. The damage lands on your full-price weeks, and no promotion report is built to show it.

By the end of this you will have two things. A four-cell count that shows how many of your own customers moved from paying full price to waiting for a code. And a way to set your cooldown against a number instead of a calendar. Start with the metric that has been reassuring you.

A Steady Response Rate on Offer Three Is Evidence of Fatigue, Not Evidence Against It

Promo response rate only measures the people still answering. By offer three, that group is mostly the same people who answered offers one and two. So the rate can hold steady while the group behind it shrinks and leans harder on a code. Those two facts do not conflict. They usually travel together, and one causes the other.

What the Response Rate Is Really Measuring

By the third offer, the group still opening, clicking, and buying has been filtered three times for one trait. Willingness to buy on discount. That is not a sample of your customers. That is your discount-responsive core, and a core like that answers reliably. So the 4.1% is honest and useless at the same time. It tells you that people who buy on discount buy on discount. It cannot tell you whether the people who used to buy without a code are still buying. Those people already dropped out of the group you are watching. A number that only reports on the group it created will always vote to keep the program running.

The Measurement Swap

Stop scoring a promotion on promo-week revenue. Start scoring it on what the next four weeks earn. Pull three numbers for the quiet stretch after each promotion. Full-price conversion rate. Revenue per visitor. Share of orders placed with no code at all. Then line those stretches up in order, oldest first. If promo response is flat while the quiet-week line steps down, you have your answer. It took one report to get it. Most stores have never put those two lines on the same chart. That is why the argument about discounting is still an argument.

If your promotions keep getting more reliable while your quiet weeks keep getting weaker, that is not two trends. That is one trend, reported twice, and only half of it reaches your inbox.

Build the Fatigue Square and Count the Customers Your Promotions Moved

The case for promotional discounting is simple. You give up margin now to buy a customer who pays full price later. That claim is countable. Almost nobody counts it. Here is the count, and it fits in four cells. Call it the Fatigue Square.

How to Build the Fatigue Square in Ten Minutes

  1. Export 90 days of orders: pull them from Shopify admin and keep only customers with two or more lifetime orders.
  2. Record two yes-or-no answers per customer: was there a discount code on their first order in that window, and was there one on their most recent order.
  3. Sort everyone into four buckets: full price to full price, full price to discounted, discounted to full price, discounted to discounted.

You are not chasing decimals here. You are after the ratio between two specific cells. Stretch the window to 180 days if your repurchase cycle is slow. And leave out free-shipping-threshold codes if you run them, because those measure basket building, not price sensitivity.

Reading the Two Cells That Matter

Here is a worked example. These are illustrative numbers, not survey data. Picture a fashion store doing about $28K a month, with 640 repeat customers in a 90-day window.

First order Most recent order Customers What it means
Full price Full price 148 (23%) Your real full-price base. Also the group your promotions keep recruiting from.
Full price Discounted 226 (35%) Customers who used to pay full price and now wait for a code.
Discounted Full price 71 (11%) Bought with a code, kept at full price. This is what discounting is supposed to do.
Discounted Discounted 195 (30%) Bought on discount, still on discount, never once tested at full price.

The damage cell is 3.2 times the cell that justifies the whole program. That is the whole case, in one ratio, out of the store's own export. It also explains the thing this owner already felt and could not prove. Of 640 repeat customers, 421 placed their most recent order with a code attached.

The Fatigue Square asks two questions. How many customers moved from discount to full price? How many moved from full price to discount? The first cell is the reason you promote. The second is the bill. If the bill is three times the reason, the program is running backwards.

Fatigue Runs on a Per-Visitor Clock, Not on Your Promo Calendar

You think in campaigns. Four sales in a quarter feels restrained. Your customer never experiences a quarter. She experiences a number: how many offers she has personally seen. Two people shopping your store this afternoon can be sitting on exposure one and exposure six. A calendar cannot tell them apart. Fatigue only builds on the second one.

The Exposure Count Nobody Tracks

Run the math on your best customers, because they take the most damage. Say your median repurchase interval is 47 days and you promote every 21. Then every purchase decision your repeat customers make happens inside a promo window. They have not paid full price because they chose to. They were never asked to. You hold zero full-price readings on the customers you most want to keep. You built that blind spot yourself, with a calendar that looked disciplined on a whiteboard. Compare two numbers you already have. Your promo interval, and your median days between orders. If the first is smaller than the second, cell two of your Fatigue Square keeps growing.

What a Cooldown Actually Protects

A cooldown gets described as restraint, which makes it sound like doing less. It is doing something specific. It reserves at least one purchase decision per customer with no offer on the screen. That is your only reading on what the store is worth without a code. Without it you cannot tell a healthy customer from a discount-dependent one. And you cannot price anything this fall with real confidence. A cooldown is a measuring tool as much as a margin control.

How they differ Store-level promo calendar Visitor-level offer clock
Unit of control Weeks between campaigns. Offers seen by one person.
What a new visitor gets The same offer everyone else sees. Exposure one, whatever your calendar says.
What a frequent visitor gets An offer available almost every visit. A cooldown before anything can appear again.
What resets the counter The next date, for the whole list at once. That person's own cooldown, counted from their last offer.
Failure mode Your best customers hit the highest exposure counts. Needs per-session behavior data to run.
What it leaves you Promo-week revenue and no full-price reading. At least one full-price decision per customer to measure.

That right column is what an exposure cap looks like when something enforces it. Growth Suite fires an offer only after live signals say the visitor is likely to leave without buying. Then it locks that person out of another offer for a cooldown you set. Dedicated buyers, the ones reading reviews and moving toward checkout, never enter the offer pool at all. Behavioral rules add the conditions that matter for fatigue. Whether this person added to cart last visit without checking out. Whether they are returning after two or more days. What the shopper actually did decides the exposure, not which week it happens to be.

Leave 10% of Your Traffic Alone for 60 Days and It Will Name Your Limit

Your limit is not in this article. It is specific to your store. The Fatigue Square tells you the flow is running the wrong way. It does not tell you where your line sits. Only one thing does. Stop touching a slice of your traffic and watch what it does.

The Holdout Design That Survives a Quarter

Hold back 10% of your low-intent traffic from receiving any offer for 60 days. Leave high-intent visitors alone in both arms, since they were never the question. Then compare three things across the two groups. Revenue per visitor. Share of orders placed without a code. Repeat purchase rate. Sixty days is about the minimum honest window. It also has to sit outside a seasonal peak to mean anything at all.

How to Score It Without Fooling Yourself

The offered arm will win on raw conversion rate. Expect that. It is not the finding, and scoring on conversion is how stores talk themselves into another year of this. Two questions are the finding. Does the offered arm's extra revenue survive the discount cost? Does the holdout arm's full-price share recover over the window? If the holdout recovers and the revenue gap is thin, you found your line. That is the point where your offers stopped buying new orders and started buying the same orders cheaper. Run the Fatigue Square on both arms at day 60 and watch the migration slow in the group you left alone.

A holdout is a test design, so it needs something that can split traffic and report cleanly. Growth Suite splits traffic across offer versions by discount depth, length, and the share of visitors each version reaches. It scores them on conversion rate, AOV, or total revenue. Cooldown length becomes a variable you test instead of a number you argue about. The funnel report handles the other half: session start, product view, add to cart, checkout begin, completed order. A shrinking full-price baseline shows up there long before it shows up in your monthly total.

A holdout feels like leaving money on the table for two months. It is the only way to find out how much of that money was already yours.

How Many of Your Customers Used to Pay Full Price?

A steady response rate on offer three is not a health check. It is the sound of your audience getting narrower. Each round filters people toward dependence on a code, so the rate holds while the full-price base underneath it drains. The damage lands on the quiet weeks. That is why you score a promotion on what the four weeks after it earn, not on the week itself. The Fatigue Square puts the whole thing in four numbers. If more customers moved from full price to discount than moved the other way, the program is running backwards.

Run it before Friday. Export 90 days of orders, keep the repeat customers, and sort them by whether a code showed up on the first order and on the last one. Then set two numbers side by side. Full price then discounted, against discounted then full price. Skip the decimals. You only need the ratio. Whatever it turns out to be, it is the most honest thing your store has told you all quarter.

If your promo weeks keep looking fine while your full-price weeks keep getting thinner, Growth Suite helps you tell walk-away customers apart from dedicated buyers. It caps how many offers one person can see, and holds a cooldown before another one can appear. So your full-price base stays measurable. Your best customers still get asked to buy at full price sometimes. And the shoppers who were already going to buy never see a discount at all. It is free to install on the Shopify App Store, with a 14-day free trial.

Frequently Asked Questions

How do I measure offer fatigue if my promo response rate looks fine?

Stop scoring the promotion and start scoring the weeks after it. For each of your last four promotions, pull full-price conversion rate, revenue per visitor, and the share of orders placed with no code. Use the four quiet weeks that followed. Line those stretches up oldest to newest. A flat promo response next to a stepping-down quiet-week line is your signal. The promotion report cannot show it, because it only reports on the group your promotions created.

How do I know if my customers are only buying on sale?

Count it straight from a 90-day order export. Take your repeat customers. Note whether a discount code appeared on their first order and on their most recent one, then sort them into four groups. The group you care about is the one that started at full price and now buys only with a code. In most stores it runs several times larger than the group that started on discount and moved to full price. That gap is the answer.

How many offers can one visitor see before it costs me full-price revenue?

Treat the limit as a count per person, not a monthly promo quota. You have crossed it once every purchase decision a customer makes lands inside a promo window. At that point you hold no full-price reading on them at all. Compare your promo interval to your median days between repeat orders. Promote every 21 days to customers who repurchase every 47, and that is exactly where you are. Most stores find their threshold between the second and fourth exposure.

Does conversion rate drop after too many discounts?

Promotional conversion rate usually does not, and that is what makes this so hard to catch. Each round of offers filters your responders toward people who buy only on discount, so the rate holds while the population behind it narrows. The decline shows up somewhere else. It lands on full-price conversion in the weeks between promotions, which is the number most promotion reports never include. Pull that number and the picture changes fast.

What is a good cooldown period between offers?

There is no universal number, but the useful starting rule is simple. A visitor should complete at least one purchase decision with no offer in front of them. So anchor the cooldown to your repurchase interval instead of your marketing calendar, then test it. A 60-day holdout on a slice of low-intent traffic will teach you more than any benchmark you read, because it measures your customers rather than somebody else's.

Ready to Implement These Strategies?

Start applying these insights to your Shopify store with Growth Suite. It takes less than 60 seconds to launch your first campaign.

Muhammed Tüfekyapan

Muhammed Tüfekyapan

Founder of Growth Suite

Muhammed Tüfekyapan is a growth marketing expert and the founder of Growth Suite, an AI-powered Shopify app trusted by over 300 stores across 40+ countries. With a career in data-driven e-commerce optimization that began in 2012, he has established himself as a leading authority in the field.

In 2015, Muhammed authored the influential book, "Introduction to Growth Hacking," distilling his early insights into actionable strategies for business growth. His hands-on experience includes consulting for over 100 companies across more than 10 sectors, where he consistently helped brands achieve significant improvements in conversion rates and revenue. This deep understanding of the challenges facing Shopify merchants inspired him to found Growth Suite, a solution dedicated to converting hesitant browsers into buyers through personalized, smart offers. Muhammed's work is driven by a passion for empowering entrepreneurs with the data and tools needed to thrive in the competitive world of e-commerce.

More Insights from Our Blog

Continue reading for more expert tips and strategies to grow your Shopify store

Free Conversion Audit

Request Free Audit