- Identifies campaigns LOSING money (ROAS
<1.0x) - Identifies campaigns UNDERPERFORMING (1.0x ≤ ROAS
<target) - Separates true waste from opportunity cost
- Provides severity-based classification (CRITICAL/HIGH/MEDIUM)
- Generates actionable recommendations with expected impact
- Shows top performing campaigns for budget reallocation
- Total wasted spend (campaigns with ROAS
<1.0) - Total underperforming spend (profitable but below target)
- Campaign-by-campaign breakdown with severity levels
- Specific recommendations (PAUSE/REDUCE/OPTIMIZE)
- Quick actions for immediate implementation
- Budget reallocation suggestions
- Account goals table (user-set or API-pulled)
- 90-day historical average ROAS
- Default to 2.0x if no data available
- 🚨 CRITICAL: ROAS
<0.5x (losing money severely) - 🔴 HIGH: ROAS
<1.0x (unprofitable/breakeven) - 🟡 MEDIUM: 1.0x ≤ ROAS
<target (profitable but underperforming)
- lookback_days: 7, 30, 60, 90, or 120 days (default: 30)
- start_date: Optional start date (YYYY-MM-DD). Overrides lookback_days when used with end_date.
- end_date: Optional end date (YYYY-MM-DD). Overrides lookback_days when used with start_date. ⚠️ DATE CLARIFICATION: If the user’s date request is vague or ambiguous (e.g., “March to June” without a year, “last quarter”, “recently”, “a few months ago”), ask the user to specify exact dates before calling this tool. Do not assume or guess dates.
- target_roas: Optional override (e.g., 3.0 for 3.0x ROAS)
- customer_id: Optional (uses connected account if omitted)
- User asks “where is my money going?”
- User wants to identify wasted spend
- User wants to optimize campaign budgets
- User asks which campaigns to pause/reduce
- User wants to know which campaigns are losing money
- Wasted Spend = Actual losses (ROAS
<1.0, you’re losing money) - Underperforming Spend = Opportunity cost (profitable but below target)
- Campaign A: Spent $1000, got $600 back (ROAS 0.6x) → $400 WASTED
- Campaign B: Spent $1000, got $1500 back (ROAS 1.5x, target 3.0x) → $0 wasted, but $500 opportunity cost
- ⏳ LEARNING campaigns → Do NOT pause. Monitor for 14+ days before judging.
- ❓ INSUFFICIENT_DATA campaigns → Need more spend before analysis is meaningful.
- 🚨 CRITICAL campaigns (established, 14+ days, ZERO conversions) → Consider pausing
- 🚨 CRITICAL campaigns (established, 14+ days, HAS conversions) → Review performance, verify revenue in ad platform before reducing budget
- 🔴 HIGH severity (established, 14+ days) → Consider reducing budget by 50-70%
- 🟡 MEDIUM → Optimize targeting, ad copy, landing pages
- Top performers → Consider increasing budget
OpenAPI
/api-reference/openapi.json post /api/v1/tools/analyze_wasted_spend/execute