Sweat Pants Agency

Sweat Pants Agency Research · Meta & Paid Social

Meta Ads Benchmarks: What $400M in Spend Reveals About CAC and ROAS

We used the Meta MCP and Claude Opus 4.8 to test which levers actually move CAC and ROAS across our portfolio of US ecommerce brands. Hook rate doesn't. Here's what does, and the folklore we can finally retire.

By Eric Carlson, Co-Founder, Sweat Pants Agency·Published July 2026 · 12 min read

Headline findings

~0

correlation between hook rate and ROAS across 11 brands

77%

of spend captured by the top 10% of ads

5–6%

CAC tax after any budget increase, at every jump size

40–45%

of a conversion-rate gain reaches CPA; Meta reabsorbs the rest

About the analysis

Sweat Pants Agency is a Meta Premium Partner. We've managed close to $400M in ad spend over the life of the agency and currently run $4M to $8M a month across our portfolio. That vantage let us stop theorizing and check which levers inside Meta actually move the numbers that matter, and which just decorate a dashboard.

How we ran this research

  • Population. US ecommerce (DTC) brands in our managed portfolio. Every brand is anonymized and referenced by vertical only.
  • Method. Data pulled directly through the Meta MCP and analyzed with Claude Opus 4.8. Every result is computed from live account data.
  • Sampling. Each test drew a sample sized to reach significance for its specific question, not run across the whole portfolio. Sample sizes stated on every finding.
  • Rigor. Revenue is Meta-attributed. ROAS is never compared across brands (subscription and one-time-purchase economics aren't comparable), so all such analysis is within-account.

Finding 01 · Creative metrics

Hook rate and hold rate do not predict ROAS

Walk into any creative review and you'll hear it: "the hook rate is low, we need a stronger first three seconds." Whole creative strategies, and agency pitches, are built on thumb-stop ratio and watch-through. Across video ads in 11 brands we correlated each creative's metrics with the outcomes that pay the bills (CAC and ROAS), computed within each account and then pooled.

Hook rate and hold rate had essentially no relationship with either: hook rate landed at +0.06 vs CAC and −0.19 vs ROAS (slightly the wrong way), hold rate +0.05 and −0.10. CTR was just as flat. The single creative signal that tracked profit was post-click purchase conversion rate: −0.46 with CAC, +0.39 with ROAS, agreeing in 9 of 11 brands. AOV was close behind (+0.37 with ROAS).

Correlation with ROAS by creative metric
0+0.5−0.5Correlation with ROAS (positive = better)Purchase conv. rate+0.39AOV+0.37CPM+0.10Retention (watch-through)+0.06CTR (all)+0.02Outbound CTR+0.02Hold rate-0.10Hook rate-0.19

Purchase conversion rate and AOV move with ROAS; hook rate, hold rate, retention, and CTR sit at or below zero. Video ads across 11 brands, pooled within-account. Watch metrics defined: hook rate = 3-second views ÷ impressions; hold rate = ThruPlays ÷ impressions; retention (watch-through) = ThruPlays ÷ 3-second views.

The mirror-image test is CPA. If a metric truly predicts profit, it should flip signs between the two charts (positive on ROAS, negative on CPA). Only purchase conversion rate does. Hook rate is the tell: it sits at −0.19 vs ROAS and +0.06 vs CPA, agreeing with itself that higher hook rate is, if anything, slightly worse for both.

Correlation with CPA by creative metric
0+0.5−0.5Correlation with CPA (positive = worse)Purchase conv. rate-0.46CPM0.00Retention (watch-through)+0.03CTR (all)+0.02Outbound CTR+0.03Hold rate+0.05Hook rate+0.06

Same 11 brands, mirror-image view. Only purchase conversion rate lowers CPA (−0.46). Hook rate slightly raises it (+0.06). Retention, CTR, and CPM are flat. AOV was not measured against CPA in this run. Read the two charts together: a metric that predicts profit should flip sign between them.

Why it happens. Meta optimizes delivery toward conversions, not attention. Hook and hold measure curiosity (whether the first frame stopped a scroll), which is a different thing from intent to buy. A pattern-interrupt hook can pull cheap views from people who were never going to purchase, inflating engagement while CAC stays flat or worse.

What to do

  • Grade creative on post-click conversion rate and AOV. Put those two on the scorecard and demote the rest.
  • Use hook rate diagnostically, not as a KPI. A weak first second might explain no delivery. But a high hook rate is never a reason to keep a losing ad.
  • Kill the "we need higher hold rate" mandate. Optimize the click-to-purchase experience: offer, landing page, proof.

Finding 02 · Spend concentration

A tiny fraction of ads carries the whole account

Two camps argue past each other: "just make a few great ads" versus "flood the account with volume." Both miss what the delivery data actually looks like. Spend is brutally concentrated. Across the brands we examined, the top 5 ads captured 30–53% of all spend. In a full-year teardown of one account's 101 ads, the top 10% of ads took 77% of the budget, while 54% of ads never spent $100 and 72% never reached $500. Roughly half of everything launched was dead on arrival.

Spend is brutally concentrated
Never spent $10054% of adsUnder $500 lifetime72% of adsTop 10% of ads (77% of spend)10% of ads

Full-year distribution of one account's 101 ads. Half never got a real audition; the top 10% took most of the budget. Winner-take-most is the shape.

Why it happens. Meta's delivery is a winner-take-most system. Once it finds an ad that converts for a given audience, it pours budget in and starves the rest. That's not a bug. It's the optimizer doing its job.

What to do

  • Measure creative velocity in meaningful launches (ads that clear a real spend floor (say $250 in 7 days)), not raw ad count.
  • Don't over-polish every asset to the same finish. Most won't earn delivery. Invest in a steady supply of testable concepts and in scaling the winners.
  • Build reporting around the top 5–10 ads and the meaningful-launch rate, not the full roster.

Finding 03 · CVR pass-through

Meta reabsorbs most of a conversion-rate gain

Post-click purchase CVR is the one creative metric that predicts CAC and ROAS (Finding 01). The natural next assumption: double your CVR and CPA halves. The math looks airtight: CPA = cost per click ÷ conversion rate. Across 10 accounts, the elasticity of CPA to CVR was −0.35 (median), not the −1.0 that full pass-through would produce.

In plain terms: when conversion rate doubles, CPA falls only to about 78% of its prior level. That's a ~22% cut, not 50%. You keep roughly 40–45% of the improvement; Meta reabsorbs the rest. The signature was consistent: cost per click rose with conversion rate in all 10 accounts (median slope +0.65), while CPM barely moved (+0.17).

Doubling CVR does not halve CPA
0%25%50%75%100%100%Prior CPA50%If pass-through were full(−50%)78%Actual CPA after 2x CVRCPA as % of prior CPA (after 2× CVR)

Full pass-through would put CPA at 50% of prior when CVR doubles. In reality it lands near 78%. Meta reabsorbs the rest, mostly through higher cost per click. 10 accounts.

Why it happens. Because CPC can only rise if CPM rises or CTR falls, we traced the mechanism. CTR falls: in all 10 accounts, higher-converting ads pull fewer but higher-intent clicks per impression. So each click costs more, and that rising click price eats most of the CVR gain before it reaches your CPA.

What to do

  • Keep chasing conversion rate. It's still the highest-leverage creative and landing-page metric.
  • Model ~40–45% pass-through when forecasting the CAC impact of a CVR test. A doubled CVR is a ~20% CPA win, not a 50% one.
  • Rising CPC on your best ads isn't necessarily a problem. It's Meta pricing in in the quality you built.

Finding 04 · Scaling cost

Scaling has a near-fixed CAC tax, and small steps don't dodge it

"Scale in small steps, 10–20% at a time, to avoid spiking CAC." Around 511 budget increases across 10 brands, raising spend raised CAC by about 5–6% for the following week, at every jump size. A +10% bump carried roughly the same penalty as a +50%+ one. Directionally consistent in 8 of 10 brands, with wide magnitude variance.

CAC lift by size of budget increase
+0%+2%+4%+6%+8%CAC lift over prior 3-day baseline+5.2%+10% jump+5.1%+20% jump+5.8%+30% jump+6.1%+50%+ jump

A +10% bump carried roughly the same ~5–6% CAC penalty as a +50%+ one. The tax is closer to a fixed toll for moving than a penalty that scales with size. 511 events across 10 brands.

We re-ran the increases and tracked CAC out to 14 days. For a big jump (30%+), CAC stays 4–7% above baseline through the first ~9 days, peaks in days 6–9 (~+6.5%), and only settles back within ~3% of baseline in days 10–14. The "week-ish" tax is really closer to ~10 days.

How long the scaling tax lasts
+0%+2%+4%+6%+8%+10%day 0days 1–2days 3–5days 6–9days 10–14Big jumps (30%+)Small jumps (10–30%)

CAC lift vs the prior 3-day baseline after a budget increase. Big jumps peak days 6–9 (~+6.5%) and only settle back within ~3% by days 10–14. 227 events across 10 brands.

Why it happens. Any meaningful budget change nudges the ad set back into exploration and pushes delivery into less efficient auctions. That cost is closer to a fixed toll for moving than a penalty that scales with size, which is why small steps don't dodge it.

What to do

  • Stop tiptoeing. If the unit economics work at +5–6% CAC for a week and a half, fewer, larger increases are no worse per dollar than many small ones, and trigger fewer learning resets.
  • Budget the ~5–6% CAC bump into your scaling plan and give each move about 10 days to settle before the next.
  • Judge a scale decision on the blended week-and-a-half after, not the first jumpy day.

Finding 05 · Launch cadence

There's a "right amount" of launches, and the payoff is delayed

Two versions circulate: "launch more to bring CAC down this week," and its opposite, "volume just resets learning." Both treat launch volume as a same-week lever. Grouping each account's weeks into low / medium / high launch volume, medium-launch weeks had the best same-week CAC (standardized −0.24), high-launch weeks the worst (+0.08), and low weeks in between (−0.18).

Launch cadence sweet spot (same-week CAC)
0.00−0.30+0.30Standardized CAC (lower is better)-0.18Low-0.24Medium (sweet spot)+0.08High

Standardized same-week CAC by launch-volume tercile within each account. Medium-volume weeks (roughly 8–10 launches) beat both extremes. High-volume weeks are worst. 12 brands.

And the payoff from launching showed up about two weeks later, not the same week: heavier launch weeks were followed by better ROAS and lower CAC two weeks out (pooled median ROAS correlation +0.20, CAC −0.21), improving in 9 of 12 accounts.

In absolute terms the efficient cadence clustered around 8 to 10 new ads per week. The surprise: it did not scale with budget. Small accounts (under ~$15k/week) ran 8–16 launches per $10k; the largest accounts (over $50k/week) ran under 1 launch per $10k. The sweet spot is a fixed number of ads, not a fixed percentage of budget.

Launches per $10k of weekly spend, by account size
launches per $10k of weekly spendUnder $15k/wk12$15–27k/wk4$27–50k/wk1.5Over $50k/wk0.6

Launch cadence is roughly flat in absolute terms across brands, so launches per dollar drop steeply as spend rises. Bigger accounts feed proven winners rather than launch more. 12 brands.

What to do

  • Aim for a steady ~8–10 launches per week. Don't scale test volume linearly with spend. Past ~$40–50k/week, put incremental dollars into proven ads.
  • Judge a launch sprint on a ~2-week lag, not the same week. Reacting to same-week CAC will make you kill winners early.
  • If same-week CAC jumps after a big drop of new creative, expect it. That's the learning phase, not a failure.

Free audit

Curious how your account scores on these levers?

We'll tear down your Meta account the way we did our portfolio and show you where the money actually is. No pitch, just the read.

Get a Free Ad Account Audit

Finding 06 · CPM

High CPMs did not produce worse customers

"Our CPMs are too high" is one of the most common panic buttons in paid social. We split every video ad into low / mid / high CPM thirds within each account. CPA was flat across all three tiers ($80.3 / $79.3 / $78.9), and the most expensive-to-reach third had the best post-click conversion rate (2.9% vs 2.3%). Within-account, higher CPM even tracked slightly higher ROAS (positive in 9 of 11 brands).

CPM terciles: no CAC penalty for reach cost
CPA ($)Purchase CVR (%)Low CPM$80.32.3%Mid CPM$79.32.6%High CPM$78.92.9%

Within-account CPM terciles. CPA is flat across all three. The high-CPM third has the best post-click conversion rate. 11 brands.

Why it happens. CPM is a price set by an auction, and the auction charges more to reach people more advertisers want. That frequently means higher-intent, higher-value audiences. When you chase a lower CPM you usually do it by broadening into cheaper, lower-intent inventory. You win the CPM line and lose the CAC line.

What to do

  • Stop optimizing to CPM. Judge audiences and creative on CPA and ROAS, and let CPM float.
  • Don't reject a creative or audience because its CPM is high. If it converts, the expensive impressions are paying for themselves.
  • When someone flags "CPMs are up," ask what CPA and ROAS did. Usually the answer is "nothing," and there's no action to take.

Finding 07 · Ad survival

The first week is the cull. Survivors earn a real runway.

Following six launch cohorts across six brands over three months: ~74% of ads were still delivering after 7 days, ~62% after 14, and ~30% after 30. The first week does most of the killing. Clearing it changes the outlook. Ads that survive their first week run a median of roughly 3 more weeks, and a few evergreen winners run for months.

Ad survival curve
0%25%50%75%100%launchday 7day 14day 30day 60day 9074% @ 7d30% @ 30d

Percentage of a launch cohort still delivering after N days. The first week is the cull; the ads that survive it earn a median ~3-week runway. 6 cohorts across 6 brands.

What to do

  • Stop judging new ads on day-one and day-two numbers. The week-1 cull is doing the sorting for you.
  • Give week-1 survivors room to run instead of rotating them out on a fixed schedule. You're often killing ads that still had weeks left.
  • Identify and protect evergreen winners. Don't sunset a still-profitable ad because it's "old."

Finding 08 · Picking winners

Meta ranks winners quickly. Naming the #1 takes longer.

"Meta knows the winner in 72 hours, so kill the early losers." Across 6 launch cohorts (6 brands), week-1 spend predicted an ad's eventual total spend at Spearman 0.49 to 0.94, averaging 0.79. So the early ranking is a strong signal. But the exact week-1 spend leader was the eventual #1 in only 1 of 6 cohorts. The front-runner usually got overtaken.

Why it happens. Early spend is Meta's best guess under uncertainty, and it keeps exploring. As more conversions come in, it revises, sometimes promoting the ad that was second or third out of the gate.

What to do

  • Trust the rough ranking, not the #1. If an ad is clearly in the bottom group after a week, fine, but don't anoint the day-1 leader.
  • Give a fresh batch a couple of weeks before culling. The eventual champion is often a slow starter.
  • Don't restart tests just because the leaderboard reshuffled in week two. That's expected.

Finding 09 · Budget cuts

Cutting budget is not a clean mirror, and churning it doesn't help

"Cut spend and CAC snaps back." Cutting spend did not reliably lower CAC across 10 brands. Only large, rare cuts (30–50%) moved the pooled median down at all (−4% to −7%), and the direction flipped account to account. Separately, weeks with more frequent large budget swings showed no consistent CAC benefit (pooled correlation near zero, −0.05 across 10 brands).

Why it happens. Whether cutting helps depends on whether you were genuinely oversaturated, which is account-specific. Constant large changes keep resetting the learning phase; restlessness costs the stability efficient delivery needs.

What to do

  • Cut hard only when you have real evidence of saturation (rising frequency plus falling marginal ROAS), not as a reflex.
  • Reallocate with intent, not for motion's sake. Frequent big swings didn't buy efficiency.
  • Prefer a smaller number of deliberate budget decisions to daily fiddling.

Finding 10 · Structure

Consolidation helps modestly. ABO vs CBO is a wash.

Endless threads argue over the "correct" account structure and ABO vs CBO. Across 17 brands, more active campaigns went with modestly lower ROAS (Spearman −0.38): the highest-ROAS accounts ran very few campaigns, while sprawling 97–100 campaign accounts sat mid-pack. On ABO vs CBO (16 brands): no clean winner. 7 brands run mostly ABO, 9 mostly CBO, both at high and low ROAS.

Active campaigns vs account ROAS
1x2x3x4x4.5x0255075100active campaigns per accountaccount ROAS

Fewer campaigns → modestly higher ROAS (Spearman −0.38). Consolidation concentrates the conversion signal Meta optimizes on. A tendency, not a law. 17 brands.

Why it happens. Splitting spend across many campaigns thins the conversion signal, so Meta optimizes each on sparser data. Consolidation concentrates that signal. Budget-optimization type is mostly a workflow preference. Both ABO and CBO can scale well.

What to do

  • Lean toward a consolidated campaign layer (a few campaigns,, let ad sets do the spreading).
  • Pick ABO or CBO to fit how you test and scale. Stop treating the choice as make-or-break.
  • Spend the energy you'd waste on structure debates on creative and offer instead. That's where the ROAS signal actually lives.

Finding 11 · Format blend

Video-led, but not all-video

"Video is everything, go all-video." On a simple average across 10 brands, ~68% of spend and ~67% of ads were video (median ~77%). But the blend runs the whole range: two personal-care brands sat under 45% video (static carried the majority), while subscription and entertainment brands ran 90–100%. There is no single correct blend.

Video share of spend, by brand vertical
Hair care100%Pet subscription99%Games & entertainment96%Pet gear94%Arts & crafts84%Outdoor gear83%Kids cooking kits81%Men's grooming44%Personal care42%Gourmet food9%

Average ~68%, median ~77%, but the blend runs 9–100%. Grooming and personal-care brands sit under 45%; subscription, entertainment, and pet brands run 90–100%. Format fit is category-specific. 10 brands.

In the 5 accounts running both formats at real volume, static and video were essentially at parity. Median static CPA within ~5% of video, ROAS ratio 0.99. In one account, static actually beat video (CPA 16% lower, ROAS 21% higher).

What to do

  • Don't assume video is more efficient. In the accounts running both at real volume, static and video landed within ~5% on CAC and were even on ROAS.
  • Blend by what your own CPA and ROAS show per account, not by a house rule.
  • If your static share is near zero, that's a gap worth closing.

Finding 12 · Winners & format

Winners skew video, but that's mostly a production artifact

Across 7 brands, the top-10 spending ads leaned at least as video as the account overall in every case (pooled median 100% of top-10 spend was video vs ~84% across all ads (a +4.5-point skew)). But the largest skews came from accounts that had a real static tail the winners just didn't draw from. And one personal-care account was genuinely static-led (only 4 of its top 10 was video).

Read a video-heavy top-spend list as a reflection of what you produced, not proof that video converts better. On a like-for-like efficiency basis (Finding 11), it doesn't. Set your mix from each account's own CPA and ROAS.

Findings at a glance

#QuestionHeadline findingSample
1Which creative metrics predict ROAS?Hook rate, hold rate, and CTR sit at ~0 vs ROAS. Post-click purchase CVR is the only creative signal that tracks profit.11 brands
2Do high CPMs hurt performance?CPA was flat across CPM tiers ($80 / $79 / $79). The high-CPM third converted best.11 brands
3How concentrated is spend?Top 10% of ads captured 77% of spend. 54% never spent $100.5 + full-year deep dive
4What's the CAC tax after a scale?~5–6% at every jump size. Peaks days 6–9. Clears by days 10–14.10 brands, 511 events
5How fast does Meta pick a winner?Week-1 spend predicts the eventual ranking (0.79 avg). Day-one leader won only 1 of 6.6 cohorts
6How long do ads survive?74% alive at 7d, 62% at 14d, 30% at 30d. Survivors run ~3 more weeks.6 cohorts
7Does launching more ads help?Sweet spot at 8–10 launches/week. Payoff lands ~2 weeks later, not same week.12 brands
8Does Meta reabsorb a CVR gain?Elasticity −0.35. 2x CVR = ~22% CPA cut, not 50%.10 brands
9Do budget cuts mirror increases?No. Only large 30–50% cuts modestly lowered CAC. Churning budgets buys nothing.10 brands
10Consolidated vs fragmented?Fewer campaigns → modestly higher ROAS (Spearman −0.38). ABO vs CBO is a wash.16–17 brands
11Image vs video blend?~68% of spend is video on average (median 77%). Range 9–100%. No universal blend.10 brands
12Do winners skew video?Top-10 over-indexes to video by ~4.5 pts, mostly because these accounts are already video-led.7 brands

What we'd do with this

Every finding points the same way, and it's how we've run accounts for years: optimize for what makes money, not for what looks good on a dashboard. Grade creative on post-click conversion and AOV, not hook or hold. Stop fearing high CPM. Expect a few ads to carry the account and feed the machine enough meaningful launches to find them. Give week-1 survivors room. Scale when the math works, in fewer, larger steps. Keep structure lean.

It's why we optimize client accounts to net-new CPA, ROAS, MER, and LTV. here's how we run paid media on Meta.

Frequently asked questions

How was this research conducted?

Data pulled directly through the Meta MCP and analyzed with Claude Opus 4.8. Every figure is computed from live account data across US DTC ecommerce brands in our managed portfolio. Revenue is Meta-attributed. ROAS is never compared across brands (subscription and one-time-purchase economics aren't comparable), so all such analysis is within-account. Each test drew a sample sized to reach statistical significance for its specific question, from 2 brands (daily budget deep-dives) up to 18 brands (launch cadence).

Why doesn't hook rate predict ROAS if Meta shows it in every dashboard?

Meta optimizes delivery toward conversions, not attention. Hook rate measures curiosity (whether the first frame stopped a scroll) which is a different thing from intent to buy. A pattern-interrupt hook can pull cheap views from people who were never going to purchase, inflating engagement metrics while CAC stays flat or worse. In our 11-brand sample, hook rate landed at +0.06 vs CAC and −0.19 vs ROAS (slightly the wrong way). Judge creative on post-click purchase conversion rate and AOV.

If a doubled CVR only cuts CPA by ~22%, is landing-page optimization still worth it?

Yes. It's still the highest-leverage creative and post-click lever we found. It just isn't a one-for-one CAC lever. The mechanism is that higher-converting ads pull fewer but higher-intent clicks per impression, so CPC rises and eats about 55% of the CVR gain before it reaches CPA. Model ~40–45% pass-through when forecasting the CAC impact of a CVR test, not 100%.

Should I scale in small 10–20% increments to avoid the CAC tax?

No. Across 511 budget increases at 10 brands, a +10% bump carried roughly the same ~5–6% CAC penalty as a +50% one. The tax is closer to a fixed toll for moving than a penalty that scales with size. Fewer, larger, well-timed increases are no worse per dollar than many small ones, and they trigger fewer learning resets. Budget the tax in and give each move ~10 days to settle before the next.

What can't this research measure through the Meta MCP?

Two questions we wanted to answer aren't exposed by the current API: whether ads with multiple primary-text and headline variants beat single-variant ads (the creative endpoint returns only one body and one title), and FLEX vs non-FLEX performance (the flexible-format flag isn't surfaced). Both would require the raw Marketing API asset feed. We flagged both rather than guess.

Method & transparency

All brands anonymized and referenced by vertical only. Data pulled via the Meta MCP and analyzed with Claude Opus 4.8; every figure is computed from live account data. Revenue is Meta-attributed; ROAS is never compared across brands (subscription vs one-time-purchase economics aren't comparable), so all such analysis is within-account. Sample sizes stated per finding, from 2 brands for daily budget deep-dives up to 18 brands for launch cadence, 11 brands for the creative correlations, 10 brands for the CVR pass-through test, and 6 launch cohorts for the survival and winner-speed work. Ad-level analyses use a 90-day window; account-level analyses use 12 months.

What we could not measure with the Meta MCP. Two questions aren't exposed by the API today: whether ads with multiple primary-text and headline variants beat single-variant ads (the creative endpoint returns only one body and one title), and FLEX vs non-FLEX performance (the flexible-format flag isn't surfaced). Both would require the raw Marketing API asset feed. We'd rather say so than guess.

Want this analysis run on your account?

Give us access and we'll show you what's actually predicting your CAC, which ads are quietly wasting budget, and where the next winner is hiding. Free, and yours to keep.

Get a Free Ad Account Audit

Related research