Stopping customers from abusing discounted sample kits

I sell a skincare sample kit for $5, but the actual cost of the products, packaging, and free shipping is around $14. I accept the loss because the kit is meant to introduce new customers to the brand.

The rule is supposed to be one sample kit per customer every 30 days.

I’m currently using the free version of Madgic Order Limits. It successfully prevents customers from adding more than one kit to the same cart. However, last weekend, one customer placed five separate orders within about 20 minutes using the same customer information. Each cart contained only one kit, so every order passed the free rule.

By the time I noticed, several of the orders had already entered fulfillment. That one incident cost more than a month of the paid plan.

The paid Standard plan appears to support the recurring customer limit I need, so I could restrict each customer to one kit every 30 days instead of only limiting each individual cart.

Has anyone upgraded specifically for this type of rule? Did it reliably detect previous purchases and block the customer’s next order until the 30-day period ended?

I’m leaning toward upgrading because preventing even one incident like this would cover the monthly cost, but I’d appreciate feedback from anyone who has tested it with real orders :roll_eyes:

id push back on the upgrade. the app fixes the symptom and leaves the hole open.

any app limit is enforced at checkout against what it can see. five orders in 20 minutes is the failure mode that beats all of them, and the same person gets around a 30 day customer rule with a second email address in about 40 seconds.

two things that actually hold. require an account to buy the kit, guest checkout is what makes serial ordering easy. and use Shopify Flow instead of the app, its free on your plan. when an order comes in containing the kit, check that customers history, and if theyve had one in the last 30 days cancel and refund it automatically. it runs after the order exists rather than trying to block the cart, which is exactly why it catches your case and the app didnt.

but the real fix is the pricing. youre losing 9 dollars a kit so every leak is expensive by design. charge the full 14 and give a 14 dollar credit toward the first real order. now the kit costs you nothing, ordering five is pointless, and the people who actually convert still get it free.

Hi @Nekocha I think the important part here is testing the rule against the actual abuse scenarios, not just confirming that the basic limit works.

For example, I’d test multiple orders within a short time, different email addresses with the same customer details, guest vs. logged-in customers, and attempts from the same account after the 30-day window.

A rule can work perfectly in a normal test case and still fail when the customer finds a way around it. I’d definitely test these edge cases before relying on the paid plan for the protection.

Hi there @Nekocha
With this one, the important part was the limit being applied on the customer’s purchase history, not just the cart they’re currently using. If the paid plan supports 30 day customer based limit, it that should cover multiple separate orders made from the same customer.

I’d also consider applying a customer tag after the sample purchase and use Shopify Flow to watch/flag for subsquent sample orders. That adds another level of control pre-fulfillment and makes it easier to spot repeat abuse.

The fact that several orders had already reached fulfilment before you noticed is the part that stands out most here.

Before this incident, did you have any warning or dashboard that would have made the pattern obvious — for example “same customer placed 5 sample orders in 20 minutes” — or was it only something you noticed manually afterward?

Also, if you had been warned immediately after the second or third order, what would you ideally want to happen: just flag the customer, automatically hold/cancel the new orders, or require you to approve them before fulfilment?

I’m trying to understand whether the real value is the rule itself, or detecting suspicious repeat behaviour early enough to act.

The five-orders-in-20-minutes failure comes from rule scope. A cart rule checks one cart at a time. Blocking that second order requires a rule that reads the customer’s order history at checkout, so order two gets refused even though its own cart looks fine.

Seconding two points above: require an account to buy the kit (guest checkout plus a fresh email gets past every app’s customer matching), and test the abuse case first.

Disclosure: I built an order limits app (Mastiff Order Limits) that enforces the customer-history version of this (free for 1 rule). One difference to check for your case: mine treats the cap as one per customer ever, not one per 30 days. For an intro kit that might be the rule you actually want(1 per customer).

Besides the answers above, an order created workflow in Shopify Flow can easily see an order that slips through the cracks and cancel it before you ever see it.

One strategy I’ve seen work is making the kit give customers a credit rather than a discount.

So they pay your break-even price + some small margin, in this case maybe $15 for the kit, and then get a $10 credit on their first order.

This way, stockpilers don’t cost you anything and maybe have no incentive to do it. Plus real customers end up in the same place ($15 - $10 = $5).

Hi,

Given what happened here, I think there are actually two controls worth considering:

1. Prevent the repeat sample order being placed in the first place
2. Make sure a suspicious/repeat sample order can’t reach fulfilment before someone has reviewed it

If your rule is absolutely “one kit per customer every 30 days, no exceptions”, then the paid recurring-limit feature you’re already looking at may well be the simplest solution for the first part.

Where I’d consider adding an approval layer is if you occasionally do want to allow exceptions — for example a replacement kit, VIP/customer-service exception, influencer request, or a legitimate second sample for another reason.

That workflow could look like:

Normal first sample → proceeds normally

Repeat / exception sample → fulfilment held → someone reviews it → approve or reject → only approved orders are released

Full disclosure: I work with SampleGuard, a Shopify app built specifically around this kind of approval-before-fulfilment workflow.

The bit of your post that jumped out at me was that several of the repeat orders had already entered fulfilment before you noticed them. That’s exactly where having a genuine approval gate can add value — the team isn’t racing the fulfilment process after spotting the problem.

SampleGuard doesn’t currently calculate a rolling “one sample every 30 days” allowance itself, so I wouldn’t claim it replaces that part of Madgic today. But a rule such as “repeat sample within X days → require approval” is very closely aligned with what SampleGuard is designed for, and it’s the sort of capability we’d be interested in looking at adding if merchants are running into this regularly.

We could also look at triggering the approval process based on customer tags i.e. ‘sample recieved’

Personally I’d decide first whether you want repeat orders to be automatically blocked, or whether you want them to be held for a human decision. The second option gives you more flexibility without risking five sample orders getting into fulfilment before anyone catches them.

Would you ever intentionally approve a second kit inside the 30-day window, or is the rule genuinely absolute?