RepeatStop for Shopify

Stop first-order discount abuse on Shopify

Your welcome code is meant for new customers. RepeatStop recognizes shoppers who come back with a new email to claim it again, rejects the code at checkout and holds the orders that get through for your review.

Install from the Shopify App Store

Free plan with a 60-day audit. Paid plans have a 14-day free trial.

RepeatStop audit: in the last 60 days, $397.01 of first-order discounts went to 4 repeat buyers, with the matching order for each
The audit on a demo store, right after install.

Why "once per customer" is not enough

Shopify's "limit to one use per customer" checks one thing: the email address. A shopper who already used your welcome code can type a new address, or the same Gmail address with a dot moved or a +tag added, and the code works again.

The phone number, the shipping address and the name on the order stay the same. RepeatStop compares those too.

How it works

Everything runs inside your Shopify admin and checkout.

  1. 1

    Install and see the audit

    RepeatStop checks your orders from the last 60 days and shows how much first-order discount went to buyers who had already ordered, with the earlier order behind each match. It finds your welcome codes by itself: codes limited to one use per customer, and codes named like WELCOME or BIENVENUE.

  2. 2

    Repeat buyers are stopped at checkout

    When a buyer whose email or phone number has ordered before enters a welcome code, checkout rejects it with the message "This welcome code is for first orders only." Gmail dots and +aliases count as the same email. New customers get the discount as usual.

    Shopify checkout with a Gmail +alias email showing: This welcome code is for first orders only
  3. 3

    The rest are held for your review

    Every new order with a welcome code is checked against earlier orders by email, phone, shipping address, and name with zip code. A match gets the tag repeatstop:flagged and a reason such as "Same phone and address as #1005", and the order is held so nothing ships until you decide: release it, cancel it, or mark the customers as different people.

    Flagged order on hold, shown next to the two earlier orders with the same phone and address

What RepeatStop compares

  • EmailLowercased, with Gmail dots and +tags removed, so jane.doe+2@gmail.com and janedoe@gmail.com match.
  • Phone numberConverted to one international format (E.164), so spaces, dashes and country codes don't hide a match.
  • Shipping addressStreet, number and zip are normalized, so "901 Ocean Dr, #12" matches "901 Ocean Drive, Unit 12".
  • Name and zip codeA weaker signal, shown as a possible match. Orders that match only on this are never held automatically.
  • Your blocklistAdd a known problem customer with a note. Their next orders are flagged when the email, phone, address or name matches.
  • Exempt tagsCustomers tagged wholesale, staff, B2B or any tag you choose are never flagged.

RepeatStop stores these details only as one-way hashes. See the privacy policy.

Plans

Free

$0

  • 60-day audit of past discount abuse
  • Flags repeat buyers who use first-order codes
  • Tags flagged orders with the reason
  • Up to 25 flagged orders a month

Protect

$29 / month

  • Everything in Free, with unlimited flags
  • Rejects welcome codes at checkout for repeat buyers
  • Holds strong matches for review automatically
  • Release or cancel orders from the app
  • Blocklist and exempt customer tags
  • Up to 2,000 orders a month

Protect Plus

$79 / month

  • Everything in Protect
  • Unlimited orders
  • Optional automatic cancel with refund and restock
  • CSV export of flagged orders

Paid plans include a 14-day free trial. Annual billing saves 20%. Billing is handled by Shopify.

Questions

Does it block family members who live at the same address?

The checkout check never looks at the address. It only rejects a welcome code when the buyer's email or phone number has already ordered from your store, so a family member with their own email and phone can use the code at checkout.

After checkout, a shared address does flag the order, because that is how most repeat buyers get caught. A flag is a signal for you to look at: the review page shows the new order next to the earlier one, and you can release the hold or mark the customers as different people so they are not flagged again. Orders that match only on name and zip code are never held automatically, and automatic cancelling is off unless you turn it on.

What customer data does RepeatStop store?

Only one-way keyed hashes of the normalized email, phone number, shipping address and name with zip code, next to the Shopify order and customer IDs, order number and date. A hash can show that two orders share a phone number, but the number cannot be read back from it.

Names, emails and addresses you see on a flagged order are fetched live from Shopify and not saved. When you uninstall the app, the access token is deleted at once and everything else 48 hours later. The full details are in the privacy policy.

Does it work without Shopify Plus?

Yes. Checkout blocking runs as a Shopify discount function, which apps from the Shopify App Store can use on any Shopify plan. The order checks, tags and holds use standard order data and also work on every plan.

What if my welcome code is not set to once per customer?

Auto-detection counts a code when its discount is limited to one use per customer, and also when its name reads like a welcome or first-order code in several languages, such as WELCOME10, BIENVENUE15, WILLKOMMEN or FIRST-ORDER. Codes that look like staff, gift card or wholesale codes are not counted by name.

You can also pick discounts from a list in Settings, or add code names and patterns such as WELCOME*. The free audit lists the most used codes, so you can see which ones should count.

Will it flag my wholesale customers or staff?

Not if they carry a customer tag you exempt. On Protect and Protect Plus you choose tags such as wholesale, staff or B2B, and customers with those tags are never flagged.

Can a repeat buyer still get past checkout?

Yes, if they use both a new email and a new phone number. When a discount code is applied, Shopify does not give the discount function the shipping address, so the checkout check works on email and phone only. That is why every order with a welcome code is checked again after it is placed, by address and name with zip code as well, and held for your review when it matches.

What happens on the free plan?

The free plan runs the 60-day audit, checks new orders that use a welcome code, and tags up to 25 flagged orders a month with repeatstop:flagged and the reason. Holding orders automatically, checkout blocking, the blocklist and exempt tags start on Protect, which has a 14-day free trial.

More on the problem and the manual fixes: How to stop customers reusing your first-order discount code on Shopify.

See what repeat buyers cost you

The 60-day audit runs as soon as you install, on the free plan.

Install from the Shopify App Store