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.
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
- In the Google Cloud console, open BigQuery → Data transfers → Create transfer.
- Choose Google Ads as the source.
- Enter your Customer ID, or use the manager account flow if you have an MCC.
- Pick a report type — Standard is the sensible starting point — and a refresh window. Seven days is common; thirty is the maximum.
- Under destination settings, select or create a dataset, for example
google_ads_raw. - Schedule it daily. Google Ads transfers run at most once every 24 hours regardless.
- 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.createerror. - roles/bigquery.dataViewer
- On the ads dataset only — not the whole project.
- Go to IAM & Admin → Service Accounts and create one named, say,
climpt-bigquery-readonly. - Grant it BigQuery Job User and BigQuery Read Session User at project level.
- Open BigQuery, find the dataset, and use Share to grant the service account BigQuery Data Viewer.
- Create a JSON key from the account’s Keys tab.
- 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
1e6for currency units. - Filter on
_PARTITIONTIMEor a date column — BigQuery bills on data scanned, and ads tables accumulate quickly. - Rotate the service account key roughly every 90 days.