AdCopilot docs
Guides

The daily routine

Run AdCopilot's morning Google Ads audit — a fixed, read-only six-check sequence that reports spend, wasted spend, negatives, disapprovals, and pacing, then proposes approval-gated fixes.

View as Markdown
Open inChatGPTClaudePerplexity

The daily routine is a fixed, read-only audit followed by approval-gated proposals. The assistant inspects and reports, then proposes — it never changes the account on its own, and it can never delete.

Ask for it with:

Run my AdCopilot morning audit.

That runs AdCopilot's morning-audit prompt, which every connection has with nothing to install. Two more prompts come with it: growth-audit covers Google Ads plus whichever of Search Console, Analytics and Tag Manager you connected, and weekly-report is the Monday summary. Where the account's own analysis tools cover a check (wasted spend, negatives, pacing), the assistant calls full_audit and quotes its numbers instead of doing the arithmetic itself.

Before you start

  • If the assistant does not know an account's monthly plan cap (budget target), it asks once. Without it, spend is reported as a raw number and the cap check is marked "no cap set."
  • It identifies accounts with list_accessible_customers, and consults get_resource_metadata rather than guessing a field name.

The six checks

Run in order, per connected account. Checks 2–6 use the search tool and are read-only. cost_micros ÷ 1,000,000 = amount in the account currency. Date ranges are never written into the query: pass start_date and end_date as YYYY-MM-DD and the connector adds the quoted segments.date filter itself.

  1. Accounts in scope — list_accessible_customers.

  2. Spend vs plan cap — month-to-date cost against the cap. resource: campaign, fields: campaign.name, metrics.cost_micros, with start_date = the 1st of the month and end_date = today, which reaches Google as:

    SELECT campaign.name, metrics.cost_micros
    FROM campaign
    WHERE segments.date BETWEEN '2026-09-01' AND '2026-09-16'
  3. Wasted-spend ranking — highest-cost search terms with little to show, flagging near-zero conversions. resource: search_term_view, fields: search_term_view.search_term, metrics.cost_micros, metrics.conversions, metrics.clicks, orderings: metrics.cost_micros DESC, limit: 50, and the last 30 days as two dates:

    SELECT search_term_view.search_term, metrics.cost_micros,
           metrics.conversions, metrics.clicks
    FROM search_term_view
    WHERE segments.date BETWEEN '2026-08-17' AND '2026-09-15'
    ORDER BY metrics.cost_micros DESC
    LIMIT 50
  4. Negative-keyword candidates — the clearly off-intent terms from that ranking worth blocking.

  5. Disapprovals — ads switched off by policy. No date range on this one:

    SELECT ad_group_ad.ad.id, ad_group_ad.policy_summary.approval_status,
           ad_group_ad.policy_summary.policy_topic_entries
    FROM ad_group_ad
    WHERE ad_group_ad.policy_summary.approval_status != 'APPROVED'
  6. Pacing — project month-end spend from MTD cost and the fraction of the month elapsed, compared to the cap.

The report

Each account ends with a compact table and a plain verdict per row — OK, WATCH, or ACT:

Account: <name> — <id> (<currency>)   Window: <start> to <end>

Check                 Result                             Verdict
Spend vs plan cap     $X MTD of $Y cap                    OK
Wasted spend          $X on N zero-conversion terms       ACT
Negative candidates   N off-intent terms ($X)             ACT
Disapprovals          N ad(s) disapproved                 ACT
Pacing                projecting $X — Z% of cap           WATCH

Turning ACT into proposals

For each ACT row the assistant writes a specific, approvable proposal, then stops and waits for your yes:

  • Wasted spend → pause the offending keyword (update_keyword → PAUSED) or lower its bid. Never removed.
  • Negative candidates → add_negative_keywords with the exact terms and level. The connector can add a negative but cannot remove one, so reversing it is a Google Ads UI action — the assistant says so.
  • Disapprovals → surface the ad and its policy reason; the fix is usually a corrected ad you review.
  • Pacing over cap → reversible budget or bid changes; if a campaign must stop, pause, never delete.

After an approved change, the assistant reports how to undo it — almost always the opposite call.

Make it a habit: the daily check-in and the Monday summary

Two artefacts, one habit. The daily check-in is this audit, run every morning. The Monday summary is the same read over the past week. Pick the recipe for the client you actually use — AdCopilot runs in the cloud, so the schedule lives in your client, or, when it ships, in AdCopilot on your explicit say-so (Recipe C), and nothing outside your control can put the account on a timer.

Recipe A — Claude (Scheduled tasks)

In Claude, open Scheduled tasks → New task. Set it to Daily at 08:00 (your time), and leave "Require this computer" off — AdCopilot runs in the cloud, so your machine doesn't need to be on. In Instructions, paste:

Use the AdCopilot connector's growth-audit prompt for your business name. This is read-only — don't make any changes. Give me the Check / Result / Verdict table in plain language, then the top 3 things to fix, most impactful first, as numbered options.

For the Monday summary, add a second task set to Weekly, Monday 08:00 with:

Use the AdCopilot connector's weekly-report prompt for your business name. Read-only.

Run it once by hand first so you see what arrives and can supply the monthly plan cap. On Claude Code the same pair works, plus a claude -p cron one-liner if you prefer the terminal.

Recipe B — ChatGPT (Tasks)

ChatGPT does not list connector prompts, so the task is written in plain English instead:

Every day at 8am, run my AdCopilot growth audit and message me the summary.

Every Monday at 8am, send me my AdCopilot weekly report.

Check that the task lists the AdCopilot connector, then trigger it once by hand. Honest caveat: if ChatGPT lets you — we have not yet verified that a scheduled ChatGPT Task can call a connector's tools, so if the first run comes back empty, use Recipe A instead.

Recipe C — AdCopilot running it for you (not yet)

AdCopilot running the check-in on its own schedule, server-side is a paid feature that does not run yet. There is a Routine card in the app, and it refuses with that message rather than pretending — nothing you can switch on there will put your account on a timer today.

When it ships it will be included from Starter, and the click on that card will be the consent record: a routine will never be switchable on from inside an AI client. Nothing about Recipes A and B changes when it lands — the bring-your-own-scheduler path stays free on every plan, including Free.

On this page