Bot Prevention

Free Sample Abuse on Shopify: How to Limit Samples per Customer

If you searched for free sample abuse Shopify, limit free samples per customer, customer keeps ordering free samples, or how to limit one per customer on Shopify, you have probably already opened your orders page and found the same name, or the same street, on a stack of $0 orders.

Shopify has no built-in way to cap how many times one person can order a free product. This post covers what free sample abuse looks like, why the usual fixes leak, and how CartWatch refuses the repeat free order before it becomes another parcel.

What free sample abuse looks like

A free sample, swatch, trial size, or “just pay nothing” freebie is a conversion tool. You expect each shopper to take one. Some take dozens.

At one store using CartWatch, a single shopper placed more than 140 free fabric swatch orders over about two days in October 2026. Each one was a real Shopify order: picked, packed, labeled, and shipped at the store’s expense.

The pattern usually takes one of three shapes:

  • Same email, many orders. The shopper reorders the same free item every few minutes, or every day. Easy to spot, tedious to stop by hand.
  • Rotating emails, same address. Every order comes from a new inbox, but the parcels all go to one door. Filtering by customer never catches it.
  • A group sharing the link. A forum or a “free stuff” account posts your sample page, and the orders come from many people, once or twice each.

Most of this is human behavior rather than a bot script. That matters, because bot detection on its own does not stop a real person who reads your sample page and places a second order. A bot that wants a cheap paid item is a different problem, covered in how to stop card testing on Shopify.

What it costs you is the product, the packaging, the shipping label, and the time to fulfil each order. Sample stock meant to convert a hundred prospects goes to a few collectors. If you fulfil through a 3PL, every $0 order is also billed as a pick.

Why Shopify does not stop it

Three gaps let the same person keep going.

No per-customer order limit. Shopify has no “one per customer” setting on a product for regular storefront orders. Nothing stops a shopper from placing a second order a minute after the first.

A $0 order skips payment. Shopify’s fraud analysis is built around the payment: card checks, billing address match. A free order has no payment, so there is little for it to work with. The order is created the moment the shopper submits it.

A new email is a new customer. Anything keyed on the customer record, such as order count, tags, or a one-use discount code, restarts from zero when the shopper types a different email at checkout.

What merchants try first, and where it leaks

FixWhat it stopsWhat gets through
Quantity-limit appTen swatches in one cartTen separate orders of one swatch
One-use discount code on a priced sampleReusing the code from one accountA new email, or the code posted on a forum
Charging shipping on samplesCasual collectorsDetermined ones, plus some genuine prospects who leave
Shopify Flow or manual cancellationThe parcel, if you catch it in timeThe order still exists, the confirmation still sends, and your team still spends the time
Blocking the email by handThat one emailThe next email

None of these is wrong. Charging a small shipping fee is still the cheapest filter you have. But each one works on a single signal, and each is applied either before the order, where it slows genuine shoppers too, or after the order, where the cost is already spent.

How CartWatch stops repeat free orders

CartWatch’s Free Sample Abuse page, on the Standard plan and above, turns the pattern itself into the rule. Click Add a rule and you set it in one sentence:

If a customer with the same email address places 2 free orders of the same product within 24 hours, then block for 2 days.

Those are the default values. Here is what happens behind that sentence.

  1. CartWatch counts every free order. Each time a $0 order is created, CartWatch notes who placed it and which product variant it contained. Draft orders you create yourself never count.
  2. You choose what the limit applies to. Set to the same product, two free orders of the blue swatch start a block on the blue swatch, and the green swatch is still allowed until it hits the limit too. Set to any product, all of a shopper’s free orders count together, and the block covers every free order from them.
  3. The block refuses the next free order. Within a few minutes of the order that hit the limit, the block is live. When that shopper tries to order the same free variant again (or any free item, for an any-product rule), CartWatch refuses payment, the shopper sees your rejection message, and the order is never completed.
  4. Paid orders are never touched. Only orders with a $0 total are counted, and only a cart whose merchandise totals $0 can be refused. A paid order that carries a free gift-with-purchase item goes through as normal.
  5. Blocks lift on their own. When the block duration runs out, the shopper can order that sample again. There is nothing to clear by hand. A Shoppers caught breaking a rule table shows each shopper CartWatch detected going past a rule’s limit, on which product, when they were caught, and how long until the block lifts.

