Hi @robofmanyfaces and @justin456770,
Not sure if you’ve already solved this by now, but for anyone else who finds this thread with the same “free sample once per customer” problem, here’s how I’d think about it.
You’re running into the core limitation that most approaches are really just “one per email” or “one per customer record”. That’s fine for casual use, but as soon as people are motivated enough they’ll just come back with a new email and grab another freebie.
There are basically three layers you can combine:
- Theme-level hiding (what Joe suggested)
- After-the-fact filtering (cancel / tag repeat sample orders)
- Checkout-level validation (stop the second sample at checkout)
- Theme-level hiding
Joe’s suggestion is the simplest version:
- Require accounts and login for the free sample.
- Tag customers once they’ve ordered the sample (e.g.
bought free sample).
- In Liquid, hide the add-to-cart button for that product if the tag is present.
That works for basic cases, but it won’t protect you against:
- Direct “add to cart” links
- Other apps adding the product
- People bypassing the product page
It’s a nice UX layer, but I wouldn’t rely on it as the only gate.
- After-the-fact filtering
What you tried with tagging is half the story. The other half is “what happens when someone with that tag orders the sample again?”
You can use automation (Shopify Flow, Mechanic, or a custom app) to:
- Trigger on order creation.
- Check: does this order contain the free sample SKU AND does the customer already have the sample tag?
- If yes:
- Tag the order / customer as “repeat sample”
- Auto-cancel or send it to a review queue for your team.
This doesn’t stop the order from being placed, but it lets you clean it up and reach out to the customer before fulfillment.
- Checkout-level validation (one-time for all time)
If you really want a true “once per customer, ever” rule for a specific product, you need something that runs at checkout and looks at past orders, for example:
That can be done with:
- A custom Checkout Validation function if you have a dev, or
- An app that exposes a “one-time per customer” rule for selected products and handles this lookup + blocking for you.
Full disclosure: I work on a Shopify app that does exactly this kind of “one-time per customer / household” rule for selected SKUs using Checkout Validation. You mark your free sample product as one-time-only, keep your existing tagging/automation if you want, and the a