You spent weeks tuning your ad creative and negotiating your COGS. Then a browser extension gave away 15% of your revenue in one click, and you never even saw it happen.
What’s in This Article
Promo code abuse costs merchants an estimated $89 billion a year globally. Most Aussie founders think of this as a big-retailer problem. It is not. The moment your store crosses roughly $40k a month, your codes are valuable enough to scrape, share and stack, and there is an entire ecosystem built to do exactly that.
Here is the uncomfortable part: every leaked code was created by you. The influencer code that ended up on a deal forum, the welcome code that an extension now auto-applies to every checkout, the support code your team hands out like confetti. A discount code is a pricing decision, and right now strangers are making that decision for you. This playbook gives you the 5-layer defence we work through with eCommerce Circle members to take it back.
How Discount Codes Actually Escape (The Four Leak Paths)
You cannot defend what you do not understand, so start with how codes get out. There are four paths, and most stores are leaking through all of them at once.
- Coupon browser extensions. Honey built a business on roughly 20 million users by scraping and auto-applying codes at checkout. A 2025 investigation found around 146,700 stores sitting in Honey’s database with no affiliate partnership at all, their private codes harvested and served to anyone. PayPal paid $4 billion for that machine.
- Deal sites and forums. In Australia this means OzBargain, which pulls over 32 million visits a month with average sessions over nine minutes. A code posted there at 7pm can drive hundreds of discounted orders before you wake up.
- Affiliate hijacking. The December 2024 MegaLag investigation showed Honey swapping its own affiliate tag in at the last click, taking commission for sales it did not create. The fallout was big enough that Google changed its Chrome Web Store rules in March 2025 to ban extensions claiming commissions without providing a real discount. The pattern survives in plenty of smaller extensions.
- Human sharing. Influencer codes, ambassador codes, support recovery codes and staff discounts all spread through group chats and screenshots. No tooling involved, just goodwill turning into a public price cut.
None of these paths are exotic. They are the default state of the internet. Which means the question is not whether your codes leak, it is whether you have a system that limits the damage when they do.

The Real Cost of a Leaked Code (Run This Maths on Your Store)
Before the defence layers, do the maths once for your own store, because the number is always bigger than founders expect. Say you run a $120k-a-month store at a 60% gross margin, and a leaked 15% code is being auto-applied or pasted onto 20% of orders that would have happened anyway. That is $24k of monthly revenue taking an unearned haircut, which works out to $3,600 a month in margin, or about $43k a year, handed to people who were already at your checkout with their card out.
Notice what makes this insidious: nothing in your topline flags it. Revenue grows, conversion rate actually improves a touch (discounts do that), and the only trace is a contribution margin that keeps coming in 2 to 3 points under forecast. Most founders hunt for the cause in shipping costs or ad efficiency. The codes are quieter than both.
There is also a second-order cost. Every unearned discount trains a repeat customer to expect that price, and repeat buyers redeem codes at a far higher rate than first-timers because they know where to look. Leak long enough and you have not just lost margin on past orders, you have repriced your brand for your best customers. That is the real reason this sits in the Protection pillar and not just the Profit column.
Layer 1: Fix Your Discount Architecture (Unique Codes Beat Static Codes)
Almost every leak traces back to one root cause: static codes. WELCOME10 works for everyone, forever, with no identity attached. Once it escapes, it is a permanent sitewide sale you never announced. Unique codes flip that. Each customer gets a one-time code tied to them, so a leaked code is a dead code.
If you run Klaviyo, this is already built in and most founders simply have not switched it on. Here is the setup:
- In Klaviyo go to Coupons, create a new Shopify coupon and choose unique codes with a prefix like WELCOME (Klaviyo generates WELCOME-X7K2M style codes on demand).
- Set the discount value, a 14-day expiry from generation, a one-use-per-customer limit, and a minimum spend that protects your contribution margin on low-AOV orders.
- Drop the coupon block into your welcome flow and abandoned checkout flow emails so each send pulls a fresh code.
- Archive the old static WELCOME10 in Shopify the same day. A unique-code system with a live static backdoor is not a system.
Keep static codes only where identity genuinely does not matter: a launch-day code you want shared, or a code printed on packaging inserts. Treat those as marketing spend with a known blast radius, and give every one of them an expiry date when you create it. We covered the discounting side of big promotional moments in the flash sale playbook; the same rule applies here, codes without end dates are liabilities, not assets.
Layer 2: Block Coupon Extensions at the Checkout
Unique codes starve the extensions of reusable ammunition, but extensions still scrape whatever static codes remain, and they still inject themselves into your checkout experience. This layer is about cutting them off at the point of sale.
Purpose-built Shopify apps now handle this. KeepCart blocks Honey, Capital One Shopping and over 125 other coupon extensions from auto-applying codes, and tells you which sites your codes have leaked to. cleanCART does similar work with a strong analytics dashboard showing leakage to deal sites like RetailMeNot. Setup for KeepCart takes about ten minutes:
- Install KeepCart from the Shopify App Store and enable extension blocking on the checkout.
- Turn on leak alerts so you get an email when one of your codes shows up on a coupon site.
- Review the blocked-attempts report weekly for the first month. This number is your first honest look at how much auto-applied discounting was happening without your consent.
One nuance worth getting right: 46% of shoppers abandon a cart when a discount code fails to apply, and around 90% of consumers use coupons in some form. Blocking an extension should never read as “computer says no” to the customer. The better pattern is to suppress the extension and show your own offer in the same moment, a small opt-in incentive you control. The shopper still feels like they won, but on your terms and at your discount depth.

