Hi @Hugo N.
I don't believe it's possible to do this with display logic without some preparation (see below, though I'm happy to be proved wrong!)
If this is for a campaign, I'd create a segment of purchasers and non-purchasers and tailor your campaign to each audience.
If this is for a flow, you could add a conditional split: 'placed order zero times' over all time with YES branch for your discount offer emails.
Alternatively, to use display logic for a block, I suggest this:
- Create a placed order event flow with a profile filter of 'placed order equals 1 over all time’ so only new customers enter it.
- Add a first step that updates a custom property. Let's call this 'customer' and configure so it sets to boolean true (i.e on their first order).
- This flow will flag new customers after the flow is live i.e customer = true
- For historical customers, create a segment: 'purchased at least once over all time' and export as a csv. Add to the csv a customer column and set all profiles to the value: true
- Import your csv into a temporary single opt-in list. During the import ensure you do not update profiles' subscription status.
- Once the import is complete, you can delete the temporary list (profiles won’t be deleted, just the list). All historical customers will now have customer = true
- To only display a block to non-purchasers, use this display logic: not person|lookup:'customer' - if the 'customer' property does not exist for a profile, is empty, or is the boolean value false it won't display (which will be the case for non-customers).
- Test the above process with your test profiles first!
Hope that helps!
Andy
Thanks Andy for the answer ! Looks like a great workaround even if I am really surprised that Klaviyo teams didn’t develop such a basic feature.
Have a great day !