Skip to main content

Google Ads Integration

Connect your AI agents to Google Ads to automate campaign management for storm-response and other time-sensitive marketing workflows. Agents can create campaigns, set targeting, add keywords, write ads, pause campaigns, and pull performance data. The integration uses OAuth 2.0 and enforces safety gates so that agents cannot spend money without explicit controls in place.

Overview

The Google Ads Integration uses OAuth 2.0 authorization-code flow (one connection per tenant) and creates twelve agent tools automatically on connection. Because campaign creation moves real money, the platform defaults to a human-in-the-loop approval model - all campaigns start PAUSED until an admin approves them (or until you enable autonomous publishing, which carries a daily budget cap).

Tools Created on Connection

The Spend risk column tells you how much money each tool can move:

  • Builds paused - writes only to a campaign that is created PAUSED and cannot serve or spend until a person approves it.
  • Acts on a live campaign - operates on a serving campaign. The only such tool today is pause, which can only reduce spend.
  • Read-only - reads metrics; never changes anything.
ToolDescriptionSpend risk
googleads_create_campaignCreate a new search campaign with a daily budget and bidding strategy (starts PAUSED by default)Builds paused - cannot spend until approved
googleads_create_location_targetsAdd geographic and proximity targeting to a campaignBuilds paused - edits a paused campaign
googleads_create_keywordsAdd keywords to an ad group (also available from the console's Campaign Manager)Builds paused - edits a paused campaign
googleads_create_adsCreate responsive search ads (each reviewed by Google before serving)Builds paused - edits a paused campaign
googleads_pause_campaignPause a live campaign immediately to stop serving and spendActs on a live campaign - only stops spend
googleads_update_keywordsPause, enable, or remove existing keywords, or change a keyword's max CPC bidActs on a live campaign - never enables or removes the campaign itself
googleads_get_performanceRetrieve campaign performance metrics via a GAQL query, including conversions and conversion valueRead-only - never spends
googleads_create_conversion_actionCreate a website or phone-call conversion action for conversion tracking (also available from the console's Conversion Actions card)Read/config only - creates a tracking definition, not a campaign; cannot spend
googleads_update_campaignEdit an existing campaign's name, daily budget, bidding strategy, and start/end dates (never changes serving status; a budget increase above the daily cap routes to approval)Acts on a live campaign - never enables it; over-cap budget increases require approval
googleads_create_assetsCreate callout and sitelink assets and link them to a campaign (also available from the console's Campaign Manager)Builds paused - adds assets, cannot enable the campaign
googleads_keyword_ideasResearch keyword ideas with real Google market data (average monthly searches, competition, top-of-page bid ranges) seeded by keywords and/or a URLRead-only - never spends
googleads_recommendationsList, apply, or dismiss Google Ads optimization recommendations (budget and bidding-strategy applies route to approval; keyword, ad-copy, and asset applies go directly; dismiss is always allowed)Config/optimization - spend-increasing applies require approval; never enables a campaign
warning

Google Ads tools move real money. Campaigns are created paused by default and require an explicit approval action in the Publish Approval Queue before going live. Review the Safety Settings section below before enabling autonomous publishing.

info

Google Ads Integration requires the custom.googleads feature code on your subscription. Contact your Outermind account manager if this is not included.

Getting Started

Prerequisites

Before connecting, you will need:

  1. A Google Ads account with campaign management access.
  2. A Google Ads developer token approved by Google (standard access or higher).
  3. An OAuth 2.0 app (Client ID and Client Secret) created in Google Cloud Console with the https://www.googleapis.com/auth/adwords scope.

Step 1: Authenticate with Google

  1. Go to Capabilities > Connections.
  2. Click Google Ads (under the Marketing and Social category).
  3. Click Connect Google Ads Account.
  4. A Google OAuth popup opens. Sign in with the Google account that owns or manages your Google Ads account.
  5. Review the requested permissions and click Allow.
  6. The popup closes automatically when authorization completes and the wizard moves to the next step.

Step 2: Select a Google Ads Account

After authorization, the wizard lists all Google Ads accounts accessible to the signed-in Google account.

  1. Select the account you want to connect. Each row shows the account name, currency, and time zone.
  2. Manager (MCC) accounts are shown but cannot be selected directly - select one of the client accounts the MCC manages instead.
  3. If the connected Google account has access to only one operating account, it is automatically selected and this step is skipped.
  4. Click Continue.

Step 3: Assign Tools to Agents

  1. Choose the agents, SMEs, or CAIOO that should have access to the twelve Google Ads tools.
  2. Select All Tools to grant the full set, or expand the list to grant individual tools.
  3. Click Continue (or Skip and Complete if you want to assign agents later from the connection page).

Step 4: Complete

The wizard shows a confirmation summary including the connected account name and a reminder that campaigns are created PAUSED by default and require explicit human approval before going live. Click Complete to go to the connection page.

After the Wizard: Configure Safety Settings

Before agents can act on the account, review the Safety Settings card on the connection page. At minimum, set a Max daily budget that matches your campaign spend policy.


How an Agent Campaign Goes Live

Here is the end-to-end path a campaign takes from an agent building it to Google serving the ads. Nothing spends money until a person approves the campaign (unless you have deliberately turned on autonomous publishing, which is off by default).

  1. Agent creates the campaign, PAUSED. Your agent creates a search campaign with a daily budget. It starts PAUSED, so it cannot serve ads or spend yet.
  2. Agent attaches locations, keywords, and ads. The agent adds geographic targeting, keywords, and responsive search ads to the still-paused campaign.
  3. Agent requests publish. The agent asks to publish. With autonomous publishing off (the default), this sends an approval request to the Business Owner instead of going live.
  4. A person reviews and approves. You review the budget, targeting, and ad copy in the Publish Approval Queue, then approve or deny the campaign.
  5. Campaign goes ENABLED and Google reviews the ads. On approval the campaign is set to ENABLED. Google reviews the new ads - usually within about one business day - before they start serving.
  6. Agent monitors and can pause any time. The agent tracks performance with the performance tool and can pause the campaign immediately if you ask it to or if the numbers call for it.
  7. Google bills you directly. Google charges you per your account's payment setting - directly, not through Outermind.

Sample Agent Prompts

Copy one of these into a chat with an agent that has the Google Ads tools assigned:

  • "Build a paused Google Ads search campaign for our emergency roof-tarping service, targeting a 30-mile radius around our office, with keywords for storm-damage and roof-leak repair and three ad variations. Use a modest daily budget and leave it paused for me to review."
  • "Pull last week's performance for our active campaigns - impressions, clicks, cost, and conversions - and pause anything that is spending with no conversions."
  • "Add a few negative-intent keywords to the storm-response ad group and refresh the ad copy, then submit the campaign for my approval."

Connection Page

Navigate to Capabilities > Connections > Google Ads to manage your tenant's Google Ads connection.

Connected state

When a connection is active the page shows:

  • Account name and Customer ID
  • Currency and Time Zone for the Google Ads account
  • Status badge (Connected / Token Expired / Error)
  • Tools list - each of the twelve tools and how many agents are currently assigned to it
  • Test Connection button - verifies the stored OAuth token is still valid without triggering any API side effects

Token Expired state

If Google revokes the OAuth token (e.g., password change, security policy, manual revocation) a yellow banner appears:

Token Expired - Your Google Ads connection token has expired. Reconnect to restore agent access.

Click Reconnect to re-run the OAuth flow and refresh the token. No connection data is lost.

Error state

If the connection encounters a non-expiry error a red banner appears with a Retry button. If retrying does not resolve the issue, disconnect and reconnect.


Campaign Manager

The Campaign Manager section on the connection page is the console human management surface for campaigns in the account - whether an agent created them or a person created them directly from the console. It lists every campaign with its name, status, type, daily budget, month-to-date spend, and impressions/clicks/conversions, paginated for larger accounts.

Creating a Campaign from the Console

Click Create campaign above the campaign table to open the create form. This is a human-facing equivalent of the googleads_create_campaign agent tool - both call the same underlying service and produce the same result.

  1. Campaign name - required.
  2. Daily budget - required; must be a positive amount no greater than the account's Max daily budget safety cap (see Safety Settings below).
  3. Bidding strategy - Maximize Conversions, Maximize Clicks, Target CPA, or Target ROAS. Choosing Target CPA or Target ROAS reveals a required target field.
  4. Location target ids and Language target ids - optional, comma-separated numeric Google geo/language constant ids (e.g. 2840 for the United States, 1000 for English).

The form prefills budget, bidding strategy, locations, and languages from your Campaign Defaults, if set.

Every campaign created from the console is a SEARCH campaign and is always created PAUSED - clicking Create never enables it. Performance Max is never offered in this form (Outermind does not support Performance Max campaigns). To go live, use the Enable action described below, which is the same human-approval step the Publish Approval Queue would otherwise require.

The new campaign is fully audited (who created it, and with what settings) and reviewable in Activity > Audit Log.

From the campaign table you can also:

  • Pause an enabled campaign to stop it serving and spending immediately.
  • Enable a paused campaign. Clicking Enable is the human approval - this is the same approval the Publish Approval Queue would otherwise require, so there is no separate approval step for a campaign you enable here.
  • Remove a campaign. Removal is sent to Google Ads as a permanent status change and cannot be undone, so a confirmation modal asks you to confirm before it runs.
  • Edit the daily budget inline. Enter a new positive amount within the account's currency; the value is converted to Google Ads' micros unit at save time.
warning

Enable and Remove act on real, live campaigns and can start or permanently stop ad spend. There is no agent tool that can enable or remove a campaign - these actions are available from the console only, and each one requires a person to click it.

Every Campaign Manager action (pause, enable, remove, budget edit) is audited with who made the change, when, and the before/after values. Review these in Activity > Audit Log.

If the table fails to load, an error state with a retry option is shown. An empty account (no campaigns yet) shows a message inviting you to have an agent build one, or to create a campaign directly in Google Ads.

Ad Groups & Keywords

Expand a campaign row to reveal its ad groups, and expand an ad group to reveal its keywords - text, match type, status, current max CPC bid, and impressions/clicks/cost. Keywords load lazily as you expand each ad group, with a Load more keywords option for large ad groups.

From the keyword list you can:

  • Pause an enabled keyword to stop it serving without touching the rest of the ad group.
  • Enable a paused keyword.
  • Remove a keyword. This is permanent, so a confirmation modal asks you to confirm before it runs.
  • Edit the max CPC bid inline. Enter a new positive amount in the account's currency; it is converted to Google Ads' micros unit at save time.

Agents can also pause, enable, remove, or rebid keywords using the googleads_update_keywords tool - both the console and the tool call the same underlying operations, and both are fully audited.

info

Keyword actions never change a campaign's own status. Pausing every keyword in an ad group does not pause the campaign - use the Campaign Manager's Pause action for that.

Creating Ad Groups and Keywords from the Console

Every campaign row has an Add ad group action, and every expanded ad group has an Add keyword action - both build directly on a still-paused campaign, so neither one can start ad spend by itself.

  • Add ad group - opens a modal asking for an ad group name (for example, "Emergency Roof Repair"). The new ad group is created PAUSED, matching an agent-created ad group.
  • Add keyword - opens a modal asking for keyword text (for example, "roof hail damage repair"), a match type (Exact, Phrase, or Broad), and an optional max CPC bid. Leaving the bid blank uses the ad group's default bid.

Both actions are a human-facing equivalent of the googleads_create_keywords agent tool - the console and the tool call the same underlying service and produce the same result. New ad groups and keywords are fully audited and reviewable in Activity > Audit Log.

Click Add assets on a campaign row to open the asset creation modal. You can add:

  • Callouts - short (typically up to 25 character) phrases such as "Free Inspection" that appear alongside your ads. Add as many as you need with the Add another callout control.
  • Sitelinks - link text, a final URL, and up to two optional description lines per sitelink, added with the Add another sitelink control.

You can submit callouts only, sitelinks only, or both in one request; at least one of the two is required. Assets are linked to the campaign but never change its serving status - a campaign that was paused stays paused. This is a human-facing equivalent of the googleads_create_assets agent tool, and the action is fully audited.


Conversion Actions

The Conversion actions card on the connection page lists the conversion tracking already configured on the account - name, type (Website or Phone call), status, category, counting type, and default value.

Click Create conversion action above the list to open the create form. This is a human-facing equivalent of the googleads_create_conversion_action agent tool - both call the same underlying service and produce the same result.

  1. Name - required.
  2. Category - optional; leave blank to use Google's default category for the conversion action.
  3. Counting type - One / click (count at most one conversion per ad click) or Many / click (count every conversion). Defaults to One / click.

The new conversion action appears in the list immediately and is fully audited (who created it, and with what settings) in Activity > Audit Log. Use the card to confirm what conversion tracking exists before asking an agent to report on ROAS or optimize toward conversions.

info

Creating a conversion action does not install tracking on your website. The Google tag (or Google Tag Manager container) must still be installed through Google's own UI - neither the tool nor the console can deploy the tag for you. googleads_get_performance reports metrics.conversions and metrics.conversions_value only once both the conversion action exists and the tag is firing on the site.

If the account has no conversion actions yet, the card shows an empty state. Large accounts paginate with a Load more conversion actions button.


Safety Settings

The Safety Settings card controls the two money-movement guardrails for the connected account.

Autonomous Publishing

StateBehaviour
Off (default)Campaigns are created PAUSED. An admin must approve each campaign via the Publish Approval Queue before it goes live.
OnAgents may launch campaigns directly, up to the daily budget cap, without a human approval step.

To toggle autonomous publishing:

  1. On the connection page, scroll to the Safety Settings card.
  2. Use the Autonomous publishing toggle.
  3. If you turn this on, a prominent warning banner appears showing the effective daily spend limit.
  4. Click Save.
danger

Enabling autonomous publishing means agents can launch live, money-spending campaigns without human review. Only enable this if you have a reliable daily budget cap in place and fully trust the agent's campaign-creation logic.

Max Daily Budget

The max daily budget is the upper limit on the combined daily budget that an agent may assign to any single campaign it creates autonomously. Campaigns that would exceed this cap always require manual approval, even when autonomous publishing is on.

To set the budget:

  1. In the Safety Settings card, locate the Max daily budget field.
  2. Enter a non-negative number (decimals allowed). The currency displayed matches your connected account.
  3. Click Save.

Setting this to 0 effectively blocks all autonomous spend (every campaign will need approval).

Both changes are audited. You can review them in Activity > Audit Log, filtered by the GoogleAds Settings category.


Campaign Defaults

The Campaign Defaults card lets you set tenant-wide defaults that agents apply to every campaign they create, so you do not have to repeat the same targeting and budget instructions in each prompt. The card is shown on the connection page and mirrors the Campaign Defaults step in the setup wizard. Everything here is optional.

Defaults you can store include:

  • Default daily budget - the per-campaign daily budget an agent uses when its prompt does not specify one.
  • Default bidding strategy - e.g. Maximize Conversions, Target CPA, Target ROAS, or Maximize Clicks.
  • Default locations and location mode - the geographic targeting (and whether to target people in the area or people interested in it).
  • Default languages, ad schedule, content exclusions, networks, and a default final URL.

Two rules govern how defaults are used:

  • Agent parameters always override defaults. If a prompt names an explicit budget, location, or bidding strategy, that value wins; the default only fills in what the prompt leaves out.
  • A default daily budget can never exceed the Max daily budget cap. Saving a defaultDailyBudget greater than the safety cap in Safety Settings is rejected. Even if a saved default was valid when set and a lower cap is applied later, a campaign that would exceed the current cap routes to human approval rather than publishing autonomously.

Changes to Campaign Defaults are audited alongside the other settings and reviewable in Activity > Audit Log.


Billing Readiness

The Billing Readiness card is an advisory probe that tells you whether the connected Google Ads account can actually serve ads. Google will not serve any campaign - even an approved, enabled one - until a payment method is configured in Google Ads.

The probe runs automatically after you select an account and again every time you use Test Connection, and you can re-run it on demand with the Re-check button. It reports one of three states:

  • Billing configured - an approved billing setup exists; the account can serve ads.
  • Not enabled - the account has no active billing setup. Ads cannot serve until you add a payment method in Google Ads > Billing > Settings. This is normal for a brand-new account.
  • Unknown - the probe could not determine billing status (for example, the account is not yet enabled or the check errored). Use Re-check after configuring billing.
info

Billing Readiness is advisory only - it never blocks you from connecting or from assigning tools. It is a heads-up so you fix billing in Google's UI before asking an agent to launch a campaign. Outermind cannot configure Google Ads billing for you; that always happens in Google's own interface.


Monthly Spend Guardrail

The Monthly Spend Guardrail caps how much all of your agent-managed campaigns can spend across a calendar month, independent of the per-campaign daily budget. Set it with the Max monthly spend field on the Campaign Defaults card; leave it empty to disable the guardrail.

The platform checks month-to-date account spend daily against this cap. Month boundaries follow the Google Ads account's own time zone.

ThresholdWhat happens
80% of capThe Business Owner receives a warning notification - once per calendar month - that spend is approaching the monthly limit. No campaigns are changed.
100% of capEvery enabled campaign in the account is paused to stop further spend, the Business Owner is notified, and each pause is audited. While the account is over the monthly cap, new publish requests are blocked - agents leave campaigns paused and no approval is queued, and budget-increasing edits are blocked too.
info

The guardrail fails safe: if the daily spend check cannot run (a Google API error), the last-known over-cap block is kept in place rather than cleared, so it never accidentally lets spend resume.

To clear an over-cap block, raise or remove the Max monthly spend value, or wait for the next calendar month to reset month-to-date spend. Once the account is back under the cap, agents can request publishes again and you can re-enable any campaigns the guardrail paused from the Campaign Manager.


Publish Approval Queue

When autonomous publishing is off (or when a campaign budget exceeds the daily cap), agent-created campaigns appear in the Publish Approval Queue on the connection page. From there, admins can approve or deny each campaign before it goes live.

See the Publish Approval Queue article for full details on reviewing and acting on queued campaigns.


Disconnecting

Click Delete Connection in the Danger Zone at the bottom of the page. A confirmation modal shows:

  • How many agents will lose access to the twelve Google Ads tools
  • A reminder that any pending publish approvals will be marked Expired

Type to confirm, then click Delete Connection. The platform performs a full transactional cleanup: removes all twelve tools and their agent assignments, soft-deletes the connection record, clears the loader cache, and expires any outstanding publish approvals.

This cannot be undone

Disconnecting removes all tool assignments from every agent. You will need to reassign agents after reconnecting.


FAQ

Can I connect more than one Google Ads account? No. The integration supports one Google Ads connection per tenant. To manage multiple accounts, use a Google Ads MCC (manager account) and connect the MCC.

What happens to queued campaigns if I disconnect? All pending publish approvals are automatically marked expired when you disconnect. If you reconnect, you will need to re-submit any campaigns that were awaiting approval.

The connection shows as expired. What should I do? OAuth tokens can expire or be revoked. Click Reconnect on the connection page to go through the OAuth flow again. You do not need to re-enter your Client ID and Client Secret.

Will disconnecting affect running campaigns? Disconnecting removes agent tool access only. Existing campaigns in Google Ads are not affected - agents will no longer be able to create or modify campaigns until you reconnect.

Where do I find audit records for safety setting changes? Go to Activity > Audit Log and filter by event type GoogleAds Settings Changed. Each record shows who changed what and when.

Can an agent enable or remove a campaign? No. Enable and Remove are console-only actions available to a human in the Campaign Manager. No agent tool can enable a paused campaign or remove one - this is a hard platform limit, not a configurable permission.

Can I create a campaign directly from the console, without an agent? Yes. Click Create campaign in the Campaign Manager to build a SEARCH campaign with a daily budget, bidding strategy, and geo/language targeting. It is created PAUSED, same as an agent-created campaign, and you Enable it the same way.

Can an agent pause, enable, remove, or rebid a keyword? Yes. Unlike campaigns, keyword-level pause, enable, remove, and bid changes are available to agents via the googleads_update_keywords tool, as well as to humans in the connection page's Ad Groups & Keywords view. This tool never changes a campaign's own status.

Can I create a conversion action from the console? Yes. Click Create conversion action on the Conversion Actions card to create one with a name, optional category, and counting type. This calls the same service as the googleads_create_conversion_action agent tool.

Can I add ad groups, keywords, or assets from the console, without an agent? Yes. Use Add ad group and Add keyword on a campaign row in the Campaign Manager, and Add assets to add callout or sitelink assets to a campaign. Each is a human-facing equivalent of the matching agent tool, is created against a still-paused campaign, and is fully audited.

Why aren't conversions showing up in performance reports? A conversion action must exist AND the Google tag (or GTM container) must be installed on your website through Google's UI. Neither the tool nor the console can install the tag - that step always happens in Google's own interface.