A client came to me with a familiar story: CPA doubled, leads dropped, ROAS tanked. “Meta used to work — now it feels like we’re just burning cash.”
We checked the setup — Pixel worked, events fired, creatives refreshed. But deeper down:
• no Conversions API,
• no event_id,
• optimization goal triggered once a week.
Meta wasn’t broken — it was blind.
Meta is smart, but only if you feed it data. Without signals, it guesses — and wastes your budget.
Here’s what typically breaks campaign learning:
• No server-side tracking (CAPI)
• No visibility = no learning
• Optimizing for rare or junk events. Like unqualified leads — Meta learns from noise
• Missing event_id, email, phone. No match = no attribution = bad decisions
• No creative testing/rotation. Same banners = no learning = stagnation
• Short attribution windows. If your sales cycle is 10 days but Meta tracks 7, conversions are lost
• Too few conversion events. <50 per week? Learning remains unstable
To stop the budget drain, here’s the checklist I follow:
• Hybrid tracking: Pixel + CAPI. Non-negotiable — don’t launch without it
• Pass event_id + customer data. Meta needs identity to optimize
• Optimize for mid-funnel goals. “Price request” > “purchase” — more signals, faster learning
• Track revenue-tied actions. Clicks are noise — use custom events via API if needed
• Weekly CRM reconciliation. Don’t trust Meta blindly — verify everything
Meta doesn’t try to waste money — it just reflects the inputs you give it.
Feed garbage → get garbage decisions → pay for it.
What to do:
• set up strong tracking;
• optimize for business-relevant events;
• cross-check Meta data with CRM and GA4.
That’s how campaigns stop being guesswork — and start scaling with clarity.
If you work with GA4 to BigQuery exports, be sure to check out my SQL cheat sheet.