The AOV-to-Cost-Cap Formula: How to Set Meta Bid Caps for Shopify Brands by Margin

A few years back I throttled a perfectly good campaign to almost nothing, and it took me longer than I'd like to admit to work out why.
We had a winning ad. Strong hook, healthy click-through, the kind of creative you want to pour money into. So I dropped it into a cost-capped ad set, set the cap at what I thought was a "safe" number well below our actual target, and turned the budget up. The logic in my head was simple: tell Meta to never pay more than this, and I can't lose.
It barely spent. Three days, almost no delivery, and the few purchases that came through were no cheaper than the rest of the account. I'd strangled it.
The mistake wasn't the cost cap itself. It was that I'd picked the number out of thin air instead of working backwards from the maths. A cost cap isn't a wish. It's a CPA ceiling, and if you set it below what your funnel can actually produce, Meta just sits on its hands.
Here's how I set them now, and how we group products so the caps hold.
Start from AOV and your target ROAS, not from a hunch
A cost cap is a cost-per-acquisition control. So the only honest way to set one is to decide what you can afford to pay for a purchase, and that falls straight out of two numbers you already have.
Take your average order value and your target ROAS. Say you're a homewares brand sitting at a $50 AOV, and you want a 2:1 return on that spend. Fifty divided by two is twenty-five. Your target CPA is $25. That's the most you can pay for a purchase and still hit the return you want.
That $25 is your anchor. Everything else moves around it.
Now, a quick honesty check before you go further. That maths uses gross ROAS, not net. A 2:1 gross return on a 60% margin product is a very different business to a 2:1 on a 25% margin product. If your margins are thin, your real affordable CPA is lower than the headline number suggests, and I'd rather you find that out on a calculator than three weeks into a scale-up. Run the cap off what you can genuinely afford after cost of goods, not off the vanity ROAS.
Vary the cap across prospecting and retargeting
Here's the bit most people miss. If you're running cost caps across cold and warm audiences, the same number shouldn't sit on both.
Retargeting converts cheaper. Those people already know you, so a purchase there costs less to win. Prospecting is where you're paying full freight to find someone new. If you put one flat cap across the whole funnel, you're either capping prospecting too tight (and it won't spend) or letting retargeting run looser than it needs to.
So I'll spread it around the anchor. With that $25 target, I might set the prospecting cap a touch higher, say $28, because cold traffic genuinely costs more to convert and I want it to have room to breathe. Then I'll set the retargeting cap lower, maybe $22, because warm audiences should be hitting that comfortably. The blended result across the campaign still lands near the $25 I actually want.
This does two things. It lets each audience spend where the opportunity is, and it stops the cheap warm purchases from flattering your numbers while prospecting quietly stalls.
Group your products by AOV so the cap means something
This is the part that makes caps reliable at scale, and it's where a lot of accounts come unstuck.
A cost cap assumes the products behind it share roughly the same economics. But if you lump a $30 item and a $120 item into the same ad set under a single $25 cap, that cap is nonsense. The $25 is far too generous for the cheap product and far too tight for the expensive one. Meta gets a muddled signal and delivery goes sideways.
So when I'm building a cost-capped scaling ad set, I group products by similar AOV. One ad set holds your products clustered around a $50 order value. Another holds the ones sitting closer to $120. Each ad set gets its own cap, worked off its own AOV at your target ROAS.
For the $50 cluster at 2:1, that's a $25 cap. For the $120 cluster at the same 2:1, it's $60. Same logic, different number, and now each cap actually reflects what those products can deliver. I'll usually name the ad set with the AOV right in it so nobody on the team has to guess what the cap is doing.
You can read this straight off your ad performance, by the way. The ads that share an order value tend to cluster together. Let them tell you which products belong in which lane.
Why a high budget plus a real cap is the safe way to scale
Once the cap is set off proper maths, the budget stops being scary.
The instinct is to creep budget up slowly so a cost cap doesn't blow your CPA. With a properly set cap, you can do the opposite. Put a genuinely high budget behind a proven ad, set the cap at your real target, and let Meta decide how much of that budget it can actually deploy at that cost.
The cap is the brake. The budget is just headroom. If the ad can find purchases at $25, it'll spend into that big budget. If it can't, it pulls back on its own. You're not relying on willpower to throttle it, the cap does that for you.
The thing to be clear-eyed about: a high budget on a capped ad set does not mean it'll spend the lot. Some days it might spend the full amount, some days a fraction, occasionally a little over. That's the cap working, not a setting you got wrong. I've watched founders panic when a $500/day capped ad set only spent $180, assuming something broke. Nothing broke. Meta just couldn't find more purchases at your price that day.
The number to never talk yourself into
The temptation, always, is to set the cap lower than your target "just to be safe". Don't.
A cost cap isn't a magic floor that forces cheap purchases into existence. If you set a $25 target down to $15 because it'd be lovely to acquire at $15, Meta won't oblige. It'll just refuse to spend, because it can't find purchases at a price your funnel doesn't support. That's exactly the hole I dug for myself years ago.
If anything, set the cap at your true target or a dollar or two under, never a fantasy number. The cap should reflect what the account can actually do, not what you wish it'd do. A cap set to reality scales. A cap set to a wish sits there doing nothing while you wonder what's wrong.
So the whole sequence is: work your affordable CPA off AOV and a margin-honest ROAS, vary it across cold and warm, group products so each cap matches its own economics, then put real budget behind it and let the cap govern the spend.
Where to take this next
If your caps are throttling delivery, nine times out of ten it's one of three things: the number was plucked from nowhere, your AOV grouping is mixing products that don't belong together, or the cap is set below what your margins can genuinely fund. Pull your scaling ad sets up and check them against the maths in that order.
And if you've been staring at capped ad sets that won't spend and can't tell whether it's the cap, the grouping, or the creative underneath, that's exactly the kind of thing a fresh read sorts out fast. A Signal/Noise Audit walks your account structure, your unit economics, and your creative history together, so you can see whether your caps are set to reality or quietly working against you. Worth doing before you turn the budgets up again.
What's the gap right now between the cost cap you've set and the CPA your margins can actually afford? If you don't know that number off the top of your head, that's the first thing I'd go and work out.
.webp)





