Safe AI integration with an ad account — 2026 checklist
3 fundamental principles
The entire AI ↔ ad account integration rests on 3 principles. Without them, the rest doesn't matter:
1. Least privilege (give the minimum permissions needed)
The agent gets only as much access as it actually needs for its task — and nothing more. Not "full admin access just in case". Read-only by default. Write access only when there is a specific, documented, one-off task and a separate go-ahead from you. If the agent "reports" — it doesn't need permission to edit budgets. Ever.
2. Separation of duties
Different tasks = different agents = different tokens. One "super-agent" with access to Google Ads, GA4, Merchant Center, CRM and email is risk centralization. When it falls over — everything goes. Therefore: the reporting agent separately, the data extraction agent separately, the ChatGPT analysis agent separately (and that last one is best run WITHOUT a live account connection).
3. Audit by default
Every agent action is logged automatically — with identification of "who" (agent), "for whom" (the user whose permissions it uses) and "what" (action). The audit log is not an option you enable when there's a problem. The audit log is the foundation without which you'll never detect a problem before you see the financial impact.
OAuth scopes — granting the minimum
An OAuth scope is simply the "permission range" an app asks for when it logs in. The Google Ads API has one "full" scope (https://www.googleapis.com/auth/adwords) — read + write across the entire account. Grant this scope only when you genuinely need to give the AI write access. In 95% of cases an AI agent only needs to read reports.
Practical approach (at the application + user level):
| Agent use case | What to grant |
|---|---|
| Reports / dashboards | Read-only user on the account + adwords scope (read-only app) |
| CSV data extraction | Read-only user on the account |
| ChatGPT analysis via copy-paste | No integration. Copy CSV, paste into ChatGPT — zero OAuth |
| Auto budget optimization | Standard user + extra restrictions (max daily % change) |
| Creative editing | Standard user + sandbox first, then production |
| Everything + adding users | NO. Admin only for the human in charge |
Google Ads role hierarchy:
- Admin — full access + adding users. Only for you (the owner) or one trusted person
- Standard — edit campaigns, no right to add other users
- Read-only — read only
- Email-only — notifications only (no panel)
For an AI agent: Read-only in 95% of cases. Exception is an agent that actually executes optimizations — then Standard with additional restrictions (max daily % change, list of allowed action types, daily report to you).
RBAC for team and agency
RBAC (Role-Based Access Control) is simply "who has what access to the account". In Google Ads that's user management. A pattern that works:
| Role | Google Ads access | Notes |
|---|---|---|
| Business owner (you) | Admin | One Admin per account, ideally with a hardware key (e.g. YubiKey — a physical USB stick used for login) on the Google account |
| Agency / freelancer running the account | Standard | Campaign edits, no admin |
| Agency junior / analyst | Read-only | Can learn, can't break things |
| Internal analyst | Read-only | CSV export → analysis |
| AI agent (reporting) | Read-only (separate account / token) | NOT on your personal account |
| AI agent (optimization) | Standard + restrictions | Only after a full audit |
RBAC red flags I still see too often:
- One shared admin account for the entire agency — when 1 person leaves, you must disconnect EVERYONE and rebuild access
- AI agent on your personal admin account — when the agent (or its vendor) falls over, you fall over with it
- "Forever" tokens — every integration should have a timeout, even if it means re-authorising every week
- Service-account email as a personal Gmail — a service account (a separate Google account used only for integrations, not for daily work) should sit on your business domain so you can reclaim it if someone leaves
- No rotation — a quarterly review (who still needs access?) is the minimum, not the maximum
Audit log — what to monitor
Google Ads has a built-in Change History (Tools & Settings → Account → Change History). Everything that happens on the account is logged there. The question is not "do I have a log" — it's "is anyone looking at it".
Practice that works:
- Monthly export of Change History to Google Sheets (Apps Script or manually) — you keep history even if Google ever truncates it
- Alerts on unusual changes: budget spike > 20% in 24h, mass campaign pauses, new user added, new OAuth token issued
- Weekly review — 10 minutes on Friday, scan the week's changes. Do I see anything not from me or the agency?
- Hourly anomalies — changes at 3 AM on a Polish account are suspicious by default
What specifically to monitor:
- Budget changes (> 20% in 24h = alarm)
- Conversion changes (adding / removing goals — critical)
- User changes (new user = alarm, verify the email)
- API access changes — Google Ads Change History logs campaign / budget / conversion / user changes. New OAuth token issuance is not logged there — check it at myaccount.google.com → Security → Activity
- Mass pause / enable of campaigns (bot pattern)
Without an audit log, you won't detect a leak until you see the financial impact — which is already too late.
10-point pre-integration checklist
Before you connect an AI agent to a Google Ads account (or anything valuable), go through 10 points. Every ✓ is a concrete action, not philosophy:
- Minimum scope (read-only by default). If the vendor asks for write — ask "exactly why?". Without a concrete answer → NO.
- Dedicated service account. Not your personal Google account. Set up a separate Google account on your business domain, with its own password and a hardware key (e.g. YubiKey — a physical USB stick used for login), used only for the AI integration.
- Short-lived tokens (max 24h, auto-rotate). If the vendor says "token forever" — red flag.
- IP allowlist where possible. The agent runs from specific IPs — list them in Google Cloud Console.
- Audit log enabled + monitoring. Weekly review minimum.
- Quarterly access review. Each quarter: who still needs access? Anything to remove?
- Incident response plan (see section below). Written before the problem, not during.
- Sandbox environment for tests. Test the agent on a separate Google Ads account (test account) before releasing to production.
- Code review of the integration (if custom-built). An independent pair of eyes on code that touches your money.
- Vendor due diligence. Ask for: SOC2 Type II certification and GDPR compliance (these are standard security credentials you should require from any serious vendor), server location, incident history, breach response plan.
If even 2 points are unmet or the vendor dodges specifics — DON'T connect. This is not pessimism, it's the procedure you routinely expect from banks and insurers.
Incident response — what to do when it leaks
It will leak someday. Maybe not your token, maybe a vendor on your side, maybe an agency. The assumption "this won't happen to me" is the most common reason a first response takes 4 hours of mistakes rather than 5 minutes of action. A plan worth having printed:
Step 1 (first 5 minutes) — Revoke the OAuth token
OAuth tokens for external apps (AI agents, SaaS tools) are managed at the Google Account level, not inside the Google Ads panel. Go to myaccount.google.com → Security → Third-party apps with account access → find the suspect app → Remove access. Revoke any tokens you're unsure about — better too many than too few (you can re-authorize later).
Additionally in the Google Ads panel (Tools & Settings → Account Access) remove any service accounts / users added as part of the integration — that's a separate access mechanism from OAuth tokens.
Step 2 (15 minutes) — Secure the Google account
Change the password on the main Google account + enable a hardware key (e.g. YubiKey — a physical USB stick used for login) if you don't already have one. Also check two-step verification (2FA) — do you have backup methods that aren't the same phone as the primary one?
Step 3 (30 minutes) — Review Change History
Google Ads → Tools & Settings → Account → Change History → last 7 days. Are there unusual changes? Check especially: budgets, conversions, users, campaigns active / paused.
Step 4 (1 hour) — Roll back changes, if any
If you spotted unintended changes — undo them manually. Google Ads Change History shows "before → after", so you know what to restore. If many changes — export changes + restore from a saved copy of the campaign (if you have one).
Step 5 (24 hours) — Notifications and lessons learned
If it's a client account (agency → client) or your account with client data (e-commerce with conversion data) — notify the client. If the leak was on the vendor's side — notify the vendor and demand a post-incident report. Write down lessons learned: how it happened, how long it took to detect, what I'm changing so it doesn't repeat.
Keep this plan in a visible place (Notion / team document / printed). Searching for a procedure during a panic is worse than not having one.
- Manifesto — where AI helps, where it hurts the account
- API keys, OAuth — what not to paste into ChatGPT
- AI Max — what Google doesn't say
- MCP and AI agents — who reads your ad account
- Safe AI integration with an ad account (you are here — series finale)
About the sources: Article based on Cowork — AI Agent Permissions 2026, Aicuflow — Enterprise AI SSO/RBAC/Audit, Stacklok — Best MCP platforms 2026, RootCX — AI Agent Governance, WitnessAI — Agent Access Control, Arcade.dev — Secure AI Agent Connections + observations from JP Ads client accounts. Numbers from my practice are labelled "from my experience".