← Guides·Connect AI to your data

Connect AI to your data

Connect ChatGPT to Google Ads: three official routes

Bring Google Ads data into ChatGPT through BigQuery, Google’s MCP server as a custom app, or Codex, and see which plan each route needs.

David PombarSwiss army knife at Trackingplan
8 min read · 1719 words

TL;DR ChatGPT has no documented Google Ads app, so you bring the data in one of three official ways. The lightest for most teams: Google’s BigQuery data transfer copies Google Ads into BigQuery every day, and ChatGPT’s BigQuery plugin queries it. For live access, deploy Google’s Google Ads MCP server on Cloud Run and add it as a custom MCP server, which needs ChatGPT Business, Enterprise or Edu (Pro gets read and fetch only). Developers can run the same server locally for Codex. Whichever route you use, add Trackingplan MCP before you act on the answers: it tells ChatGPT whether the conversion signals behind each campaign are sound, so you don’t spend on a broken tag.

The three routes differ in who sets them up, how fresh the data is, and what ChatGPT can touch. Pick by those three. If you also use Claude, the Claude version covers Claude Code and claude.ai connectors. This guide is part of a series on connecting AI assistants to marketing data.

High warehouse racks stacked with wrapped boxes on pallets, each shelf labelled with a location code
A warehouse holds what was delivered to it, labels and all. Image: Shixart1985, Wikimedia Commons, CC BY 2.0
Diagram of three routes from Google Ads to ChatGPT: a daily BigQuery transfer read by the BigQuery plugin, Google’s MCP server on Cloud Run added as a custom MCP server, and the server run locally for Codex

Copy Google Ads into BigQuery, then ask the BigQuery plugin

This route suits a team that already has a Google Cloud project and would rather not run a server. The data is daily. Google’s BigQuery documentation says a Google Ads transfer runs at most once every 24 hours, and re-reads the last 7 days by default, a refresh window you can set from 1 to 30.

  1. Get the BigQuery Admin role on the project, and read access to the Google Ads account or to the manager account that holds it.
  2. In the Cloud console, open Data transfers and click Create transfer.
  3. For Source, choose Google Ads, and enter the Customer ID. A single transfer on a manager account covers up to 8,000 client accounts, and Google recommends that over one transfer per account.
  4. Backfill as far as Google Ads retention allows, if you want history.
  5. In ChatGPT, open Settings > Plugins, select BigQuery, then Install plugin and Connect, and approve the Google permissions.
  6. In a chat, type @BigQuery and ask about the dataset.

The plugin is built by OpenAI, and OpenAI’s plugin page says availability depends on your plan and workspace settings, and some connections need an admin to approve them. Connecting doesn’t grant new access: a dataset you can’t open in BigQuery stays closed in ChatGPT.

The upside is SQL over clean tables with dates you control. The downside is a day of lag, and a schema to learn: the transfer writes Google Ads API reports as tables, not the views you see in the Google Ads interface.

Add Google’s MCP server to ChatGPT

This is the route for live account data, with each person signing in to Google as themselves. It depends on your plan. OpenAI’s help center says full MCP support is for Business and Enterprise/Edu on ChatGPT web. “Pro users can connect custom MCP servers with read/fetch permissions.” There is no mobile setup, and deep research uses custom apps for read and fetch actions only. On Business, only admins and owners create and publish these plugins; on Enterprise and Edu, admins can grant Create plugins with MCPs to selected members.

On the Google side, following Google’s Google Ads MCP server page:

  1. Create an OAuth client of type Web application and add https://chatgpt.com/connector_platform_oauth_redirect as an authorized redirect URI.
  2. Add the https://www.googleapis.com/auth/adwords scope under APIs & Services > OAuth consent screen > Data Access. While the screen is in Testing, list each user under Audience > Test users.
  3. Build the image, deploy it to Cloud Run with the client ID and secret, then set GOOGLE_ADS_MCP_BASE_URL to the service URL. Never deploy with --allow-unauthenticated and without the OAuth variables: the server would fall back to the container’s own credentials.

Then in ChatGPT:

  1. Go to Plugins, select +, then Add custom MCP server.
  2. Enter a name. Under Connection, paste the service URL with /mcp at the end.
  3. Configure OAuth with the client ID and secret from step 1.
  4. Tick I understand and want to continue, then select Create as a plugin and review the tools it found.
  5. Start a new conversation, type @ and pick the plugin.

Run the server locally for Codex

For developers and technical analysts who already work in Codex, this skips hosting altogether. Generate Application Default Credentials with the Google Ads scope (the gcloud auth application-default login command is on Google’s page), then add the server. The syntax is from OpenAI’s Codex MCP docs:

codex mcp add google-ads-mcp \
  --env GOOGLE_CLOUD_PROJECT=PROJECT_ID \
  --env GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_CREDENTIALS_JSON \
  -- pipx run --spec google-ads-mcp==0.0.6 google-ads-mcp

Or write it by hand in ~/.codex/config.toml:

