Is your first-order discount reaching new customers, or everyone?

Your welcome code also reaches returning customers, code sites and extensions. Why Shopify lets it, what it costs per new customer, and what to change.

Author:Benson
DiscountingUpdated 12 October 202614 min read
Jump to a section

In short

Not only to new customers. Shopify's "Limit to one use per customer" tracks an email address or phone number, so a new address gets the code again; segment rules miss first-time buyers without a profile; and a code shown on screen spreads to coupon sites and extensions. Work out the cost per genuinely new customer, email unique codes instead of showing one, and test the offer with a holdout.

The welcome flow report looks healthy: plenty of sign-ups last month, and a good share of them ordered with the welcome code. Finance divides the discount by those first orders and puts the result in the board pack as your cost per new customer.

Then you open the orders behind it. One welcome-code order ships to a flat that has had three full-price orders this year, under a different email. Another comes in a cent over the code's minimum spend, the fourth like it to that postcode this month. A third used an email that never went through your sign-up form.

None of those is a new customer, and all three are in the number finance just divided by.

This guide is about where a first-order discount actually goes: how it reaches returning customers, code sites and coupon extensions, what that does to the cost of a genuinely new customer, and what you can change on Shopify and other platforms. It's one part of a wider decision, how much to discount and who should get it.

Who ends up using your first-order discount?#

Anyone who reaches checkout with an email address or phone number your store hasn't seen, and anyone who finds the code where it's been posted. It gets there in three ways.

A second email address. Shopify's "Limit to one use per customer" setting tracks a customer's email address or phone number, so a new address is a new customer as far as the code is concerned. Coupon sites tell shoppers so. SimplyCodes, a coupon site and browser extension, says a new email address gets you a second single-use code [SimplyCodes, Sep 2021] (opens the source), and CouponFollow lists "multiple email addresses" among its tips for collecting welcome codes [CouponFollow, May 2022] (opens the source).

Code sites. A code shown on screen is one shared code, and shared codes get copied. Daily Cashback, a US cashback site, keeps a master list of sign-up offers it says covers over 100 US retailers, typically 10% to 25% off a first purchase, and tells shoppers they can unsubscribe once the code is used [Daily Cashback (author Alex Carter), Jun 2026] (opens the source). SimplyCodes lists new-customer codes for online stores such as Mack Weldon and Dermstore, and in its data the typical one is deeper than a regular code, though the averages are almost level.

20% vs 15%

median discount on new-customer codes against other codes, across 30 days of percentage-off codes copied on SimplyCodes, which lists over 3.6 million working codes.

SimplyCodes (author Sean Fisher), Apr 2026(opens the source)

SimplyCodes earns a commission when shoppers buy through its links, so read that as a coupon site describing its own stock. The direction is the point: the code you price for acquisition is usually deeper than your everyday codes, which makes it worth posting.

Coupon extensions. Extensions collect codes as shoppers type them, then try them at checkout for everyone else who runs the extension. Anyday's founder told Modern Retail that codes still get picked up by Honey after the brand limits redemptions in Shopify, and that a shopper who converts on a leaked code is worth less than one who signs up for the email to get the welcome offer [Modern Retail, May 2024] (opens the source).

Why don't Shopify's settings keep it to new customers?#

Because each one checks an identity the shopper controls, or one a first-time buyer doesn't have yet.

Limit to one use per customer, under Maximum discount uses, counts uses per email address or phone number, so a new one gets the code again. Deleting the discount and recreating it lets everyone who used it redeem it once more, though deactivating or renaming it doesn't reset the history.

Customer segments, under Eligibility, can limit the code to people who have never ordered. Shopify's own example for that segment is this query, typed into the segment editor:

number_of_orders = 0

The catch, from Shopify's FAQ: a segment discount applies only to existing customer profiles, so a first-time buyer without one isn't in the segment until after their first order. It works only if your sign-up form creates a customer profile first, and then a returning customer who signs up with a new email lands in the segment too.

Limit number of times this discount can be used in total caps everyone, including the new customers you wanted. Minimum purchase amount sets the floor repeat sign-ups aim for. Sales channel access doesn't narrow it either: a code can be redeemed on every sales channel, and that setting only decides where it's featured.

