Docs / Google Ads

Connect Google Ads

Campaign performance data


climpt reads Google Ads through BigQuery rather than the Ads API. You set up a transfer with the BigQuery Data Transfer Service, which syncs your reporting data daily, and climpt queries the resulting dataset read-only.

Admin access is only needed for setup

Creating the transfer is an administrative task in Google Cloud. Once the dataset exists, climpt needs nothing beyond read access to it.

Step 1 · Create the transfer

  1. In the Google Cloud console, open BigQuery Data transfersCreate transfer.
  2. Choose Google Ads as the source.
  3. Enter your Customer ID, or use the manager account flow if you have an MCC.
  4. Pick a report type — Standard is the sensible starting point — and a refresh window. Seven days is common; thirty is the maximum.
  5. Under destination settings, select or create a dataset, for example google_ads_raw.
  6. Schedule it daily. Google Ads transfers run at most once every 24 hours regardless.
  7. Save, and wait for the first successful run.

What arrives

Google Ads reporting tables and auto-generated views, depending on whether you chose Standard or Custom. Everything is written into date-partitioned tables, and a re-run overwrites its own partition rather than duplicating rows. Historical ranges can be backfilled later.

Step 2 · A service account for the dataset

This is an ordinary BigQuery connection, so it uses the same three read-only roles — two at project level, one on the dataset.

roles/bigquery.jobUser
Project level. Lets climpt create a query job.
roles/bigquery.readSessionUser
Project level. Lets climpt read results through the Storage Read API. Without it, discovery succeeds and every query fails with a bigquery.readsessions.create error.
roles/bigquery.dataViewer
On the ads dataset only — not the whole project.
  1. Go to IAM & Admin → Service Accounts and create one named, say, climpt-bigquery-readonly.
  2. Grant it BigQuery Job User and BigQuery Read Session User at project level.
  3. Open BigQuery, find the dataset, and use Share to grant the service account BigQuery Data Viewer.
  4. Create a JSON key from the account’s Keys tab.
  5. In climpt, add a Google BigQuery connection and paste the whole JSON file.

Querying the export

Table and view names vary with the transfer setup. As an example:

SELECT
  DATE(_PARTITIONTIME) AS day,
  SUM(cost_micros) / 1e6 AS cost,
  SUM(clicks) AS clicks
FROM `your-project.google_ads_raw.CampaignBasicStats`
WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
GROUP BY day
ORDER BY day DESC;

Worth knowing

  • Costs are stored in micros. Divide by 1e6 for currency units.
  • Filter on _PARTITIONTIME or a date column — BigQuery bills on data scanned, and ads tables accumulate quickly.
  • Rotate the service account key roughly every 90 days.