Guide
AI advertising: a complete guide to agentic ad operations
AI advertising is not auto-apply suggestions and smart campaigns. It is an operator that reads your accounts continuously, proposes specific changes with before-and-after diffs, and executes only what you approve.
What "agentic" means in advertising
Every ad platform ships some form of automated recommendations. Google Performance Max optimizes automatically. Meta Advantage+ adjusts targeting. These tools operate inside the platform with limited visibility into what they changed and why.
Agentic advertising is different in three ways. First, the agent works across platforms simultaneously — Google Ads and Meta in V1, LinkedIn and TikTok on the roadmap — reading a unified picture of spend, performance, and pacing. Second, the agent proposes changes before making them, with an explicit before-and-after diff. Third, every write that hits a live account requires a human approval step that is recorded in an append-only audit log.
The practical effect: you see what the agent intends to do before it does it, you can push back or edit, and you have a complete record of every change with the reasoning that generated it.
The three-layer architecture of agentic ad ops
SpendSignoff separates concerns into three layers that correspond to three different risk profiles:
- Read layer — the operator continuously syncs campaign structure, spend, bids, and performance into SpendSignoff at platform-native refresh rates. No human action required. Reads are ungated on every plan, including Free.
- Draft layer — when the operator detects an optimization opportunity, it produces a
propose_changeobject with the full change specification: what changes, what the current value is, what the proposed value is, and the signal that triggered it. The draft lands in the approval queue. - Approve layer — only a human running the two-step Approve and push live → Confirm control in the SpendSignoff app pushes a change to the live account. The AI client has no
mcp.approvescope. The write is recorded in the KMS-signed audit log with the draft ID, the approving user, and a timestamp.
What kinds of changes the operator proposes
Budget reallocation is the most common draft type. The operator sees that Campaign A is pacing to exhaust budget by 2 PM while Campaign B is under-delivering at the same cost-per-conversion. It proposes moving $X from B to A for the remainder of the day, shows the projected impact on impression share, and puts the draft in the queue.
Bid adjustments come next. When a keyword group is converting at a CPA well below target, the operator proposes a bid increase within a ceiling you set. When cost-per-click is rising and quality score is dropping, it proposes a bid decrease or a pause, with the supporting metrics shown inline.
Negative keyword additions are the third high-frequency type. The operator reads the search term report, finds queries with significant spend and zero conversions, and drafts them as campaign-level or account-level negatives with the cost already spent shown as the justification.
Ad copy and audience changes are in the roadmap. V1 focuses on the three change types above because they account for most of the money moved in a typical account.
The spend boundary is enforced at the server, not the client
mcp.read and mcp.draft scope boundary in the FastAPI core — the single policy authority. The AI client you use (Claude, ChatGPT, Cursor, or any other) physically cannot issue a write that reaches the ad platform. The scope boundary is not a UI convention; it is the only path through the backend. Every live change is gated behind the approval queue and recorded in a KMS-signed append-only log.Cross-platform attribution: why it changes decisions
Google Ads and Meta both claim credit for the same conversions. A buyer sees your Google Search ad, does not click, later sees your Meta retargeting ad, clicks and buys. Google attributes zero. Meta attributes one. Your platform-specific ROAS numbers are both wrong.
SpendSignoff reads both platforms and builds a normalized metric_fact substrate that deduplicates conversions by a consistent window. The cross-platform ROAS number in the reporting tab is not a Google number plus a Meta number — it is a unified view with overlap removed.
This changes budget decisions materially. The platform that looks worse on its own dashboard often looks better in the unified view because it is doing top-of-funnel work that the other platform closes.
Getting started with agentic ad operations
Four steps from zero to a running operator:
Connect your AI client
Add the SpendSignoff MCP server to Claude Desktop, ChatGPT, or Cursor. The OAuth 2.1 flow requests mcp.read and mcp.draft. The setup takes under two minutes.
Authorize Google Ads and Meta read-only
OAuth into each ad platform from the SpendSignoff accounts screen. The first read syncs campaign structure and 90 days of performance data. No write permissions are requested at this stage.
Let the operator run its first analysis
Ask: "What is the highest-cost, lowest-ROAS campaign I have right now and why?" The operator reads both platforms, cross-references spend and conversions, and returns a plain-English answer with the supporting numbers.
Approve your first draft
The operator will find something to propose within the first session — a budget shift, a negative keyword, or a bid adjustment. Review the before → after diff in the approval queue. Approve it. Watch the change confirm in the live platform. Check the audit log entry.
V1 platforms: Google Ads and Meta
Next
Google Ads automation
Detailed mechanics of the SpendSignoff autonomy loop for Google Ads accounts.