Back to blog
Growth3 min read

How to build ad audiences from your own order data

A platform pixel only knows browsing inside that platform. Your store knows who bought, what they spent and which channel brought them. Here are three lists worth building, and how to keep them from going stale.
A platform pixel only knows browsing inside that platform. Your store knows who bought, what they spent and which channel brought them. Here are three lists worth building, and how to keep them from going stale.

You can have an analysis that tells you exactly who your best customers are, and it changes nothing in the ad account until you turn it into a list you target or exclude.

And a list built from your own order data isn't the same thing as one a platform builds from browsing inside itself.

Why your order data is the better seed

A platform audience knows what someone did inside that platform. Your store knows what they actually did: bought, spent a certain amount, came back or didn't, and which channel brought them the first time.

The difference shows up in the conditions you can write:

The pixel can expressYour order data can express
Viewed a product pageBought and spent above a threshold
Added to cartBought twice within 90 days
Visited in the last 30 daysWas first acquired through Snapchat
Nothing equivalentHasn't bought since a given date

"Bought in the last 30 days, worth more than 1,000 SAR, first came in through Snapchat" isn't a condition a pixel can express. It's an ordinary query against your orders table.

One thing has to be in place first: identity resolution. A customer who arrived on their phone and bought on a laptop needs to count once. Duplication hurts most in exclusion lists, because you keep paying to reach someone who has already bought.

Step one: exclude people who bought

The cheapest win, and the one most stores forget. Every day a buyer stays inside your retargeting audience, you're paying to reach someone who is past the purchase.

The arithmetic is simple. A retargeting budget of 20,000 SAR a month against an audience of 50,000 people. If 6,000 of them buy during the month, that's 12%, so their share of the budget is 2,400 SAR a month and 28,800 SAR over a year.

That amount never shows up as a loss in any report. It reads as normal spend on a campaign with a great ROAS.

Step two: build a seed from your best customers

A lookalike is only as good as the seed under it. "Everyone who added to cart" is a wide, weak seed, because most of those people never reached checkout.

Instead, take your top segment by spend or by repeat order count. A narrow seed of real buyers does better than a wide seed of all visitors.

There's a floor you can't go under: every platform needs a minimum list size to build on. If "top 10% by spend" comes out smaller than that, widen it to the top 20% rather than mixing in visitors who never bought. Widening the buyer segment costs you less than adding non-buyers.

Step three: assemble the win-back list

Bought once, more than 90 days ago, hasn't come back.

This list only exists if identity is resolved. Without that, the same person shows up as three profiles and none of them looks lapsed.

Set the window on your own purchase cycle rather than a generic number. For a product people buy monthly, 60 days of silence is a clear signal. For a product bought twice a year, the same 60 days means nothing.

Refresh the lists, because they go stale

You export the audience, upload it, and forget it. Six weeks later three things have happened in parallel:

  • People in the "hasn't bought" list have bought, and you're still paying to reach them
  • New people now match the condition and aren't in the list
  • The exclusion list has stopped excluding anyone

A manual export gets you the same result, but you have to redo it every time. Most steps that repeat by hand get done once or twice and then forgotten.

On every export, match data is hashed before it leaves your store, so what you upload isn't a readable list of emails.

In Flowfy, building the list from your customer data and exporting it works today. You set the conditions and get the member count back before you save, so you know the size while you're building rather than after you upload.

Daily automatic sync to the ad platforms hasn't shipped. Until it does, the practical routine is a scheduled manual export. The export is a query rather than a saved snapshot, so re-running it returns current membership. See the getting started guide for the line between what's live and what's planned.

Start with the exclusion list. It's the fastest one to build, and its effect shows up in retargeting cost within two weeks.

Then put a fixed slot in the calendar every two weeks to re-run the export, so the lists don't go stale on you.

Growth

Why you pay to reach people who already bought

12% of a retargeting audience has already bought, and their share of the budget is 2,400 SAR a month. The waste never shows up as a loss anywhere, which is why it runs for years. Here's the arithmetic and the exclusions to run.

3 min read
Growth

Why your repeat rate falls every time you grow

A blended repeat rate mixes a customer of three weeks with a customer of two years. Grouping people by when they arrived turns a static number into a curve you can act on. Here's the idea and three objections to it.

3 min read
Growth

What the second purchase journey looks like

The second order has its own journey and its own channels, and it's the cheapest revenue you have. Here's the arithmetic, and the time gap that decides when to act.

3 min read