# Google Ads

Traps when running Google Ads through treg, the API requirements and cleanup semantics...

- Repository: https://github.com/superdesigndev/treg (6950 stars)
- Category: Marketing
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add superdesigndev/treg --skill google-ads -g -a claude-code -y`
Codex: `npx skills add superdesigndev/treg --skill google-ads -g -a codex -y`
Cursor: `npx skills add superdesigndev/treg --skill google-ads -g -a cursor -y`
Gemini CLI: `npx skills add superdesigndev/treg --skill google-ads -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add superdesigndev/treg`

## Description

Traps when running Google Ads through treg, the API requirements and cleanup semantics that cost round-trips or money. Use whenever asked to analyse ad performance, audit spend, create or change campaigns, adjust budgets or bids, or do media buying.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Google Ads via treg, the traps

Verified live on 2026-07-22 against a live account, via `treg call google-ads`.
Each trap is tagged with how many independent agents hit it when working **without** this file, so
you know which are real and which are here for insurance.

Account id: `treg connections ls` → the `google-ads` row; `treg connections resources <id>` to list.
Never guess an account id, you may be spending someone else's money.

## 1. Pin the API version, there is no discovery  ⚠️ 2/2 agents hit this

Paths are versioned and a wrong guess returns a **Google HTML 404**, not JSON. Nothing in the API
or in `treg tool ls` reports the current version, one agent burned **five** calls walking v14→v18
before recovering the answer from the `treg calls` audit log.

**Use `v25`** (released 2026-07-22, live-verified through the proxy 2026-08-17; sunsets ~Aug 2027).
Do not guess downward.

Two different failures, two different fixes:

- **HTML 404**, the version never existed (you guessed too high, or typo'd the path).
- **JSON 400 `UNSUPPORTED_VERSION`**, the version existed and has been **sunset**. Google ships a
  major roughly quarterly and each lives ~12 months, so a pin that worked for months dies on a
  date, not on a deploy. v21 died this way on **2026-08-05**. Always jump to the newest GA
  version, not the next one up, the next one up may be months from its own sunset.

Release notes and sunset dates: <https://developers.google.com/google-ads/api/docs/sunset-dates>

## 2. `contains_eu_political_advertising` is required on campaign create  ⚠️ 3/3 hit this

Absent from essentially every code sample. Campaign create fails `REQUIRED` without it:

```json
"containsEuPoliticalAdvertising": "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"
```

## 3. Bidding strategy must be the sub-message, not the enum  ⚠️ 1/2 hit this

The rest: https://github.com/superdesigndev/treg/blob/HEAD/.agents/skills/google-ads/SKILL.md
