Analysis5 min read2026-03-01

Shopify's 'limit one per customer' is per account, not per person

What the setting actually does

When you create a discount in Shopify and check "Limit to one use per customer," Shopify will reject the code if the same customer account email has used it before.

That's the entire check. Email on account matches a previous use? Rejected. Different email? Welcome, new customer.

Per customer is not per person

A customer account in Shopify is an email address. That's the identity. No verification, no phone confirmation, no address matching. Just an email.

Creating a new Shopify customer account takes about 15 seconds. Type a different email, set a password, done. As far as Shopify is concerned, that's a completely different person.

Gmail makes this even easier. [email protected] and [email protected] are the same inbox but different Shopify accounts. [email protected] is another one. Add throwaway email services and one person can create an unlimited number of "customers."

Guest checkout bypasses it entirely

This is the part that surprises most merchants. If your store allows guest checkout, the "one per customer" setting has no effect on guest purchases.

Guest checkout has no customer account. There's nothing for Shopify to check against. A guest can enter any email and the discount works.

Shopify has confirmed this in their documentation and community forums. There is no native workaround. The setting is designed for logged-in customers only.

The direct checkout URL bypass

There's another way around it that fewer people know about. Shopify allows adding products directly to the checkout URL, bypassing the cart entirely. Cart-level quantity limits don't apply if the customer never visits the cart page.

This one is more technical and less common, but it exists. Cart restrictions are not checkout restrictions.

What "per person" would actually require

To enforce one per person instead of one per account, you'd need to check something other than the account email. You'd need to know whether the person behind the email is the same person who ordered before.

That requires multiple identity signals:

Normalized email. Strip Gmail dots and plus aliases so all variations resolve to one address. Here's how that works.

Phone number. Compare the shipping phone against previous orders. People rarely have more than one or two real numbers.

Shipping address. Fuzzy-match against previous orders. "123 Main St" and "123 Main Street Apt 4B" should count as the same place.

IP address. If three different emails all check out from the same IP within a week, that's probably one person.

Device fingerprint. Same browser, same screen resolution, same language settings. Different email doesn't matter if the device is identical.

No single signal is perfect on its own. Email normalization misses completely different email addresses. Phone matching misses people with prepaid SIMs. Address matching misses people shipping to work. But two or three signals matching at once is very hard to explain away.

The checkout vs post-order distinction

Some tools try to catch this after the order is placed, then cancel and refund. That works, but you still pay the payment processing fee, the customer has a bad experience, and your operations team has to deal with the cancellation.

Blocking at checkout is cleaner. The discount doesn't apply, the order isn't created, no fees are charged. The customer sees a message that the offer is for new customers only and can still buy at full price.

How to actually enforce one per person

OfferGuard runs all five identity checks at checkout before the discount is applied. If any combination of signals matches a previous order, the checkout is blocked.

The free Watchdog plan covers email normalization and disposable email blocking. The Sentinel plan ($29/month) adds phone, address, IP, and device detection.

The "limit one per customer" setting is fine for what it is. It just doesn't do what most merchants think it does.

Try OfferGuard on your store.

Free plan available. No credit card.

Install free on Shopify