Buddy — AI Google Ads Agent

Buddy is a free AI-powered Google Ads agent that connects directly to your account via the Google Ads API (v22). Through natural conversation, Buddy audits campaigns, identifies wasted spend, builds optimized account structures, creates ads and keywords, manages bids and budgets, sets up targeting and extensions, researches competitors via Google Trends and the Ads Transparency Center, and provides actionable recommendations backed by live data. Over 30 write operations are available — from creating campaigns to setting up conversion tracking.

Buddy is live now. Connect your Google Ads account, pick an AI model (Claude, GPT, or Gemini), and start managing your campaigns through conversation. Launch Buddy →

Quick Start

  1. Open Buddy
  2. Click Settings (gear icon) and add your AI API key (Anthropic, OpenAI, or Google)
  3. Connect your Google Ads account (OAuth or manual credentials)
  4. Start chatting — ask "audit my account", "show wasted spend", or "build me a campaign structure"

No AI key? Buddy still works for landing page scans and general advertising advice — just paste a URL and ask.

Connect Google Ads

LIVE Two methods to connect your account:

Method 1: OAuth (recommended)

  1. Open Settings and click Connect with Google
  2. Sign in with the Google account that has access to your Google Ads
  3. Authorize the app — Buddy receives a refresh token stored server-side in encrypted KV
  4. Your Customer ID auto-populates

Method 2: Manual credentials

  1. In Settings, enter your Developer Token, Client ID, Client Secret, Refresh Token, and Customer ID
  2. Click Test Connection to verify
MCC accounts: If you connect an MCC (Manager account), Buddy auto-detects this and discovers all client accounts underneath. You can switch between them with the account picker.

AI API Keys

Buddy supports three AI providers. Pick the one you prefer:

ProviderModelsGet a Key
Anthropic (Claude)claude-sonnet-4-6, claude-opus-4-6console.anthropic.com
OpenAI (GPT)gpt-5.4, gpt-5.4-pro, gpt-5.3-codexplatform.openai.com
Google (Gemini)gemini-3-flash-preview, gemini-3-pro-previewaistudio.google.com

Keys are stored in sessionStorage only — cleared when you close the tab. They're sent to the Brain server for API calls but never persisted.

Security & Privacy

🔒 Key security measures:
  • API keys stored in sessionStorage only — cleared on tab close
  • Google Ads OAuth tokens use Authorization headers (never URL params)
  • All API endpoints restrict CORS to googleadsagent.ai origins only
  • Write operations require explicit CONFIRM before execution
  • Rate limiting on all endpoints (20-60 req/min depending on endpoint)
  • SSRF protection blocks private/internal IP addresses on URL fetch

Chat Interface

Buddy's chat works like talking to a senior Google Ads strategist who has live access to your account. Key capabilities:

Account Audits

LIVE Say "audit my account" and Buddy pulls live data across multiple dimensions, then applies a 6-layer analysis framework:

  1. Data — WoW/MoM metric changes with specific numbers
  2. Benchmarks — Industry comparison ranges
  3. Seasonality — Time-of-year context that may explain patterns
  4. Platform best practices — Google Ads specific guidance
  5. Cross-channel — Portfolio and platform dependency risks
  6. Business impact — Dollar translation of every finding

Campaign Management

Buddy can create complete campaign structures from scratch or modify existing ones:

Keyword Management

Ad Creation & Editing

Landing Page Scanner

LIVE Paste any URL and Buddy scans the landing page for:

Works without any API keys or Google Ads connection.

Add a SearchAPI.io key in Settings to unlock 4 search engines:

Use the Web Search, Google Trends, and Ad Library buttons in the toolbar, or ask Buddy directly (e.g., “What are the trending searches for HVAC in Texas?”).

Write Safety & CONFIRM Flow

Every write operation follows a strict safety protocol:

  1. PROPOSE — Buddy presents the plan with specific details (what will change, current vs. proposed)
  2. CONFIRM — You type CONFIRM to approve, or CANCEL to abort
  3. EXECUTE — Buddy makes the actual Google Ads API call
  4. REPORT — Real results from the API are shown (success/failure per operation)
Nothing changes until you type CONFIRM. If Buddy describes operations in its response, those are proposals only. The system shows a warning if Buddy uses execution language without an actual API call.

All 30+ Write Operations

Campaign & Budget Operations

ActionWhat It DoesRequired Params
create_campaignNew campaign with budget + bidding strategy (SEARCH, PMAX, DISPLAY, VIDEO)name, budgetAmountDollars
update_campaign_statusPause, enable, or remove a campaigncampaignId, status
remove_campaignPermanently remove a campaigncampaignId
update_budgetChange daily budget amountbudgetId, budgetAmount

Ad Group Operations

ActionWhat It DoesRequired Params
create_ad_groupNew ad group in a campaigncampaignId, name
update_ad_groupUpdate ad group name, status, or CPC bidadGroupId + fields to update
remove_ad_groupRemove an ad groupadGroupId

Ad Operations

ActionWhat It DoesRequired Params
create_adNew RSA ad (3-15 headlines, 2-4 descriptions)adGroupId, headlines, descriptions, finalUrl
update_rsaReplace existing RSA (deletes + recreates — loses history)adGroupId, adId, headlines, descriptions, finalUrl
update_ad_statusPause or enable an adadGroupId, adId, status
remove_adDelete an adadGroupId, adId

Keyword Operations

ActionWhat It DoesRequired Params
create_keywordAdd keywords to an ad group (bulk)adGroupId, keyword(s), matchType
remove_keywordDelete a keywordadGroupId, criterionId
update_keyword_statusPause or enable a keywordadGroupId, criterionId, status
update_keyword_bidChange keyword CPC bidadGroupId, criterionId, bid
create_negative_keywordAdd campaign negative keywords (bulk)campaignId, keyword(s)
customer_negative_criterionAdd account-level negative keywords or placementskeyword or placement

