Fifty purchases a week costs $270 a day, per ad set
Meta's learning phase wants roughly fifty optimisation events in one ad set inside a rolling seven days. Below that the ad set sits in Learning Limited, and Learning Limited is not a warning that clears itself. An ad set that cannot reach the number stays unstable for as long as you leave it running.
Every media buyer knows the number. Almost nobody does the sum against their own budget, so here it is.
The median cost per purchase on Meta this year is about $38. An account spending $80 a day buys two purchases a day at that price, call it fifteen a week. The floor is fifty. A good week does not get you close, and the ad set never leaves learning.
Run it the other way. Fifty purchases a week at $38 each is about $1,900 a week in click cost before the ad set has a stable read on anything. That is roughly $270 a day, per ad set, and it is the price of admission for the word test to mean what people think it means.
Under the floor the dashboard still fills up. The purchase column shows integers. ROAS shows a figure with two decimal places. Both are noise. A purchase-optimised ad set on fifteen events a week has not learned which of your ads finds buyers; it has spent seven days bidding on a guess and reported the outcome with false precision. Move budget towards the ad with the best ROAS in week two and you have rewarded whichever ad got lucky, then reset learning for the privilege.
This is every startup running Meta under $100 a day. It is the post that goes up on r/FacebookAds most weeks, a founder whose media buyer spent $1,200 for two sales asking whether they were robbed, when two sales is not a result in either direction. And it is most of the accounts we audit that believe they are testing creative.
Fifty a week, in one ad set, or Meta is guessing.
A new market is a small account wearing a big logo
The floor is per ad set. A $2M-a-month account clears it fifty times over on the invoice and can still miss it on every ad set it opens. Which means the small-budget problem is what an eight-figure account meets every time it launches a geo, a SKU line or a placement it has not run before.
Take a $2M-a-month account opening Germany with a pilot ad set at $500 a day. That sounds like a serious budget. At a $38 purchase it buys thirteen purchases a day, about ninety a week, comfortably above the floor. Now make it realistic. A new market has no pixel history, the product page is a translation, and the first-purchase CPA in a cold geo usually runs well above the blended number the account is used to. Double the CPA and you are at forty-five a week. Triple it, which I would call normal for the first fortnight, and you are back at thirty. Same fifteen-a-week problem, bigger logo.
The pilot is handicapped twice more before it starts. A new account entering a competitive geo pays 10-15% more CPM while it is learning, so every impression in the pilot costs more than the same impression will cost in month three. And an ad set duplicated from the home market restarts in learning on day one and underperforms for the first 48 to 72 hours, so we build the pilot fresh.
So when the CMO looks at the Germany ROAS in week three and calls it, they are reading noise generated by a handicapped ad set that has never left learning. I have watched this decision get made on far bigger budgets than $500 a day, and it is the founder's $1,200-for-two-sales mistake with three more zeros on it.
The way to read a pilot is the way to read a startup: on impressions and CPM. And what 2,000 impressions on one ad costs depends almost entirely on which market you bought them in, from about $40 in the US to under $4 in India.
What the same 2,000 impressions cost in each market
| Market | Low end of range | High end of range |
|---|---|---|
| US | 16$ | 21$ |
| Canada | 11$ | 14.5$ |
| Poland | 3.5$ | 5.5$ |
| Brazil | 2.5$ | 4$ |
| Vietnam | 1.5$ | 2.8$ |
| India | 1$ | 1.8$ |
| Bangladesh | 0.6$ | 1.2$ |
Andromeda collapses your thirty variants into one ad
Meta described Andromeda on its engineering blog on 2 December 2024 as the retrieval layer of its ads system, the stage before ranking and the auction. Rollout finished across accounts by the start of this year. The mechanical change is simple to state. For one person at one moment, the system scans tens of millions of eligible ads and pulls out roughly a thousand candidates. The ad is being matched to the person. Your audience is no longer being matched to the ad.
This inverts the 2023 playbook, which said make thirty variants of a winner and let the algorithm sort them. In every account we run, near-identical creative now behaves as one thing. Thirty ads sharing a template, a background and a product shot with different text overlays do not get thirty shots at retrieval; they compete for the one slot the system has assigned to that visual. Meta has made this visible. Creative Similarity is a metric in Ads Manager now, and above roughly 60% we see delivery suppressed on the duplicates. We hold it under 40%.
So more variants is not more testing. It is the same test run thirty times with the budget divided thirty ways, and the section on the floor already explained what dividing a sub-floor budget does.
What earns a slot is genuine difference. Four to six ads that differ in hook, format and promise, not in colour. Our standing set for a test is a static, a storytelling UGC clip that opens on the problem rather than the pitch, a carousel, and at least one ad making a different promise about the product altogether. The static is never optional. Statics still carry 60-70% of conversions on Meta, and in a small ad set they are frequently the cheapest CPM in it.
There is a second reason to hold back the other concepts rather than launch everything at once. Fatigue windows have compressed from six weeks or more to two or three under Andromeda. A concept you launch alongside the first four is burning its fresh window while the ad set is still in learning and cannot read it. Bank it. The test ad set gets four to six, and the next four to six wait for the survivors to tire.
One campaign, one ad set, and the budget kept out of Meta's hands
This is the structure we run under the floor. It has one job, which is to give four to six ads a fair read on the auction's signals, and every setting is chosen to stop Meta or the buyer from interfering with that read.
| Setting | What we set | Why |
|---|---|---|
| Campaign | One campaign per objective | Two campaigns on one event split conversions the ad set cannot spare |
| Budget type | Ad set budget (ABO), not Advantage+ campaign budget | CBO hands spend to the first ad it rates and starves the rest |
| Audience | Broad or Advantage+ audience, no interest stacks | The retrieval layer picks the person; interests only override it with a reason |
| Ads | Four to six, distinct in hook, format and promise | Duplicates collapse into one slot and dilute spend |
| Exclusions | Server-side customer list, purchasers in the last 180 days minimum | Meta sells to existing buyers by default and inflates ROAS |
| Optimisation event | Purchase, until the last section says otherwise | Changing it later resets learning |
| Do not touch | Anything, for seven days | Budget moves, creative edits and pauses restart the read |
Under a campaign budget the system spends towards whichever ad produced the earliest signal. On a $586 day I have seen one ad take $450, another $50, a third $20, and the remainder get under $10 apiece, down to twenty cents. Those ads were never tested. The ad set budget removes that lever from Meta and lets impressions distribute widely enough that every ad clears the minimum in the next section.
This now takes a deliberate step. Advantage+ became the default for new campaigns in November 2025, and the February 2026 merge routed sales campaigns through automation unless you intervene. Switching the campaign to an ad set budget disables the Advantage+ campaign budget. Do it at creation, because any change to the campaign budget afterwards carries a two-hour minimum and counts against the seven days of stillness.
Meta will show acquisition ads to your existing buyers unless you hand it the list, and because they convert at several times the rate of strangers, the on-paper ROAS looks healthier than the cold performance is. Upload the purchaser list through the server-side feed, apply it at the ad set level, and do it before launch, because adding an exclusion to a running ad set is a significant edit. Purchase audiences can now be retained for 730 days, so the list can be as long as your repurchase cycle wants it.
Cut on impressions, never on CPA
The test is read on the auction, and the kill rule follows from that.
No decision on any ad before it has cleared 1,000 impressions. That is the absolute minimum. On an account around $80 a day we hold for 2,000 to 3,000 per ad, because that is enough exposure for the market's opinion of the creative to be something other than chance. The same arithmetic decides four ads over sixteen. At $30 a day and a $28-30 CPM you buy roughly a thousand impressions a day; sixteen ads take about sixteen days to reach the minimum, and by then the first ones are into their two-to-three-week fatigue window. Four ads get there in four days.
The first 72 hours are noise. The delivery model forms its view of a creative in the first few hundred impressions and newer ads underperform early because they carry no history, so the ad that looks dead on day one is often the one leading on day five. We do not open the ad set to make changes for seven days, and we do not read it seriously before day seven either.
The sequence we run:
- Launch four to six distinct ads together in the one ad set, on the structure above.
- Hold seven days. Change nothing. Do not pause a slow starter.
- On day seven, confirm every ad has cleared 1,000 impressions. If one has not, the budget is distributing unevenly and the read is not yet fair; wait, do not act.
- Read CPM per ad. A gap of two to three times between ads shown to the same people is a verdict.
- Read CTR-all once each ad has 2,000 to 3,000 impressions.
- Pause the bottom one or two. Never on CPA.
- Leave the survivors alone for four to six weeks. A profitable ad at this spend is rare and slow, and killing it at week two because a competitor account refreshes weekly is a mistake made with somebody else's budget.
Why never on CPA. At fifteen purchases a week across five ads, an ad has three purchases or none, and the difference is a coin flip. A CPA column with two entries in it is an anecdote with a dollar sign, and the auction has already priced every one of those five ads to the cent.
The auction tells you which ad it rates before anyone buys
Two columns in Ads Manager are legible on day three of a sub-floor test, and neither of them is ROAS. CPM is the auction's opinion of the creative. CTR-all is the market's.
CPM first. The auction prices relevance. A high-relevance ad pays 20-40% less per thousand than a weak ad shown to the same people, and in a small ad set the spread is often wider than that. One ad spends $36 to reach 2,000 people while the ad beside it spends more than three times that for the same 2,000, purely because Meta assigned it a higher CPM. Nothing about the audience differed. That gap is the delivery model telling you which ad it wants to show before a single purchase has landed, and it is a cleaner signal than any purchase count the ad set will produce for months.
Then CTR-all, once each ad has its 2,000 to 3,000. In the same ad set, on the same days, we will see ads at 6.5% and 6% and another at 2%. Those are different ads, not different days. For context the median CTR-all sits around 1.8-2.2% and the top quartile above 3%, so 6% is a creative that has stopped the scroll and 2% is one the market has looked past. Link CTR is the stricter version of the same read for a purchase funnel, and below 1% it is in the fix zone.
Where the ad is video, three more columns. Hook rate, three-second views over impressions, above 20% for most verticals; thumbstop above 22% is competitive and 28% is elite. Hold rate, fifteen-second views over three-second views, above 50%. Outbound click ratio above 70%, because below that the ad has bought curiosity and not intent.
Read as a creative strategist, these numbers usually point at the same thing. The first three seconds do most of the job, and in head-to-head tests the storytelling open beats the talking head something like 86 to 14: a problem moment in the first frame, a before-and-after compressed into three seconds, a creator naming the specific moment that made them try the product. The talking head introducing themselves and the brand is the 2% ad. The auction knew that on day two. It priced it accordingly.
Same 2,000 people, three times the price
Same ad set, same 2,000 people, and no purchase yet on either ad. The auction rated one creative and charged $36 for the reach; it rated the other and charged more than triple. Under the floor that is the column you can afford to read, and the ad paying three times for the same people has already lost.
Interests still win when the landing page knows who it is talking to
There is one case where an interest audience beats broad under the floor, and it depends on a precondition most brands do not meet.