A Discount Function is the supported way to say no at checkout: since 17 December 2025, one can reject a code the shopper entered, with a message. The catches: rejection works only when the function backs an automatic discount, custom apps with functions need Shopify Plus (public apps run on any plan), and the function sees the buyer's customer record only when they're signed in. A guest on a new email arrives with no history to check.

Flow can't fix that: it runs after the order is created, so it can cancel or refund an order, not refuse the code.

Other platforms work the same way. On WooCommerce, a new-customers-only rule needs an extension such as the paid Coupon Restrictions, whose docs recommend turning off guest checkout. Adobe Commerce's "Uses per Customer" doesn't apply to guests who aren't logged in.

What does a leaked welcome code cost?#

More per genuinely new customer than your report says, and the gap lands on margin, on the acquisition cost finance uses and on your email list.

Nobody publishes the share of welcome-code redemptions from people who aren't new; we looked. In the one dataset the discount strategy guide cites, from 176 Australian brands, discounted orders skewed heavily to returning customers, so work the sum with your own share.

The cost doesn't stop at the order. A returning customer on a new email counts as new in your reports, so repeat rate falls and acquisition cost looks better than it is. Your list fills with addresses made for one order. Commission on top is the double cost the partnership guide covers, and a welcome code set to combine lands on sale prices too; how Shopify discount combinations work shows where to look.

Isn't it still a cheap way to win a customer?#

Often it is, which is why the fix is to change who gets it rather than drop it. Offers do collect sign-ups.

2.4% vs 1.7%

conversion for email pop-ups with a discount against those without, across 1.24 billion pop-up displays on Omnisend in 2025.

Omnisend, Feb 2026(opens the source)

Omnisend sells pop-ups, so read it as a direction. The objections your team will raise are about what happens after the sign-up.

"A second email takes forty seconds." Near enough, so no setting stops a determined shopper. The aim is narrower: don't print the code where anyone can copy it, make each code worth one order, and keep it out of the sessions where extensions carry it.

"Making people sign in costs conversion." It does, and it's the only way to tie a code to a person rather than an inbox. For most stores a welcome code isn't worth a mandatory account.

"It's still cheaper than paid social." Maybe, at the cost per genuinely new customer, so compare that figure, not the headline one. And judge the offer with a holdout, not a redemption count: in 70 field experiments on emailed discount offers at a large online ticket resale platform, 90% of the extra spend came without the offer being redeemed [Management Science (Sahni, Zou and Chintagunta), Aug 2017] (opens the source).

What can you do about it yourself?#

Each has a catch. Finance should see the number from the first; your email platform owner handles the second and fourth; the fifth needs a developer.

1. Measure the leak. Shopify's order export has a Discount Code column beside each order's email, phone and shipping address. In the welcome-code orders, count those whose address or phone had an earlier order under a different email, and those whose email isn't on your sign-up list. The catch: households, gifts and house moves blur the first count, so treat it as a rough floor. To see what the offer adds, Shopify's Rollouts (2 October 2026) can send an offer to a portion of online store traffic and compare conversion; the holdout guide covers sizing.

2. Email the code instead of showing it. Let the pop-up collect the address and send a unique, single-use code. Klaviyo, for example, generates unique Shopify codes for sign-up forms from a pre-made pool. In Seguno's study of 65,055 newsletters from Shopify brands selling in US dollars (May 2024 to May 2025), generic codes were still nearly three times as common as unique ones [Seguno, Aug 2025] (opens the source) (Seguno sells unique-code tools). The shared, unique and single-use codes guide covers each channel. The catch: a new inbox still gets a new code, as the store in the first section found, and Klaviyo's forms take a static fallback coupon for when the pool runs out, which is a shared code again.

In the EU it can change the rules too: Commission guidance treats a code offered to potentially all shoppers as an announced price reduction under the 30-day prior-price rule, while a genuinely personalised reduction falls outside that rule, though not outside unfair-practices law [European Commission, Dec 2021] (opens the source). A sign-up offer advertised to every visitor may still count as announced, however the code is delivered.

3. Restrict eligibility where profiles exist. Use the segment above with Limit to one use per customer. The catch: buyers without a profile can't use it, and a returning customer on a new email who signs up can.

4. Set a minimum spend and an end date. In Seguno's 2026 benchmark of 6,099 unique-code sets, amount-off codes with a minimum spend averaged orders 2.6 times larger than those without [Seguno, Jun 2026] (opens the source). An end date on each emailed code stops it working for months after it's posted. The catch: repeat sign-ups learn the minimum and order just over it, and a code can pull a basket under your free shipping line, which the free shipping threshold guide works through.

