What is ROAS and what counts as a good ROAS?
ROAS (Return On Ad Spend) is revenue generated divided by ad spend. If you spend $2,000 and generate $8,000 in sales, your ROAS is 4.0 — or 400%. It answers one question: for every $1 you put into ads, how many dollars come back?
There is no universal "good" ROAS, because the number you need depends entirely on your margins. The figure that actually matters is your breakeven ROAS, which you calculate from your gross margin.
Breakeven ROAS = 1 ÷ gross margin. If your product carries a 40% gross margin, your breakeven ROAS is 1 ÷ 0.40 = 2.5. Anything above 2.5 is profit; anything below is a loss, no matter how good 2.5 sounds. A subscription business with 80% margins can thrive at 1.5 ROAS, while a low-margin dropshipper may need 4.0+ just to survive.
Before you touch anything else, know your breakeven number. Every mistake below is only a problem because of how far it pushes you toward — or past — that line.
Why do too many small ad sets hurt performance?
Meta's delivery algorithm needs roughly 50 optimization events per ad set per week to exit the learning phase and stabilize. When you split a $50/day budget across eight ad sets, no single ad set collects enough conversions to learn. Every ad set stays stuck in learning, delivery stays volatile, and your cost per result climbs.
This is the single most common structural mistake I see. Marketers build 6–10 tightly themed ad sets thinking they're being precise, but they're actually fragmenting the signal. The algorithm can't optimize on 4 conversions a week — it needs volume in one place.
The math is simple: if your cost per purchase is $25, one ad set needs about $175/day (50 × $25 ÷ 7) to reliably exit learning. If you can't fund that per ad set, you have too many ad sets.
- Consolidate: collapse similar ad sets into 1–3 broader ones so each clears ~50 events/week.
- Use Advantage+ Shopping Campaigns (ASC) or CBO (campaign budget optimization) to let Meta allocate spend to the best-performing audience automatically.
- Aim for 2–4 creatives per ad set, not a separate ad set per creative — test creatives inside the ad set, not by splitting budget.
- Stop editing constantly. Every significant edit (budget, targeting, optimization event) resets the learning phase and wastes the last cycle's data.
Should you use broad or narrow targeting on Meta Ads?
In 2024–2025, broad targeting almost always beats narrow interest-stacking — provided your tracking is clean and your creative is strong. Meta's machine learning now finds buyers better than manual interest selection can, because it optimizes against real conversion signal, not your guess about who the customer is.
Over-narrow targeting (say, three stacked interests plus a narrow age range plus a small geo) shrinks your audience to the point where Meta has almost no room to optimize. Small audiences fatigue fast, frequency spikes, CPMs rise, and ROAS decays within days.
The fix is to widen the top of the funnel and let creative do the targeting. A well-made ad that speaks to a specific pain point will self-select the right buyer out of a broad audience far more efficiently than a demographic filter.
That said, broad is not "no strategy." Feed the algorithm a strong conversion signal (see the tracking section), give it room, and reserve narrow audiences for genuine retargeting where intent is already proven.
- Start broad: age 18–65+, minimal interests, country-level or region-level geo — let Meta optimize on the purchase event.
- Keep audiences large enough to exit learning; a good floor for prospecting is roughly 2–5 million+ for most markets.
- Reserve tight targeting for warm retargeting (site visitors, add-to-carts, past purchasers), not cold prospecting.
- Let creative variation, not audience splitting, carry your segmentation.
How long should you wait before judging a Meta ad creative?
Do not kill or scale a creative before it has left the learning phase — that means roughly 3–4 days and at least 1,000–2,000 impressions, or ideally ~50 conversions at the ad-set level. Judging a creative on day one is judging noise, not performance.
New ads almost always show ugly early numbers. Delivery is unstable, the audience Meta is testing is unrefined, and a single cheap or expensive conversion swings the whole metric. I've watched marketers pause a winning creative on day two because CPA looked high, then wonder why the account never scales.
The opposite error is just as costly: leaving fatigued creatives running for weeks. A creative that started at 4.0 ROAS and has decayed to 1.8 over three weeks, with frequency climbing past 3–4, is telling you it's spent.
- Give a new creative a fair window: ~72 hours minimum and enough spend to reach 1,000+ impressions before deciding.
- Judge on trend, not a single day — look at a rolling 3-day and 7-day view.
- Use a real threshold: pause below breakeven ROAS after the learning window; scale winners that hold above target for 3+ days.
- Watch frequency and CPM together — rising frequency with falling ROAS is the fatigue signal to refresh the creative.
Why is conversion tracking and the Conversions API (CAPI) so important?
If Meta can't see your conversions accurately, it can't optimize for them — and every other fix in this article becomes worthless. Since Apple's iOS 14.5 changes (App Tracking Transparency), browser-only Pixel tracking loses a meaningful share of events to ad blockers, cookie restrictions, and opt-outs. That missing signal is the hidden reason many accounts "suddenly" underperform.
The Conversions API (CAPI) sends conversion events server-to-server, directly from your server to Meta, instead of relying only on the browser Pixel. Running Pixel + CAPI together recovers events the browser drops and gives the algorithm a fuller, more accurate signal to optimize against.
The critical detail most people miss: you must deduplicate. Send the same event from both the Pixel and CAPI with a matching event_id so Meta counts it once, not twice. Without deduplication your reporting inflates and your optimization degrades.
Check your Event Match Quality (EMQ) score in Events Manager — aim for 6.0+ out of 10. You raise it by passing more customer parameters (hashed email, phone, name, IP, user agent, fbc/fbp cookies). Higher match quality means more conversions attributed correctly and better delivery.
- Install both the Meta Pixel and CAPI — via a server integration, Conversions API Gateway, or a platform like Shopify's native CAPI.
- Deduplicate every event with a shared event_id and matching event_name across Pixel and CAPI.
- Pass rich customer parameters (hashed email, phone, external ID) to push EMQ above 6.0.
- Verify events fire once in the Events Manager Test Events tool before trusting any campaign data.
Are you optimizing for the wrong conversion event?
Meta gives you exactly what you optimize for — so if you optimize for Link Clicks, Landing Page Views, or Add to Cart, it will find people who click and add to cart but don't buy. Your funnel metrics look busy while revenue stays flat. The optimization event you choose is the instruction you're giving the algorithm.
For a purchase-driven business, optimize for Purchase whenever you have the volume to support it (roughly 50 purchases per week at the ad-set level). That's the event that actually pays your bills, and Meta will hunt for buyers, not browsers.
The nuance is volume. If you're a new store getting only 10 purchases a week, optimizing for Purchase starves the algorithm and it never learns. In that case, optimize temporarily for a reliable higher-funnel event — Add to Cart or Initiate Checkout — that fires often enough to exit learning, then move down to Purchase as volume grows.
I see the wrong-event mistake most often in three forms: optimizing for clicks because they're cheap, optimizing for engagement on a "conversion" campaign, or leaving a low-volume account on Purchase and never exiting learning. Match the event to both your goal and your data volume.
- Optimize for Purchase (or Purchase value) once you clear ~50 purchases/week per ad set.
- Low volume? Optimize temporarily for Add to Cart or Initiate Checkout, then step down to Purchase as data grows.
- Never run prospecting on Link Clicks or Landing Page Views if the goal is sales — you'll buy traffic, not customers.
- Confirm the campaign objective (Sales) and the optimization event agree — a Sales objective optimizing for a soft event is a common misconfiguration.
How do you fix these Meta Ads mistakes quickly?
Work in this order, because each fix depends on the one before it. Tracking first, then structure, then targeting, then creative patience, then the optimization event — there's no point optimizing an account whose data is broken.
Here's the sequence I use on every audit. It takes an afternoon to implement and the learning phase to prove out, so give the account 7–14 days after changes before judging results.
- 1. Fix tracking: install Pixel + CAPI, deduplicate with event_id, and get EMQ above 6.0.
- 2. Consolidate structure: collapse to 1–3 ad sets (or move to Advantage+/CBO) so each clears ~50 events/week.
- 3. Widen targeting: go broad for prospecting, keep tight audiences only for retargeting.
- 4. Be patient with creatives: 72 hours and 1,000+ impressions before you judge; refresh on fatigue, not on a bad day.
- 5. Fix the objective: optimize for Purchase when volume allows, or a higher-funnel event until it does.
- 6. Then, and only then, scale — increase budget ~20% every 2–3 days on winners to avoid resetting learning.
