
The Horizon Method: Our system for profitable Meta Ad scaling
The four-stage system we use to run Meta at OENA, and why every account we manage is read through Lens rather than Ads Manager.

Most brands that come to us can already make Meta work. What they can't do is make it work at twice the spend.
The pattern is always the same. At a modest budget the numbers look fine. Push the budget up and the return slides, the first order stops paying for itself, and every new customer starts costing money the business has to find somewhere else. That's not a creative problem or a targeting problem on its own. It's a cash flow problem, and it's the one that quietly stops good brands growing.
Horizon is how we fix it. A horizon is the line you measure everything else against, and the method gives an account exactly that: a fixed structure, a fixed way of judging creative, a fixed weekly reading and a fixed point at which we take control of cost.
Horizon is written for brands that already have ads running and some proof they can work, but can't grow spend without the numbers falling apart. If you're launching Meta for the first time, the structure in H1 still applies, but the later stages need data you won't have yet.
The four stages
Horizon runs in four stages, always in this order:
- H1 · Structure. Separate lanes for new customers, proven ads, warm audiences and existing customers, so you can see what each one really costs.
- H2 · Creative. A repeatable way to brief, launch and judge ads in a world where the creative now does the targeting.
- H3 · Weighting. Moving spend towards the days, placements, audiences and pages that earn it.
- H4 · Control. Cost caps, introduced only once the account has been stable long enough to deserve them.
Each stage depends on the one before it. The first three usually land within the first six to eight weeks. The fourth waits until the account is ready, which for many brands is months, not weeks. Throughout all four, the account is read in Lens, our reporting dashboard, not in Ads Manager. More on why below.
H1 · Structure
The single most common thing we find in an inherited account is that new and returning customers are mixed together. Meta is very good at finding people who were going to buy anyway. Left to its own devices, a prospecting campaign will drift towards your site visitors and past customers, the blended return will look healthy, and you'll have no idea what a genuinely new customer costs.
So the account is split into lanes, each with exclusions that actually hold:
- Prospecting is for people who have never bought from you. It excludes customers, recent site visitors and social engagers. Inside it sit broad ad sets for new creative and single-interest ad sets for proven creative.
- Scale holds only ads that have already proven themselves in prospecting, run broad, with the same exclusions.
- Retargeting is optional, kept small, and excludes existing customers.
- Customers is for repeat purchase, built from segments synced from Klaviyo rather than generic pixel audiences.
The point isn't tidiness. It's that you can now read the cost of a new customer on its own, and decide deliberately how much of the budget goes to each lane instead of letting the algorithm decide for you. In most accounts we take on, retargeting and existing customers are quietly eating far more of the budget than anyone intended.
We set that split on purpose. The large majority of the budget goes to Prospecting and Scale, because acquiring new customers profitably is the only thing that lets a brand grow. Retargeting and Customers get a deliberately small share, and we check each week in Lens that they haven't crept up.
A few rules sit underneath the lanes:
Budgets live at campaign level by default. Meta allocates across ad sets better than a person can. We only set budgets per ad set when there's a specific reason, such as a high-ticket product or a deliberate experiment.
Always optimise for purchases. Optimising for traffic to get cheaper clicks gets you exactly that: cheaper clicks from people who don't buy.
Interests are tested one at a time. Stacking several interests into one ad set just averages them out, and you never learn which one was doing the work. Lookalikes only stay if the account's own history says they earn their place.
The signal has to be clean. Pixel and Conversions API both firing, deduplicated, with order values that match Shopify. Without that, every decision downstream is built on the wrong numbers.
One attribution setting, used consistently. Pick the attribution window you'll judge the account on and don't change it mid-test. Comparing a week read on one setting with a week read on another is how accounts end up chasing numbers that were never real. Where Meta offers incremental attribution, we use it to judge creative, because it estimates the sales that wouldn't have happened without the ad.
H2 · Creative
Since Meta's Andromeda update, you no longer choose your audience and then make ads for it. You make the ad, and Meta works out who it's for. The creative has become the targeting. That changes how creative has to be planned.
Every ad is a concept, and a concept is a person plus a format. "A new parent who wants protein without cooking, shown as a thirty-second morning routine" is a concept. A new headline on last month's best video is not. Andromeda groups ads that look alike, so five variations on the same video count as one ad. Real variety means new people and new formats.
Every brief answers four questions. Who is this for? What's the problem they don't fully see yet? How does the product solve it? What's the offer, and why now? Briefs that skip one of the four produce ads that skip it too.
New ads launch in batches of four to eight, always into a fresh ad set rather than added to an old one, so each batch gets a fair hearing.
Then we leave them alone. A batch gets seven to fourteen days before anyone judges it, depending on spend. Most bad decisions in paid social are made on day three.
Winning is defined before launch, not after. A winner takes a meaningful share of the spend and lands at or under the target cost for a new customer. An ad with a spectacular return on a few pounds of spend isn't a winner, it's a coincidence. If it were genuinely better, Meta would have given it more budget.
At the end of the window, every ad gets one of four verdicts:
| Result | Verdict |
|---|---|
| High spend, on or under target | Winner. Duplicate it into Scale and into a single-interest ad set. Leave the original running |
| Average spend, average results | Leave it alone |
| High spend, poor results | It stops the scroll but doesn't sell. Look at the landing page and the offer before the ad |
| Low spend, poor results | Pause |
We never pause a winning ad to tidy the account. Duplicates are fine. Turning off something that works is not.
Most of the effort goes on what's already working. The bulk of each new batch is variations on proven concepts: a new person in a winning format, a new proof for a winning person. The rest is genuinely new concepts, and these come from research rather than guesswork. Competitors' long-running ads in the Ad Library, your own product reviews and your support inbox are the three best sources we know. A question customers keep asking support is usually an ad nobody has made yet.
The goal is small wins, every week. We're not looking for one ad that doubles the account. We're looking to beat the current best by a few percent, week after week. Those gains compound, and they're far more reliable than waiting for a breakthrough.
AI makes iteration cheap. Variations that once needed a new shoot, a new model, background or hook, can now be produced in hours with AI tools. That's what makes a weekly batch realistic for a smaller brand. The brief still has to be human: AI is good at making the variation, not at deciding which person and problem it's for.
H3 · Weighting
Most accounts spend the same amount every day, on every placement, for every audience. But performance isn't even, so spend shouldn't be either.
Once structure and creative are stable, we look at where the account really earns and move money towards it. Each of these is a separate breakdown:
- Day of week and time of day. Conversion rates move through the week, sometimes sharply. There's often an obvious reason, like weekends or lunch breaks. Sometimes there isn't, and it's still worth acting on.
- Placement and platform. Automatic placements spend money on surfaces your creative was never made for. Facebook and Instagram often behave like two different channels.
- Age and gender, read together. Looked at separately they're vague. Combined, they often show one segment carrying the whole account.
- Country, if you sell into more than one. Costs and conversion rates vary enormously.
- Landing page. The one most often ignored. Plenty of accounts that look like an ads problem are actually a store problem.
That last point is where being a Shopify studio as well as a media team matters. When one page converts at twice the rate of another, we don't just move the traffic. We fix the weaker page.
No single breakdown changes everything. Each is worth a few percent. Stacked over a quarter, they change the shape of the account.
This is also where we watch for saturation. CPM alone can't tell you whether you're reaching new people or showing the same ones your ad for the sixth time. CPMr can: multiply CPM by frequency for the same period and you have the cost of reaching one unique person. Soar With Us have written the clearest explanation of CPMr we've seen. If CPMr is climbing while reach stands still, either the audience is exhausted or the creative has stopped varying enough, and H2 is where the fix starts.
H4 · Control
By default, Meta spends your whole budget and tries to get the best result it can. A cost cap reverses that. You tell Meta the most you're willing to pay for a purchase, and it only spends when it can buy at or under that price.
Used well, cost caps are the most powerful lever in the account. Used early, they're the fastest way to break it. Campaigns stop spending, one ad set swallows the budget, or costs blow straight past the cap anyway.
So H4 has conditions. The structure from H1 has to have run unchanged for around three months. The creative cycle from H2 has to be steady. And the account needs enough consistent spend that Meta has plenty of purchases to learn from. Until then, we don't touch caps.
When we do, the cap isn't a hopeful number. It comes from the business: contribution margin on the first order, plus what a new customer is typically worth over their next few orders. That's the most a new customer is worth paying for. We set the cap from that figure, move it in small steps and never reset it in a panic.
Most cost cap failures come from changing too much at once. Large jumps send the campaign back into Meta's learning phase and undo weeks of progress. So we raise or lower caps gradually, give each change time to settle, and scale by adding budget to campaigns that are already delivering under their cap rather than by loosening the cap itself.
Read through Lens
Ads Manager tells you what Meta thinks happened. Lens tells you what happened to the business.
Lens is OENA's reporting dashboard, and it's where every Horizon account is read. Each week the reading follows the same order:
- The cost of a genuinely new customer, against the ceiling set in H4.
- Blended return across all paid spend, using Shopify revenue rather than platform-reported revenue.
- CPMr and frequency, for saturation.
- The H3 breakdowns, to see where spend should move.
- Creative verdicts from H2.
- Second-order rate for customers acquired from each lane.
The order matters. You only look at the detail once you know whether the account is healthy overall, which stops a good week on one ad set hiding a bad week for the business.
Beyond the horizon
Here's the part no paid media method we've read bothers to write down.
A new customer isn't the end of the job. Whether that first order was worth paying for depends on what happens next: the post-purchase experience, the first flows in Klaviyo, and whether they come back. An account that acquires customers who never return is renting revenue, however good the return on ad spend looks.
So Horizon doesn't stop at the purchase. New customers from prospecting get their own welcome path in Klaviyo. Their second-order rate shows up in Lens next to the cost of acquiring them. And that number feeds back into the ceiling in H4, so the account can afford to pay more for customers who are worth more. The horizon moves as the business learns. That's the point of having one.
Taking a reading on your own account
The full Horizon playbook covers the lane setup and exclusions, the brief template we use for every concept, the verdict table, and the weekly Lens reading sheet.
If you'd rather we took the reading for you, it starts with an Aperture audit. Aperture shows where your account is drifting, Horizon is how we run it from there, and Lens is how you see it working.
The examples in this article illustrate principles, not results. Where we share client outcomes, they're sourced, dated and published with the client's permission.

Are you looking for a new creative growth partner that’s AI first?
Tell us where your brand is and where you want it to go. We’ll show you the engagement that gets it there.






