Offering a free product once per customer

Hi,

I’m working with a client who offers a free sample product, but they want to limit it to once per customer. Currently the customer can only add one to the cart, but if they come back again they can get another without any problem. I’m looking for an app or solution where I can stop this from happening. I tried one app that adds a tag to the customer when they activate the free sample sale, but I can’t get it to limit them from getting another one. Any suggestions would be greatly appreciated.

Cheers

Rob

To identify the customer pre-sale they would have to have an account and be logged in. If they’re logged in, you can use liquid to hide the add to cart button for that product.

Example:

{% unless customer.tags contains "bought free sample" %}
put add to cart button code here
{% endif %}

The only other solution I can think of is to have the app notify your staff if a customer makes a 2nd purchase with the free sample. For example, you have the tag applied on first purchase, then have a tag rule that if customer has that tag, send a notification to staff so they can stop the fulfillment and contact the customer. If the app you’re using doesn’t have notifications like that, Order Automator does this.

Have you solved this problem now?

Hey Rob and @justin456770 ,

I built an app for precisely this purpose. Our approach is to add the sample to the order AFTER checkout, and is great for cross selling a customer into a subscription or a new product category that they haven’t tried yet. We even have a checkbox that only runs each rule once.

Link to our App: https://apps.shopify.com/pls-smart-pack-ship

And a short video demonstrating the setup:https://www.youtube.com/watch?v=Ei4LGhkZh3Y&themeRefresh=1

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:

  1. Theme-level hiding (what Joe suggested)
  2. After-the-fact filtering (cancel / tag repeat sample orders)
  3. Checkout-level validation (stop the second sample at checkout)

  1. 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.


  1. 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.


  1. 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:

  • When the free sample SKU is in the cart:

    • Look up past orders for that email / customer ID (and optionally phone / address)
    • If a previous sample order exists, block the checkout and show a friendly message like:

    “It looks like you’ve already claimed your free sample.
    This offer is limited to one per customer, but you can still order the full-size product here.”

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

I came across your question about limiting a free product to once per customer. In DC Order Limits, customer purchase limits track purchases per customer across orders, not just what is in the cart right now.

Setup:

  1. Create a customer purchase limit rule

  2. Set max quantity to 1

  3. Apply it to the free product

  4. Checkout is blocked if the customer has already ordered it

This works across repeat visits and future orders as long as the customer can be reliably identified, which is usually a logged-in customer account.

Heads up this is the same app under a new name! The link doesn’t automatically redirect: Insertr: Marketing Automation - Add Inserts, Gifts, and Samples to Orders to Upsell/Cross sell | Shopify App Store

Hi @robofmanyfaces

A one-per-customer free sample limit can also be enforced with Shopify Scripts if you’re on Shopify Plus, or with a free/paid app that tracks customer purchases. Search for apps that “lock products based on previous purchase, other than just tags.” Alternatively, you can create a workflow in Shopify Flow to automatically remove the free sample from repeat patrons.

Hi @robofmanyfaces,

To offer a free sample only once per customer, you can set up a Buy X Get Y offer using a free gift app like BOGOS.

In BOGOS, you can limit the offer so each customer can get it only once. After they receive it the first time, they won’t be able to get it again on future purchases.

Additionally, the free sample will be automatically added to the cart once the conditions are met, without requiring any manual action from the customer.