• Shopify
  • Shopify Discounts
  • Coupon Codes
  • Ecommerce Strategy
  • Customer Retention
  • Discount Spark

Shopify ‘Limit One Per Customer’ Explained: Emails, Multiple Accounts, and the Reality of Discount Enforcement

What Shopify actually means by ‘one use per customer’, why customers can still reuse discount codes, and how merchants should design promotions once they understand how enforcement really works.


Shopify Discount Limits: What “Per Customer” Really Means (and What You Can Actually Do About It)

One of the most misunderstood settings in all of Shopify is a single checkbox:

“Limit to one use per customer.”

Merchants assume they know what it means.

They think:

  • A customer can only ever use the code once.
  • Shopify recognizes the person.
  • The system stops repeat usage automatically.

That is not what it means.

If you design promotions around that assumption, you’ll eventually think customers are “cheating.”

They aren’t.

You misunderstood what Shopify is enforcing.

This post explains how Shopify discount enforcement actually works, what Shopify tracks, what Shopify does not track, and how to run promos without nuking your margin.


Executive summary

“Limit to one per customer” does not mean “one per human” or “one per household.”

It means:

One use per unique identifier.

In Shopify, that identifier is typically:

  • Email address
  • Or phone number (depending on checkout configuration)

That’s why a customer can reuse a “one-time” code simply by checking out with a different email. It’s not a bug. It’s the design.


What Shopify means by “per customer”

Shopify discount code settings give you things like:

  • Limit total number of uses
  • Limit to one use per customer

The important part: Shopify enforces “per customer” by tracking a customer’s email address or phone number (not a person, not a household, not an address).

Reference:

So Shopify is not enforcing discounts by:

  • Shipping address
  • Billing address
  • Payment method
  • IP address
  • Household

It’s enforcing by an identifier.


Why “one per customer” is easy to bypass

Most “abuse” isn’t hacking. It’s normal behavior.

1) Multiple email addresses

If a customer uses:

Shopify sees different identifiers. The discount works again.

2) Email aliasing (plus addressing)

Some providers support variations like:

Same inbox, different identifier.

3) Guest checkout

If you allow guest checkout, the only identity Shopify sees is whatever email/phone the customer types at checkout.

So your enforcement becomes:

One use per typed identifier.

4) “Same address, still worked”

Correct. Shopify does not enforce “per customer” using shipping address.


The hard truth: you can’t guarantee “one per human”

No Shopify app — including Discount Spark — can guarantee “one per person.”

Why? Because Shopify’s customer identity is still ultimately tied to email/phone. If a determined customer creates a new email, the system sees a new “customer.”

So be explicit about this:

  • You can limit how many times a customer can use a code per Shopify’s identifier.
  • You cannot fully prevent someone from bypassing it by using a new identifier.

What you can do (without pretending you have perfect enforcement)

You can build promotions that are:

  • harder to casually exploit
  • less expensive when they leak
  • easier to support when edge cases happen

Step 1: stop using one global “WELCOME10” code

The worst setup looks like:

  • WELCOME10
  • 10% off everything
  • No minimum
  • Never expires

That’s not a promo. That’s a public sale.

Once it leaks to coupon sites, your margins bleed.


Step 2: add minimum requirements

Set a minimum order value or quantity so leaks don’t destroy you.

Reference:

A simple example:

  • “10% off orders $75+” is a strategy
  • “10% off any order” is margin suicide

Step 3: restrict eligible products/collections

If your discount leaks, you want it leaking onto products you can afford to discount.

Reference:


Step 4: understand Shopify’s “missing middle”

Shopify native gives you basically:

  • unlimited use, or
  • one per customer, or
  • a total usage cap

What Shopify does not give you natively:

  • “3 uses per customer”
  • “2 uses every 30 days”
  • “repeat purchase windows”

That “missing middle” is exactly where retention promos live.

That’s what Discount Spark is built for:

It lets you run rules like:

  • 3 uses per customer
  • 1 use every month (reset windows) …while staying honest: this is still enforced using Shopify’s customer identifier logic (email/phone), not magic.

The most common support ticket: “my code is already used” after a cancellation

You will eventually get:

“My order got canceled / payment failed. Now it says my code is already used.”

This happens because the discount was applied to an order record. Even if the order is later canceled, the system may treat the code as already consumed for that identifier.

Your sane policy options:

  • Issue a replacement code (customer-specific, short expiry)
  • Or issue a partial refund equal to the promised discount

Pick one, document it, apply it consistently.


How to monitor if your discounts are leaking

You don’t need a fraud department.

Look for obvious patterns:

  • Same shipping address, multiple emails, same code
  • High redemption concentration from “different customers”
  • Unexpected stacking/combining behavior

Export orders and filter by discount code. You’ll spot it fast.


What “one per customer” is actually good for

Good fits:

  • influencer codes (controlled distribution)
  • VIP codes (known segment)
  • event codes (timeboxed)

Bad fits:

  • welcome discounts (people will reuse)
  • retention incentives (you often want repeats)
  • replenishment products (you want the next purchase)

FAQ

Why can customers reuse my Shopify discount code?

Because Shopify enforces per-customer usage by email/phone identifier. New identifier = new “customer” for enforcement.

Can Shopify limit discounts by shipping address?

No.

Can Shopify limit discounts by IP address or credit card?

No.

Does requiring login fix it?

It reduces casual reuse, but it doesn’t eliminate it (new account/new email still works).

Can any app completely stop discount abuse?

No. A determined customer can create a new identifier. Discount Spark doesn’t claim otherwise.

So what’s the real solution?

Design promos that are profitable even when reused, and use structured repeat limits (like “3 uses per customer” or “1 use per month”) when your strategy depends on repeat eligibility.


Final takeaway

“Limit to one per customer” is not broken.

It’s just not what you think it is.

Shopify enforces it as:

One use per email/phone identifier.

Once you understand that, you stop trying to enforce perfection and start designing promos that drive the behavior you actually want.

Simply Smarter Shopify Discounts.

Install Discount Spark and start controlling discount usage fairly and automatically.