An outdoor brand with a nameable buyer persona builds an interest audience for that persona, writes a landing page for that person alone, and runs ads that talk about the thing that person cares about. The return on that ad set against the broad one is several multiples apart, and the multiple is not the targeting. It is the page. Broad hands the click to a generic product page; the interest ad set hands a matched click to a matched argument. Advertorial pages cut CPA 30-40% against sending the same click straight to product, and this is that lever with a persona bolted on.
So the precondition is a product with a distinct, describable buyer and the production budget for a page per buyer. If you cannot write the second page, you do not have the case for the second ad set.
The far commoner version is interests as a comfort blanket, and it is expensive. One apparel account spending $30,000 a day was running fourteen interest ad sets that overlapped each other. CPM crept to $34 over six weeks. Frequency hit 4.2 within 72 hours of a new ad launching. CTR opened at 1.8% on a Monday and was 0.6% by Thursday. Fourteen ad sets were outbidding each other for the same people, and every one of them was under the floor on its own. Overlap above 20-30% between simultaneous ad sets is the signal to consolidate, and I would consolidate at 20.
Cost it honestly. Interest targeting holds on five to eight proven ads because the audience fit is tight; broad wants fifteen to twenty-five assets running above 1.5% CTR and a landing page converting at 3% before it stops losing. Under $1,000 a day, a tight interest audience with its own page is a legitimate choice and sometimes the right one. Above $3,000 a day it is almost always the wrong one, and the chart that follows shows where the line moves.
Broad stops losing somewhere around $3,000 a day
| Daily budget | Broad targeting wins | Interest targeting wins |
|---|---|---|
| Under $500 | 22% | 78% |
| $3K-$10K | 72% | 28% |
| $10K+ | 89% | 11% |
When to stop optimising for purchases altogether
Below roughly $50 a day on a purchase event the ad set will never see fifty purchases, and no structure fixes that. The move is up the funnel.
| Optimisation event | Weekly events for a stable read | When we use it |
|---|---|---|
| Purchase | About 50 | Any ad set that can reach it, and every scaled ad set |
| Add-to-cart | About 10-15 | Sub-floor purchase ad sets after two weeks of climbing cost per result |
| Lead | About 10-15 | Only where the lead is the sale |
Add-to-cart gives the model five to ten times the events at the same spend and stabilises within a week. The buyer cohort it finds lands within a few points of a purchase-optimised cohort, which is far closer than the never-step-down advice admits. Lead clears at the same volume but trains delivery to find form-fillers, and form-fillers and buyers are overlapping populations rather than the same one.
Two rules. Drop to add-to-cart only after two full weeks below the floor with cost per result still climbing. Climb back only after two weeks of steady add-to-cart volume, and switch the event on a fresh ad set, because changing it on a live one resets learning every time. Or accept that fifty events a week is cheap somewhere else and move the money to the market where a 2,000-impression read costs $4.
Then the moment this stops being a small account. Once an ad set clears the floor on its own, the lever changes from reading four ads to volume through a pipeline: six to ten distinct concepts a month while everyone else ships two, 20-plus new ads a month running around 65% higher ROAS than under ten, a 5-7% hit rate that needs 25-50 angles a quarter to feed. Fatigue arrives at a frequency of 2.5-3.5 in seven days and ignoring it costs 25-60% on CPA inside three weeks. A creator roster of three to five producing two to three clips a week runs $200-500 a week. This is a factory, and it needs a person on it full time from the week the floor is cleared.
At either stage, the same six things get accounts killed:
- Thirty variants of one ad.
- Advantage+ campaign budget on a test ad set.
- Interest stacks with no landing page written for that audience.
- An ad set budget moved more than 20% in a day, or paused for more than seven days.
- A pilot ad set judged on ROAS inside six weeks.
- Anyone reading dashboard purchases as a result under the floor.
My call, and I will take the correction in a year if it is wrong. Meta's consolidation of sales campaigns into Advantage+ makes Learning Limited the default state for every account under $20,000 a month within twelve months, because the automation assumes a volume of events the accounts do not have and the interface no longer nudges anyone to notice. The operators who win under that ceiling will be the ones who stop reading CPA below the floor and buy on the auction's signals until the day the ad set can produce fifty purchases of its own.
- Do not ask for or accept thirty variants of one ad.
- Do not run Advantage+ campaign budget on a test ad set.
- Do not stack interests without a landing page written for that audience.
- Do not move an ad set budget more than 20% in a day or pause it for more than seven days.
- Do not judge a pilot ad set on ROAS inside six weeks.
- Do not let anyone tell you the dashboard purchases mean anything under the floor.