5. Check history at checkout. A Discount Function can refuse the welcome code when a signed-in customer has ordered before. The catch: a custom app needs Plus and a developer, and guests have no history to check.

6. Offer something other than money off. A gift or free shipping on the first order is a smaller prize to post on a code site than a percentage off everything. The catch: it still has to know the order is a first order, and it may collect fewer sign-ups, so test it against your current offer first.

7. Cancel after the fact. Shopify Flow can tag or cancel repeat welcome orders. The catch: it acts once the order exists, so every catch is a refund and a support conversation.

How Benson handles the welcome offer#

Benson works where a welcome code gets out: the page that shows it, and the extension sessions that carry it to checkout.

Show the offer to the visitors it's for. On Own, your discount widget shows verified codes that apply in one tap. The New vs returning condition shows it to first-time visitors (with analytics consent, Benson knows whether a browser has been before; without it, you choose how to treat the visitor), and the Coupon extension condition puts your offer in front of extension shoppers first.

Ask for the email before the code shows. Set Unlock the codes to Email and the codes show only after an email sign-up, with your consent line beside the checkbox. They're never in your store's public config, so nobody can copy them from the page before signing up, and they can go into the cart automatically. Every sign-up sees the same campaign codes, so a second email unlocks them again. Sign-ups land in Benson's subscriber list, which you can export; on Scale they sync to Klaviyo or Mailchimp.

Own the moment: codes, a campaign, targeting and an A/B test for your own offer.

See where the welcome code is used. On every plan, Benson's Checkout rules page lists your codes with their uses in coupon-extension sessions over the last 30 days. When extensions account for at least half of a code's uses, it suggests taking that code off the allowlist, and code watch on the Value page follows a code once it spreads, showing whether it's contained, replaced, or its replacement is spreading too.

Decide whether it works in extension sessions. On Stop and above, the strict code policy means only codes on your allowlist work in coupon-extension sessions; anything else gets a short, friendly message instead of a discount. Public codes are allowed by default (a code limited to customer segments counts as targeted, so it starts excluded), so the choice is per code: allow the welcome code and everyone who has it keeps it, or exclude it and it works only outside coupon-extension sessions. On Shopify, no app can change what an extension shows inside checkout, so the policy works on the codes, through a Shopify Function in the Benson app. A holdout measures what it's worth.

Sample store
An extension tries a code that isn't on the allowlist, and the shopper sees a friendly message instead. Sample data.

Test the offer itself. On Scale, an A/B test can put two welcome offers against each other, or the widget against none, with a guardrail on discount.

Check what's already out there. The free code check asks the big coupon extensions and voucher sites which of your codes they hold, masked so a shopper can't use them. Run it before you change anything.

See Benson on your store, or start with the own-the-moment playbook. If the welcome code is already on code sites, the leaked-codes playbook covers containing it.

Questions merchants ask

How do I make a Shopify discount code for first-time customers only?
Under Eligibility, choose Customer segments and pick a segment of customers with no orders (the query number_of_orders = 0), then tick Limit to one use per customer. It only reaches shoppers who already have a customer profile, so a first-time buyer without one can't use it.
Does Limit to one use per customer stop people using a second email address?
No. Shopify tracks the limit by email address or phone number, so a new address or number counts as a new customer. Deleting and recreating the discount also resets it.
Should my sign-up pop-up show the welcome code or email it?
Email it, as a unique code if your email platform can generate them. A code shown on screen is one shared code that anyone can copy to a code site. An emailed unique code works once and needs an inbox.
Can a coupon extension apply my welcome code?
Yes, once it has the code: extensions collect codes as shoppers use them and try them for other shoppers at checkout. On Shopify no app can change what an extension shows inside checkout, but a discount function can refuse codes. Benson's strict code policy is built that way: it works now on WooCommerce, Magento and BigCommerce, and on Shopify it runs through the Benson Shopify app.
Is a welcome discount worth offering at all?
Usually, for sign-ups: pop-ups with an offer collect more emails than pop-ups without. Judge it on the cost per genuinely new customer and on a holdout, not on how many orders used the code.

Sources#

Find out what's leaking. 14 days of Own, no card.