[mcp_servers.google-ads-mcp]
command = "pipx"
args = ["run", "--spec", "google-ads-mcp==0.0.6", "google-ads-mcp"]

[mcp_servers.google-ads-mcp.env]
GOOGLE_CLOUD_PROJECT = "PROJECT_ID"
GOOGLE_APPLICATION_CREDENTIALS = "PATH_TO_CREDENTIALS_JSON"

OpenAI says the ChatGPT desktop app, the Codex CLI and the IDE extension share this configuration, so you set it once.

The access every MCP route needs

The MCP server and Codex routes call the Google Ads API, and since September 9, 2026 that access belongs to a Google Cloud project. Google’s access levels page says developer tokens “were sunset” that day. Enabling the API gives Test access, which only reaches test accounts. For real accounts, apply for Explorer from the API’s overview page in the Cloud console (Upgrade access level > Apply for access): it allows 2,880 operations a day, and Google may approve it automatically. Basic (15,000 a day) needs brand verification first, and Standard has no daily cap after a manual audit. Skip this and every call returns CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION.

What ChatGPT can change

Through the MCP routes, ChatGPT can query anything Google Ads Query Language reaches, and change three things: assets, video uploads (local only) and labels. Each change is proposed as a dry run first and committed only after you confirm. Budgets, bids and campaign status have no tool. For a read-only server, set labels: false and assets: false in tools_config.yaml and keep the read categories listed.

On the ChatGPT side, app permissions decide when it asks: Always ask is the cautious setting, Allow read actions lets queries run without a prompt. The BigQuery route can’t touch the Google Ads account at all: it works on a copy.

If your team lives in Google’s tools instead, Google’s Gemini Apps help lists Google Ads as a connected app in Gemini, for personal Google accounts and in English only.

A fourth route: Trackingplan MCP, so you don’t spend on bad data

The three routes above give ChatGPT the conversions Google Ads reports. None of them says whether those conversions are real. A purchase tag that lost its trigger, an order counted by two tags, a gclid stripped by a redirect: ChatGPT will still recommend where to put the budget, and Smart Bidding will keep learning from the same broken signal.

Trackingplan watches those signals continuously, on real traffic. It checks every conversion, UTM and consent signal, spots where value is missing or a purchase is counted twice, and quantifies each gap in money before bidding acts on it. It keeps watching attribution as well: when auto-tagging or a UTM breaks, the campaigns credited to the wrong source show up right away.

To make the signal better, not just watched, its audits check what each conversion tag receives, scheduled daily or weekly or on demand, and end with the fix to ask for in GTM.

With Trackingplan MCP, ChatGPT gets that evidence next to spend, clicks and reported conversions per campaign from Google Ads and ten other ad networks: Meta Ads, LinkedIn Ads, TikTok Ads, Snapchat Ads, Pinterest Ads, Microsoft Ads, X Ads, Amazon Ads, Apple Search Ads and Reddit Ads. No warehouse or Cloud project: an admin connects the accounts once (Ad Platforms). It reads; it never changes a campaign.

What to ask once it’s connected

Ask it to show the query each time. With a transfer schema or GAQL, the wrong table or date filter is the most common reason an answer looks odd.

Before you trust the answers

Whichever route you pick, ChatGPT ends up with Google’s reported conversions. A conversion action that lost its tag, an order counted by two tags, a consent update that drops signals on one browser: Google Ads reports all of them as conversions or their absence, and ChatGPT builds a confident analysis on top. This post on conversion accuracy covers what to check by hand.

An AI agent can only reason about what it can see. With Trackingplan MCP in the same chat, the question about a number and the question about its tracking get answered together.

FAQ

How can I use ChatGPT with my Google Ads data?

Three official routes. Send Google Ads to BigQuery with Google’s data transfer and query it with ChatGPT’s BigQuery plugin. Deploy Google’s Google Ads MCP server on Cloud Run and add it to ChatGPT as a custom MCP server. Or run the same server locally for Codex.

Which ChatGPT plan do I need for a custom MCP server?

Business, Enterprise or Edu for full support, on ChatGPT web. Pro users can connect custom MCP servers with read and fetch permissions only. Custom MCP servers can’t be added from mobile.

Does ChatGPT have a Google Ads app?

OpenAI’s help center doesn’t document one. Google’s own instructions connect ChatGPT through a custom connector pointing at the Google Ads MCP server you deploy.

Can ChatGPT edit my Google Ads campaigns?

Not budgets, bids or campaign status. Google’s server can create assets, upload videos and manage labels, after a propose-and-confirm step, and it can run read-only. The BigQuery route works on a copy and never reaches the account.

David PombarSwiss army knife at Trackingplan

Read more from David, a Senior Product Strategist with 18+ years in digital product development and an atypical error detection knack.

Trackingplan

See everything. Miss nothing.

Your implementations audited around the clock with real-time, real-user data. Real-time alerts about errors or changes in your data, campaigns, pixels, privacy and consent. Let AI flag issues before they cost you.