Recognize the shopper by email, address, or both

This is the part that closes the rotating-email gap. The first menu in each rule says how CartWatch recognizes the same shopper:

  • Email address counts free orders from the same email. Simple, and it catches the shopper who does not bother to hide.
  • Shipping address counts free orders going to the same street and ZIP or postal code, whatever email is typed. Matching ignores case, punctuation, and common abbreviations, so “123 Oak Lane” and “123 oak ln” are the same door. Billing addresses are not used.
  • Email or shipping address does both.

With a rule set to shipping address, the 140-swatch shopper above is blocked after the second order to that address, whichever inbox they use for the third.

Tune the rule, or add more than one

Each part of the sentence is a menu:

SettingOptionsDefault
Recognize byemail address, shipping address, or eitheremail address
Free orders before a block2 to 102
Productthe same product, or any productthe same product
Within1 hour to 30 days24 hours
Block for1 hour to 30 days2 days

A stricter rule (fewer orders, a longer window) catches more collectors and is more likely to stop a genuine customer who orders the same sample twice. A looser one lets a few extra freebies through before it bites. If a real customer gets blocked, raise Free orders or shorten the window. A changed rule applies from the next free order, and blocks already in place keep their end time.

You can run up to five rules at once, and every free order is checked against all of them. A common pair: keep the default same-product rule to stop the swatch reorderer, and add shipping address, 5 free orders of any product within 7 days, block for 30 days to catch the shopper working through your whole sample range one item at a time under a fresh email each visit.

It runs through payment blocking

Free Sample Abuse is a payment-blocking rule, so payment blocking has to be on under Settings → Payment Blocking. While it is off, the page shows a warning, free orders are not counted, and nothing is refused. The same switch gives you CartWatch’s bot payment blocking on the same plan.

What it does not do

Knowing the edges saves a support ticket later.

  • The first orders go through. The rule is a limit, not a ban. With the default rule, each shopper gets two free orders of each sample before the block starts. Only an any-product rule counts different samples together.
  • It does not cancel orders already placed. Orders that reached your admin before you turned the rule on are not counted or undone.
  • A shopper who changes both email and address starts fresh. Address matching catches email rotation. Someone shipping to a friend’s house is a new shopper to the rule.
  • The checkout itself still exists. CartWatch refuses the payment step. Shopify still records the checkout the shopper started, as it does for any checkout that was not completed.
  • It is not bot scoring. The rule looks only at repeat free orders. A sample collector is blocked whether or not CartWatch thinks they are a bot, and a bot with a paid cart is handled by the bot rules instead.

Setting it up

  1. Install CartWatch from the Shopify App Store. Free Sample Abuse is on the Standard plan, which has a 7-day free trial.
  2. Turn on payment blocking under Settings → Payment Blocking.
  3. Open Free Sample Abuse, click Add a rule, pick how to recognize the shopper (email address, shipping address, or either), keep the other defaults, and Save.
  4. Check the Shoppers caught breaking a rule table after a few days and loosen or tighten the numbers from there.

FAQ

How do I limit free samples to one per customer on Shopify? Shopify has no native per-customer order limit for storefront orders, and quantity-limit apps cap one cart, not repeat orders. CartWatch’s Free Sample Abuse rules count free orders by email or shipping address, per product or across any product, and refuse the next free order once a shopper reaches your limit. The closest setting to “one per customer” is two free orders of the same product: the second order starts the block, and the third is refused.

Will it block real customers? Only a customer who orders free items past your limit. With the default rule, a shopper who places two free orders of one sample within 24 hours is refused a third for the next two days. Paid orders are never counted and never refused, so a customer who buys the full size is unaffected.

What if the shopper uses a different email each time? Set the rule to recognize the shopper by shipping address (or email or shipping address). Free orders going to the same street and ZIP or postal code are counted together, whatever email is used.

Does it affect gift-with-purchase or free items in a paid cart? No. Only orders with a $0 total are counted, and only a cart whose merchandise totals $0 can be refused.

Does the block go away by itself? Yes. Each block lifts when its duration runs out. Removing every rule lifts every block within a few minutes.

Which plan is it on? Standard and above, and it needs payment blocking turned on. Lower plans see the settings locked with an upgrade button.

Written by the CartWatch Team

We build bot and fraud detection for Shopify checkouts, and write about what we see across the merchants who use it.