Targeting & Criteria

ActionWhat It DoesRequired Params
create_campaign_criterionLocation, language, device, audience, age, gender, topic, placement, proximity targetingcampaignId + targeting type
create_ad_group_criterionAd group-level targeting (keyword, placement, topic, audience, demographics)adGroupId + targeting type
create_ad_scheduleAd schedule (day-parting) with optional bid modifiercampaignId, dayOfWeek, startHour, endHour

Assets (Extensions)

ActionWhat It DoesRequired Params
create_assetCreate sitelink, callout, structured snippet, call, or text assettype + type-specific params
link_asset_to_campaignLink an asset to a campaigncampaignId, assetId, fieldType

Labels

ActionWhat It DoesRequired Params
create_labelCreate a label for organizing entitiesname
apply_labelApply label to campaign or ad grouplabelId, entityType, entityId

Conversions & Bidding

ActionWhat It DoesRequired Params
create_conversion_actionSet up conversion tracking (webpage, phone, upload)name, type
create_bidding_strategyPortfolio bidding strategy (tCPA, tROAS, Max Conversions, etc.)name, type

Shared Sets & Audiences

ActionWhat It DoesRequired Params
create_shared_setShared negative keyword or placement listname
add_shared_set_to_campaignLink shared set to a campaigncampaignId, sharedSetId
create_user_listCustomer match or rule-based audience listname

Performance Max

ActionWhat It DoesRequired Params
create_asset_groupAsset group for PMax campaignscampaignId, name, finalUrls

Experiments & Recommendations

ActionWhat It DoesRequired Params
create_experimentSet up a campaign experiment (A/B test)name, campaignId
apply_recommendationAccept a Google-generated recommendationrecommendationId
dismiss_recommendationDismiss a recommendationrecommendationId

Raw API Access

ActionWhat It DoesRequired Params
mutate_operationDirect access to googleAds:mutate endpoint — supports ALL Google Ads API v22 operations including campaignBudgetOperation, assetGroupSignalOperation, assetGroupListingGroupFilterOperation, biddingDataExclusionOperation, biddingSeasonalityAdjustmentOperation, conversionValueRuleOperation, customizerAttributeOperation, keywordPlanOperation, remarketingActionOperation, etc.operations (array)

Batch Operations

The execute_google_ads_batch tool lets Buddy execute multiple operations in sequence — for example, creating 4 ad groups, then adding keywords to each, then creating ads, then setting up targeting. Supports all 30+ mutation types. Batch operations execute phase by phase (ad groups → keywords → ads → negatives → everything else) with real results reported per phase.

Brain (Server-Side AI)

DEFAULT The Brain is a Cloudflare Worker that orchestrates AI interactions with tool calling. When enabled, the AI can:

Direct Mode (Client-Side AI)

Toggle off the Brain in Settings to use Direct Mode. The AI call goes from your browser directly to the provider's API. Useful for:

Direct mode doesn't support tool calling, so it can't pull live Google Ads data or execute mutations.

Supported Models

ProviderModelsStreamingTool Calling (Brain)
Anthropicclaude-sonnet-4-6, claude-opus-4-6
OpenAIgpt-5.4, gpt-5.4-pro, gpt-5.3-codex
Googlegemini-3-flash-preview, gemini-3-pro-preview

Data Flow

Your Browser
  → Brain (Cloudflare Worker)
    → AI Provider (Claude/GPT/Gemini)
    ← AI response with tool calls
    → Google Ads API v22
    ← Live account data
  ← Streamed response to browser

Read Actions (25+)

Buddy can pull these data types from your Google Ads account:

ActionWhat You Get
Account SummarySpend, clicks, impressions, conversions, CPA, CTR, ROAS
CampaignsAll campaigns with metrics, status, budget, bidding strategy
Ad GroupsAd groups with metrics per campaign
KeywordsAll keywords with match type, bid, quality score, metrics
Search TermsWhat users actually searched + performance
Wasted SpendZero-conversion search terms with cost
RSA AdsAd copy, headlines/descriptions, performance ratings
BudgetsCampaign budgets with spend pacing
Geo PerformancePerformance by country/region/city
Device PerformanceMobile vs. desktop vs. tablet breakdown
Change HistoryRecent account changes with who/what/when
RecommendationsGoogle's optimization suggestions
ConversionsConversion actions with type and value
Quality ScoresKeyword quality scores with components
Impression ShareSearch impression share and lost IS (budget/rank)
Landing PagesLanding page performance metrics
Negative KeywordsExisting negatives across campaigns
AudiencesAudience segments and performance
LabelsAccount labels and labelled entities
Bidding StrategiesPortfolio and standard bidding strategy details
Account DiscoveryAll accessible accounts under an MCC

Settings Panel

Access via the gear icon. Sections:

Known Issues

update_rsa loses ad history

The Google Ads API doesn't support in-place RSA edits. update_rsa deletes the old ad and creates a new one, meaning quality score, performance history, and the old ad ID are lost. Buddy warns about this before execution.

MCC metrics query fails

Querying metrics on an MCC (Manager) account returns REQUESTED_METRICS_FOR_MANAGER. Buddy auto-detects this and triggers account discovery so you can switch to a client account.

SPA landing pages may not scan fully

The landing page scanner fetches initial HTML. Single Page Applications that inject content via JavaScript may show incomplete results. For these, use browser DevTools to copy the rendered HTML and paste it into the chat.


Built by John Williams.
Part of the Google Ads Agent ecosystem.