Daily Ads Check
A 5-minute morning check: ad sets ending before the offer does, campaigns that say ACTIVE but spent ₹0, pacing, and one proposed action.
From Sanskar's ad account
On 12 Oct 2026 two ad sets selling a ₹2,999 live session had end_time set to Sunday night. The offer ran until Wednesday. Ads Manager still said ACTIVE, spend went to ₹0, and revenue dropped from about ₹42k a day to ₹3k. Nothing showed an error. This check exists because of that.
On 22 Oct a prepaid ad account hit a ₹22 balance and spend across every campaign quietly stopped. Step 3 catches that in the first minute.
Install
Run this once in your terminal. Claude Code picks the skill up in your next session, in every project.
mkdir -p ~/.claude/skills/daily-ads-check && curl -fsSL https://talktoads.com/skills/daily-ads-check/SKILL.md -o ~/.claude/skills/daily-ads-check/SKILL.mdFor one project only, use .claude/skills/daily-ads-check inside the project instead.
Then ask
Run my daily ads check
The skill
What the agent follows, from the SKILL.md you download.
A short check to run every morning before you touch anything. The goal is to catch the quiet failures. A broken ad usually doesn't show an error: it says ACTIVE, spends ₹0, and your sales drop.
Needs the TalkToAds connector (Meta). Read-only until the user approves the one action at the end.
Steps
-
Pick the account. Call
list_ad_accounts. If there is more than one, ask which ones to check, or check all of them. -
Yesterday's numbers. Call
get_performancewithobject_id= the account,level: "campaign",date_preset: "yesterday". Note spend, results, cost per result and ROAS per campaign. -
ACTIVE but ₹0. Call
list_campaignswithstatus: "ACTIVE". Any campaign that is ACTIVE but spent 0 yesterday is broken. Check, in this order:- ad set
end_timealready passed (list_ad_sets) - ads stuck in review or rejected (
list_ads, look ateffective_statusandad_review_feedback) - billing: prepaid balance used up, or a card that failed. TalkToAds can't see the balance, so tell the user to open Billing in Ads Manager.
- ad set
-
Ad sets ending soon. Call
list_ad_setsfor the account withstatus: "ACTIVE". List every ad set whoseend_timeis in the next 48 hours. Ask the user when the offer it promotes actually ends. If the offer runs longer, propose extending the end date. -
Learning and pacing. From the same ad sets, flag anything
LEARNING_LIMITEDinlearning_stage_info. Compare yesterday's spend with the daily budget. Under 50% means it isn't delivering, over 120% is normal Meta overspend for a day. -
Report, then one action. Write a short report:
- Yesterday: total spend, results, cost per result, ROAS (say that ROAS is Meta's number, not your bank's)
- Broken: the ACTIVE-but-₹0 list with the reason
- Ending soon: the ad sets and their end dates
- One proposed action, the most valuable one. Then stop and wait for a yes.
Rules
- Never change anything without a yes. This skill reads; the user decides.
- One action, not ten. If everything is fine, say "nothing to do today".
- If spend dropped to near zero across the whole account, check billing first. It's almost never the ads.
- When the user changes an offer date, change the ad set end dates in the same session.