Action glossary
Every action type the platform can propose, what it means, and what to check before approving.
pause_campaign — Pause campaign
What it does: stops a Meta or Google campaign from spending. Reversible.
Typical reason: the campaign has spent significant budget with zero or near-zero results over the last 30 days.
What to check:
- The spent and results numbers match Ads Manager.
- The campaign isn't being throttled by something fixable (tracking gap, audience too narrow, creative fatigue) — sometimes the fix is upstream, not "pause."
- Is this the client's primary revenue driver? If yes, escalate even if numbers look bad.
Risk: Medium if AED at risk < 5,000. High if ≥ 5,000.
adjust_budget — Adjust budget
What it does: raises or lowers a campaign's daily budget. Capped at ±30% per step by house rules.
Typical reason: scaling a winner up, or pulling a moderate loser down to test.
What to check:
- Direction makes sense (don't raise a campaign with poor ROAS).
- Step size is within ±30% of current.
- Campaign has been stable for at least 3 days before scaling.
Risk: Medium. Always escalate.
refresh_creative — Refresh creative
What it does: flags that we need new ads for a campaign — does NOT auto-create them.
Typical reason: frequency > 2 (creative fatigue) or CTR declining over time.
What to check:
- Frequency genuinely is > 2 (check Ads Manager).
- We have ad assets available from the client. If not, escalate to Thageeshan to request them.
Risk: Low. Just a flag — no live change.
flag_for_review — Flag for review
What it does: raises a structural issue the operator should look at. Not a live change.
Typical reasons: missing WhatsApp track, tracking gap, naming convention broken, deprecated campaign sitting around, audience overlap.
What to check:
- Read the
issuefield — what specifically is flagged. - Triage by impact: tracking gaps are urgent (we're losing attribution), naming is cosmetic.
Risk: Low (no live change), but the underlying issue may be high impact.
launch_creative — Launch creative (future)
What it does: creates a new ad with given copy and creative IDs.
Typical reason: the agent identified a winner pattern and wants to scale it.
What to check:
- Copy follows Clozer voice rules (no em-dashes, "dirhams" in voice scripts, comparison/curiosity hooks).
- Naming starts with
CLOZER. - Targeting is correct for the client's market.
Risk: High. Always escalate.
send_email — Send email (future)
What it does: sends a Klaviyo campaign to a defined segment.
Typical reason: behaviour-based trigger fired (cart abandoners, recent purchases, etc.) or a calendar campaign is due.
What to check:
- Segment size is reasonable.
- Subject line and copy pass the Clozer voice rules.
- This isn't a duplicate of an existing flow.
Risk: High. Always escalate.