Layer 3: Contain the Deal-Site Spread (You Cannot Delete an OzBargain Thread)
Here is what most founders learn the hard way: once a code hits OzBargain, it is public information. The community is fast, well organised and frankly better at testing your codes than your own QA process. You will not get the thread taken down, and trying usually makes the thread more popular. Containment, not deletion, is the goal.
- Monitor before you are surprised. Set a Google Alert for your brand name plus “code” and “discount”, and search site:ozbargain.com.au with your brand name every Friday. Leak alerts from KeepCart or cleanCART cover the extension side automatically.
- Cap every code at creation. In Shopify, set a total usage limit on any static code the moment you make it. A code capped at 200 redemptions is a contained incident. An uncapped code is an open-ended liability.
- Scope codes to segments. Shopify lets you limit a discount to specific customer segments, so a winback code only works for lapsed customers and a VIP code only works for tagged VIPs. A leaked code that does not work for the general public dies in the comments within an hour, usually with a string of “code not working” replies that kill the thread for you.
- Decide your seeding position. Some Aussie brands deliberately post their own deal at a depth they can afford, once or twice a year. That is a legitimate acquisition play if your unit economics survive it. The point is that it should be a decision you make on purpose, not something the crowd does to you.
And when a leak does land, run the first 24 hours like an incident. Hour one: check the code’s redemption count in Shopify so you know the bleed rate, then decide whether to cap it, reduce it or kill it. Killing a code mid-thread annoys a few hundred bargain hunters and that is fine; they were never your customers at full price. Hour two: if the code was customer-facing (a welcome or VIP code), replace it with a fresh unique-code setup so legitimate recipients are not punished. Day one: write down how it escaped and close that path. Brands that treat leaks as incidents get faster each time. Brands that treat them as bad luck get the same leak quarterly.
Layer 4: Kill Code Stacking and Attribution Theft
Leaks bleed you one order at a time. Stacking and attribution theft bleed you structurally, because they corrupt both your discount depth and your marketing data at the same time.
Start with stacking. Shopify’s discount combinations setting decides whether product, order and shipping discounts can be used together. Audit it today: open each active discount and check what it is allowed to combine with. The common failure mode is a free-shipping code combining with a percentage code, which quietly pushes your real discount depth past 25% on exactly the orders that were already marginal. As a benchmark, if your blended discount depth across all discounted orders is creeping past 15 to 18%, stacking is usually part of the story.
Then attribution. If you run an affiliate or partner programme, the Honey episode is your case study: last-click attribution means an extension that does nothing but exist at checkout can claim commission on a sale your Meta ads and email flows actually built. Two fixes. First, pay affiliates on coupon code redemptions or first-click referrals rather than raw last-click. Second, pull a report of commission payouts by partner each month and look for partners whose “referrals” have suspiciously normal AOV and zero new-customer share. Those are toll collectors, not traffic sources. The same forensic instinct you would apply to chargeback defence applies to your partner payouts.

