Your Meta ads were hitting 5x ROAS for 6 months. Then Tuesday morning, performance falls off a cliff. CPL doubles, close rate drops, account manager has no clear answer. Sound familiar? We've debugged this exact pattern 200+ times across contractor accounts. There are 5 specific causes — fixing the wrong one makes things worse.
Reason 1: Creative Fatigue (Most Common — 40% of Cases)
Same creative running 60+ days. Meta's algorithm rewards creative novelty — same audience seeing the same ad 5+ times stops engaging, CTR drops, CPC rises, ROAS collapses.
Diagnostic
- Check Frequency in Ads Manager for last 7 days
- If average frequency is 4.0+: you're in fatigue territory
- If CTR has dropped 30%+ from your 30-day baseline: confirmed fatigue
Fix
- Launch 2-3 new creative variations within 7 days
- Kill the lowest-performing creative in your active set
- Aim for 2-3 ads in active rotation per ad set, not just 1
- Schedule creative refreshes every 60-90 days going forward
- Expected recovery: 14-21 days to baseline ROAS
Reason 2: iOS Attribution Loss (30% of Cases — Often Hidden)
If you don't have Conversion API installed, you're losing 30-50% of conversion signal due to Apple's privacy changes. Meta's algorithm optimizes against what it can see — without CAPI, that's the cheapest impressions (worst audiences). Performance silently degrades over months.
Diagnostic
- Compare Meta's reported conversions vs your CRM-recorded conversions
- Delta of 30-50% suggests attribution loss
- Open Meta Events Manager — check if 'Server' shows as event source
- If only 'Browser' shows: no CAPI installed
Fix
- Install Meta's Conversion API via Stape, Trackify, or your CRM's native integration
- Send ALL events server-side (PageView, Lead, Purchase)
- Verify 'Server' shows as event source within 24-48 hours
- Expected recovery: 14-21 days to see 30-50% performance restoration
Reason 3: Audience Saturation (15% of Cases)
Running the same Lookalike Audience for 6+ months may have reached most of your addressable audience already. The algorithm is fighting for the remaining 60%, which is harder to convert.
Diagnostic
- Check Reach % in Ads Manager — if you've reached 40%+ of target audience size, you're saturating
- CPL slowly rising over months without creative fatigue signs (Frequency under 4.0)
- Lookalike Audience based on same seed for 6+ months without rebuild
Fix
- Expand to 3% Lookalike (broader audience)
- Layer in 5% Lookalike or interest-based audiences as separate ad sets
- Refresh Custom Audience with newer customer data (rebuild monthly with last-12-months customers)
- Add a retargeting layer for warm audiences who didn't convert first time
- Expected recovery: 7-14 days
Reason 4: Seasonality / Market Shift (10% of Cases)
Most contractor trades have seasonal demand. Roofing peaks in storm season + Q4 push. HVAC has dual peaks. Plumbing spikes Q1 (frozen pipes) + Q4 (holiday clogs). If performance dropped at same time of year you're seeing demand soften, it's seasonality — not the ads.
Diagnostic
- Compare performance drop date to your trade's seasonal pattern
- If you're outside peak season (e.g., HVAC May-Oct), expect 20-40% CPL increase as natural drop in demand
- Check Google Trends for your service in your geo — if interest dropped, demand dropped
Fix
- Switch creative to seasonally-relevant offers (HVAC: spring tune-up specials in March; furnace pre-buy in October)
- Reduce ad spend 20-30% during deepest seasonal lulls (don't fight the demand wave)
- Layer in evergreen services that don't have the same seasonal pattern (maintenance plans, financing offers)
- Pre-position creative 4-6 weeks BEFORE seasonal demand spikes
Reason 5: Account-Level Issue (5% of Cases — Catastrophic When It Hits)
Sometimes Meta flags your account for review (ad-policy violations like 'free' language, financing claims, weight-loss adjacent content). Account flags suppress ALL your delivery until resolved.
Diagnostic
- Check Account Quality in Business Manager
- Look for 'Restrictions' section
- If account quality score is 'Poor' or specific ads are flagged: you've got an account-level problem
Fix
- Review the Account Quality dashboard for specific restrictions
- Submit appeal if restrictions exist (most are reversible if you remove the policy-violating element)
- Audit recent ads for policy issues: 'free' claims, before/after weight-loss imagery, financing without proper disclaimers
- Replace any flagged creative with policy-compliant variations
- Recovery time: 7-30 days after appeal resolution
The 5-Minute Diagnostic Flowchart
- Step 1: Check creative ages. Any over 60 days? → Reason 1 (creative fatigue)
- Step 2: Is Conversion API installed? → No: Reason 2 (iOS attribution)
- Step 3: Check audience reach %. Over 40%? → Reason 3 (saturation)
- Step 4: Is performance drop seasonal? → Reason 4 (seasonality)
- Step 5: Check Account Quality. Any restrictions? → Reason 5 (account flag)
Most performance drops are Reason 1 (creative fatigue) or Reason 2 (iOS attribution loss without CAPI installed). Together they cover ~70% of cases. If you're stumped, fix those two first.