What businesses actually want from Google Ads automation
Nobody I talk to asks for an "AI agent". They describe a problem, and it is almost always one of these four:
- Paying more per click than the market asks. A bid ceiling set once and never revisited quietly drifts above what the clicks are worth.
- Budget leaking into searches that were never meant for you. The ad shows for a product you do not sell, and every click is paid at full price.
- Nobody has time to read the search terms report. It is the most useful page in the account and the one that gets opened least.
- Small budgets rarely fit an agency retainer. A Google Ads budget of a few euros a day rarely justifies a full-service retainer.
An AI agent is a reasonable answer to all four, because the recurring work is reading, comparing and making small adjustments. That is exactly what software does well. The open question is not whether an agent can do it. The open question is what stands between the agent and your money.
Why you should not plug an AI agent straight into Google Ads
Start with what Google itself says. Google's official Google Ads MCP server is read-only in the current release. Its documentation calls it "strictly read-only" and states that it cannot modify bids, pause campaigns or create new assets. It offers three tools: list the accessible accounts, run a query in Google's query language (GAQL) and read resource metadata. That is useful for reports and audits, and nothing more.
So the moment you want the agent to change something, it needs write access to the Google Ads API itself. Two facts from Google's developer documentation matter here:
- The API has no object locking. If two edits hit the same object at the same time, the API answers with a CONCURRENT_MODIFICATION_ERROR instead of protecting you.
- Google recommends that you use test accounts, prefer read-only requests where possible, set validate_only on change requests, and review the change history afterwards.
Read between the lines: the API executes what it is sent. It does not know that a bid is absurd for the product you sell. It does not know your business.
What can go wrong in plain words
- The agent raises a bid ceiling by a large jump because a report looked good for two days.
- The agent enables a campaign that you paused on purpose.
- The agent edits the wrong field and overwrites a setting you never meant to touch.
None of these are exotic. They are what happens when a capable tool has permission and no rules. A generic Google Ads MCP server with write access gives the agent the permission. It cannot give it your rules, because it has never seen your business.
What a safe Google Ads MCP setup looks like
The agent never touches the Google Ads API. It talks to my backend: a custom MCP server with business logic in front of the API. The backend decides what is allowed, and the API only ever sees requests that passed. In practice this means five rules, written in plain words:
For the technical reader
The backend is a Python MCP server built on FastMCP. The facts, as of 13.10.2026:
- 36 tools: reports, search term mining, negative keywords, bid ceiling steps, ad rotation, change history, observability.
- Preflight gate: until the health check passes, every ad tool answers PREFLIGHT_REQUIRED. In the state ATTENTION the owner confirms before work continues. The journal shows 3 such refusals in October.
- Bid ceiling hard limits in code: 0.10 to 3.00 EUR, moving only in steps of 0.05 EUR. On 05.10.2026 the validation layer rejected a malformed ceiling change and nothing was changed.
- Every change sends an explicit update mask, so only the named field changes.
- Audit journal, 01.10-13.10.2026: 229 entries, 208 reads, 21 changes. Each entry has timestamp, tool, READ or MUTATION, result, latency and trace ID.
Read the engineering deep dive: the Google Ads MCP server โ
Google Ads cost: buying clicks at the low end of the market
The account is a real one: MoonBloom, an Etsy shop for children's wallpapers, with campaigns in Germany, Austria, Spain and France. The bid strategy is Maximize clicks with a CPC ceiling per campaign. In plain terms: Google may buy as many clicks as the budget allows, but never above the price I set for each campaign.
Here is how the average Google CPC moved:
- 0.82 EUR before the cleanup (120.03 EUR for 147 clicks, 05.07-04.08.2026, 2 campaigns).
- 0.53 EUR for the same 2 campaigns once the cleanup had started (21.07-04.08.2026).
- 0.47 EUR across all 6 spending campaigns (276.66 EUR for 592 clicks, 18.08-17.09.2026). Per campaign the range was 0.45 to 0.55 EUR.
The Google Ads budget behind this is small: 276.66 EUR in 31 days, about 8.92 EUR per day across 4 countries.
A conscious trade-off, not a bidding war
In September the impression share was 10 to 20 percent, and the share lost to ad rank was 63 to 80 percent (18.08-17.09). That looks bad until you know the plan. The plan said: do not chase the maximum bid, take 10 percent impression share with a CPC in range instead.
The audit also showed why. Raising the ceiling without improving the landing pages would only burn money. We do not pay for top positions, and a low ad rank is a useful signal: it tells us where the landing pages need work before more money goes in.
Google Ads plus GA4: see what the traffic does
Clicks are only half of the picture. I join Google Ads with GA4, so the agent sees not just what a click cost, but what the visitor did afterwards. For 05.07-04.08.2026 the join shows 235 sessions from google/cpc, 72 percent of them engaged, with an average of 1m30s on the site.
The same join catches leaks that a cost report alone never shows. The agent reviewed 909 real search queries from 30 days (mid-July to 15.08.2026), and a negative keyword shield of 21 terms went live for the DE and AT campaigns. What the review found:
- A wrong-product leak. Searches for "Wandtattoo" and "Wandsticker" are a different product than wallpaper. On 04.08.2026 they had cost 22.07 EUR for 11 clicks and 0 sales, which is 18.4 percent of the 30 day spend. That ad group was paused the same day.
- 36 duplicate keywords that competed with each other were paused (04.08.2026). Your own keywords should not compete against each other.
- 3 broad keywords that had cost 44.85 EUR in 30 days were paused.
No single item here is dramatic. Together they are the difference between an account that drifts and one that is looked after every day.
The results, honestly
Every figure below comes from the account, with its time window. I did not round them differently and I did not add benchmarks from elsewhere.
| Metric | Value | Window |
|---|---|---|
| Average CPC, 2 campaigns, before cleanup | 0.82 EUR (120.03 EUR / 147 clicks) | 05.07-04.08.2026 |
| Average CPC, same 2 campaigns, cleanup started | 0.53 EUR | 21.07-04.08.2026 |
| Average CPC, all 6 spending campaigns | 0.47 EUR (276.66 EUR / 592 clicks), 0.45 to 0.55 EUR per campaign | 18.08-17.09.2026 |
| Spend per day, 4 countries | about 8.92 EUR (276.66 EUR in 31 days) | 18.08-17.09.2026 |
| Impression share / share lost to ad rank | 10 to 20 percent / 63 to 80 percent | 18.08-17.09.2026 |
| Sessions from google/cpc in GA4 | 235 sessions, 72 percent engaged, average 1m30s | 05.07-04.08.2026 |
| Search queries reviewed | 909, plus 21 negative terms for DE and AT | 30 days, mid-July to 15.08.2026 |
| Wrong-product leak stopped | 22.07 EUR, 11 clicks, 0 sales (18.4 percent of 30 day spend) | paused 04.08.2026 |
| Duplicate keywords paused | 36 | 04.08.2026 |
| Broad keywords paused | 3, which had cost 44.85 EUR | 30 days before the pause |
The two CPC windows before and after use different campaign counts, 2 campaigns and then 6, so read the drop as a direction, not as a controlled experiment. Sales for this shop happen on Etsy, so Google Ads does not attribute them. That is why I measure cost per click, waste removed and engaged traffic, and why I make no claims about sales or return on ad spend.
Why this is engineering work, not a plugin, and who it suits
You cannot install safe Google Ads management as a plugin. The value sits in the rules: how high a bid may go, how fast it may move, which searches you never want, and who has to confirm when something looks off. Those rules are different in every business, so somebody has to write them down and build them into the tooling. That is the engineering work I do.
It suits you if:
- You spend roughly 5-50 EUR a day in the DACH region and want control over where it goes.
- You want routine Google Ads management done every day, not whenever somebody has a free hour.
- You want to see what was changed and why, in a journal you can read yourself.
It does not suit you if you want a full-service agency that also handles strategy, creative and client meetings. For that, hire an agency. If the business-side question is where your money leaks across all channels, start with the article One control panel for every ad channel you run.
In 30 minutes we look at your search terms and your bid ceilings and decide whether an agent backend makes sense for you. If it does not, you still leave with a list of what to block.
Questions people ask before letting an AI agent touch their ads
Tell me your daily budget and your countries. We check whether a safe agent setup is worth it for your account.