Wasted Ad Spend · Overall signals
How can I evaluate the cost-effectiveness of my social media advertising?
Seven metrics evaluate social-media ad cost-effectiveness: CPM, CPC, CPA, ROAS through a 7-day-click 1-day-view window, frequency under 4 on cold audiences, conversion rate above 2 percent on landing pages, and CAPI deduplication rate over 95 percent. The CAPI rate is the one most founders skip. Without it, the ROAS number is fiction.
Why Meta cost-effectiveness reads differently than Google
Meta Ads Manager shows you a number. Shopify shows you a different number. TikTok Ads Manager shows you a third number that disagrees with both. None of them are lying. Each platform is measuring a different slice of the same purchase, with different windows, different attribution models, and different signal-loss adjustments stitched on after iOS 14.5 and the App Tracking Transparency rollout.
Reading Meta and TikTok cost-effectiveness correctly means looking at seven metrics in a fixed order. Each one answers a separate question. Stacked together, they describe whether the spend is working or burning.
CPM: the price of attention
Cost per thousand impressions is the cleanest signal of audience saturation and creative fatigue. Median Meta CPMs for ecommerce in the home and furniture vertical sit between $18 and $35. Anything above $50 on a cold prospecting audience almost always means the creative is losing the auction to fresher work in the same audience pool.
Diagnostic: pull CPM by ad set over a rolling 14-day window. If CPM rises more than 30 percent without a corresponding lift in ROAS, the audience is fatigued, the creative is fatigued, or the bid strategy is fighting itself. Refresh the creative before raising the budget.
CPC and click-to-conversion ratio
Cost per click tells you whether the hook is doing its job. The click-to-conversion ratio (clicks divided by purchases) tells you whether the landing page is.
A reasonable Meta CPC for a Shopify home brand sits between $0.80 and $2.20. TikTok runs cheaper on impressions but expensive on commercially qualified clicks, often $1.50 to $3.50 against a cold audience. On home and furniture accounts, the social-CPC ranges sit inside a tighter band than the cross-vertical median.
Click-to-conversion ratio should stay below 8 percent on a healthy account. The math: if 100 people click and fewer than 8 purchase, the offer-to-page match is broken, the page is slow, or the audience is being mis-targeted upstream. The platform will keep spending against the wrong signal because it has no way to know.
CPA against contribution margin
Cost per acquisition only matters in relation to contribution margin. A $48 CPA on a product with a $90 contribution margin is healthy. The same CPA on a $35 contribution margin is bleeding.
Build the calculation once and post it where the team can see it. The Wasted Spend Calculator handles the directional math if a clean number is not already documented.
ROAS, and which attribution window to read
This is where most founders trip. Meta defaults to 7-day-click plus 1-day-view (often written 7DC/1DV). That window is the closest thing to a fair read post-iOS 14, but it still gives Meta a generous claim on conversions that any honest model would attribute elsewhere.
The reliable practice:
- Read 7DC/1DV in Meta for directional campaign health.
- Read 7-day-click only when comparing against Shopify’s source-of-truth dashboard.
- Read 1-day-click only when stress-testing whether a campaign holds up under the strictest window.
If ROAS at 7DC/1DV looks strong but 1-day-click ROAS collapses below 1, the campaign is harvesting credit for purchases it did not cause. That gap is the loudest single signal of attribution drift.
Frequency on cold audiences
Frequency is impressions per unique user. On cold prospecting audiences, anything above 4 inside a 7-day window is the threshold where CPM rises, CTR falls, and CPA inflates in step. The audience has been served the same ad too many times.
Warm and retargeting audiences tolerate higher frequency (8 to 12 across 14 days), because the intent is already there and repetition closes the loop. Cold audiences punish it.
Pull the frequency column at the ad-set level weekly. When it crosses 4 on a cold ad set, rotate the creative before the bid logic starts compensating with higher CPMs.
The CAPI deduplication contract
This is the metric most founders never check, and the one that determines whether everything above is signal or noise.
Post-iOS 14.5, the browser pixel loses a meaningful share of conversion events. The Conversions API (CAPI) sends server-side events to fill the gap. The catch: every browser event needs to match a server event by event_id, or Meta double-counts the purchase. The deduplication rate inside Events Manager should sit above 95 percent. Anything below 90 percent and the reported ROAS is mathematically wrong.
The Tracking Stack reference walks through the dedup contract in full, including the event_id handshake, the fbp/fbc cookie passthrough, and the hashed-customer-info match keys that lift Meta’s Event Match Quality score above 7 (the score below which signal loss compounds quickly).
If the dedup rate is unknown, fix that before reading any other metric on this page. The order matters.
Quick-reference benchmark table
| Metric | Meta benchmark (home/furniture ecom) | TikTok benchmark | Threshold for concern |
|---|---|---|---|
| CPM | $18 to $35 | $8 to $22 | Above $40 sustained |
| CPC | $0.80 to $2.20 | $1.50 to $3.50 | Above $3 on cold |
| Frequency on cold | Under 4 per week | Under 5 per week | Above 6 |
| 7-day-click ROAS | 3x to 5x | 2x to 4x | Below breakeven |
| CAPI dedup rate | Above 95 percent | Above 90 percent | Below 85 percent, ROAS unreadable |
Why Meta-reported ROAS often disagrees with Shopify
A Meta-reported 4.2x ROAS against a Shopify-reported 1.9x ROAS is normal in a poorly tracked account and recoverable in a well-tracked one. Three contributors:
- View-through credit. Meta claims purchases inside a 1-day-view window. Shopify does not. Strip the view-through column to compare like-for-like.
- Last-click bias on Shopify side. Shopify’s default report credits the last touch, often an organic or direct session that Meta legitimately introduced. Neither view is fully honest. Both are useful.
- CAPI dedup failure. If the same purchase fires once through the pixel and once through CAPI without matched
event_ids, Meta counts it twice. The gap to Shopify widens. The fix lives in the tracking stack, not in the bid strategy.
The free Setup Audit at /audit is the same checklist I open before every paid engagement on a Meta cost-effectiveness rebuild; founders who want me to run it for them can book a thirty-minute call.
Read the rest of the wasted-ad-spend library for the campaign-side diagnostics. The metrics on this page are useless without the tracking foundation under them.
Related questions
-
How can I identify if my online ad campaigns are overspending?
Five signals that confirm ad campaigns are leaking budget, the metrics that flag each one, and the diagnostic order to use on Google and Meta accounts.
Read the answer
-
Signs my pay-per-click budget is being inefficiently spent
Seven signs your PPC budget is leaking: search-term drift, branded overlap, low Quality Scores, bid-strategy mismatch, and the fix order on Google Ads.
Read the answer
Want this diagnosed in your account?
Same diagnosis,
run on your account.
Thirty minutes on the phone. I look at your spend, your tracking, and your search-term reports before the call. You walk out with a clear list of what is leaking and what to fix first.