Layer 5: Put the Leak on a Dashboard (What Gets Measured Gets Defended)
Discount leakage persists because it hides inside a number that looks healthy: revenue. Orders still come in, the topline still grows, and the bleed only shows up in contribution margin three months later. So make it visible. Four numbers, reviewed monthly, ideally on the same dashboard as your ad metrics:
- Discount penetration. The percentage of orders using any code. For most DTC brands outside sale periods, 25 to 35% is workable. North of 50% means discounts have stopped being a tool and become your price.
- Average discount depth. Total discount dollars divided by discounted-order revenue. Watch the trend, not the absolute number. Creep here is the signature of stacking and leaked codes.
- Code source integrity. Of redemptions on each code, what share came from the channel it was made for? If your “email exclusive” was redeemed 600 times but only 180 redeemers clicked an email, you are looking at a leak with a paper trail.
- Blocked extension attempts. Straight from KeepCart or cleanCART. This is your counterfactual, the discounting that would have happened without the defence.
Pull the first three from Shopify’s discount reports under Analytics, or query sales by discount code in a ShopifyQL report. Twenty minutes a month. That is the entire cost of never being surprised by your own pricing again.
The Compound Effect: Codes Go Back to Being a Targeting Instrument
Run these five layers together and something bigger happens than saved percentage points. Unique codes mean a discount reaches exactly the person you chose, for the reason you chose. Extension blocking means checkout is your environment again. Containment means a leak is an incident with a cap, not a permanent repricing. Clean attribution means your CAC numbers describe reality. And the dashboard means you see drift in weeks instead of quarters.
That changes what a discount is. Instead of a public price cut anyone can claim, it becomes what it was always meant to be: a precise, deliberate nudge aimed at one segment, with a known cost and a measurable return. Brands that get here discount less in total and convert better on every discount they run. The ones that do not end up training the entire market, and the OzBargain comment section, to never pay full price. The same compounding logic runs through return abuse defence: each layer is useful alone, but the system is what protects the P&L.
The Code Leak Audit: 10 Checks to Run This Week
Here is the takeaway. Block out 90 minutes, open your Shopify admin, and work through this audit. Score yourself one point per check you pass.
- Every active discount code has an expiry date set.
- Every static code has a total usage cap.
- Welcome and abandoned checkout flows use unique codes, not a shared static code.
- The legacy WELCOME10-style codes from old campaigns are archived, not paused.
- An extension blocker (KeepCart or cleanCART) is installed and active on checkout.
- Leak alerts are switched on and going to an inbox someone actually reads.
- You have searched OzBargain and Google for your brand plus “code” in the last 30 days.
- VIP, winback and influencer codes are scoped to customer segments where possible.
- Discount combination settings have been reviewed on every active discount.
- Discount penetration and average depth are on a dashboard you look at monthly.
Seven or better and your discounting is defended. Four to six, you are leaking but fixable inside a fortnight. Three or under, your discount strategy is currently being run by browser extensions and a forum, and this audit is the highest-ROI 90 minutes available to you this month.
Protect the Price You Set
Discounting is not the enemy. Uncontrolled discounting is. The brands we see scale past $100k a month all treat their codes the way they treat their ad budget: deliberately allocated, measured, and defended. The ones that stall usually have a generous, invisible discount programme they never agreed to run.
Inside eCommerce Circle, Protection is one of the ten P’s we work on with every member, and discount leakage is one of the first places we look when margins do not match revenue growth. If you want a second opinion on yours, let’s talk.



