Creating a flow for customers who bought a specific product for the first time

Topic summary

Goal: automate a Flow that targets customers buying a specific product for the first time.

Key options proposed:

  • Historical check via Loop (For each): Trigger on order created/paid, iterate Order.customer.orders and their line items to detect any prior purchase of the target product. If none found, proceed. This is more resource-intensive but necessary when the product has been sold for years, since older customers won’t have prior markers.
  • One-time gating with customer tag/metafield: When you run the action, add a customer tag/metafield (e.g., “promo_sent_product_X”). On future triggers, first check if it exists; if yes, skip. This ensures each customer is contacted only once (covers renewals) but doesn’t retroactively detect past buyers unless the tag already exists.

Clarifications: “Loop” refers to Shopify Flow’s For each action. Customer tags/metafields are attributes you can set and later check in Flow conditions.

Assets: Screenshots illustrate setting a For each loop over Order.customer.orders and a conditional gate that sets a tag.

Status: No built-in “never purchased this product” condition. Guidance provided; confirmation/resolution not yet reported.

Summarized with AI on December 15. AI used: gpt-5.

I’m looking to set up a flow that targets customers who buy a specific product for the first time. I have it triggered when the order is paid and then the condition to check if the product title is a certain title, but I’d also like to have an AND condition that that specific product was never purchased by the customer before. I can’t find the condition in the list to set this up though. Any help would be appreciated for what this sort of setting would be called.

Thank you!

Very similar to the first thread in Similar threads below: “Flow Automation: Max 1 time for a customer

Here is my suggestion in that thread:

https://community.shopify.com/c/shopify-flow-app/flow-automation-max-1-time-for-a-customer/m-p/2656520/highlight/true#M4882

If you’re only starting to sell this product, then the best option is to add a metafield/tag to a customer when they buy this product and then check if it’s set.

Otherwise you’d need to combine conditions with “Loop” action to retrieve all orders for the customer and the loop over all items for each order to see if this is the one.

Looping like this would be much more resource-consuming. But probably the only option if you’ve been selling this product for a while because checking customer metafield will give many false positives.

I think I’m a bit confused about what “looping” an action looks like. We’ve been selling this specific product for years (it’s a subscription) so we’re trying to target new customers who are just subscribing to this specific product with us for the first time.

Separate but maybe an alternate solution - is there a way to limit this flow to only contacting each customer one time? If it emails people after this first renewal processes and then doesn’t send this same email again, that would also be acceptable since the whole point is just trying to offer people something once.

Looping is kind like trigger:“When order created”=> then: Action=>Flow-=>“For each loop(iterate)”=>list: Order.customer.orders

Yes, that’s the idea – if you want to do something once, then you do it and add a tag or a metafield to this customer. But before, you you check whether tag/MF is set and skip this action. Kinda like: