# Google Ads spend in Keel HQ for MER and margin layers

> Connect Google Ads to Keel HQ with Google's OAuth. Daily platform spend for one chosen account feeds Overview, MER and CM3. Keel HQ only runs read queries.

Source: https://keelhq.io/integrations/google-ads · Published 2026-10-27 · Last verified 2026-10-27

**TL;DR:** Keel HQ signs in to Google Ads with Google's OAuth, asks you to choose one account, and imports its daily platform spend. A nightly sync at 10:15 UTC refreshes the trailing 14 days, after an initial 180-day import. The spend feeds Overview, MER and the CM3 margin layer. Google's one Ads scope can't be narrowed to read-only, but Keel HQ only sends read queries.

Platform spend is half of your advertising picture. Once Google Ads is connected, its daily spend joins [Meta Ads](/integrations/meta-ads) in the same Overview, MER and CM3 figures, so the number you read is total platform spend, not one channel's.

## What syncs

**Daily platform spend**, and the conversion value Google reports, for the one account you chose, in that account's currency.

**Nightly refresh** at 10:15 UTC over the trailing 14 days.

**History import.** On first connection, about 180 days in 28-day chunks, so the comparison periods on Overview have data.

**About the permission** Google offers one OAuth scope for the Ads API, `https://www.googleapis.com/auth/adwords`, and it isn't read-only. Keel HQ uses it only to run read queries, and never creates or edits campaigns, budgets or ads.

## Connect Google Ads

**Open Settings → Integrations**

Find the **Google Ads** card. If it says it isn't configured on this deployment, an administrator must set GOOGLE\_ADS\_CLIENT\_ID, GOOGLE\_ADS\_CLIENT\_SECRET, GOOGLE\_ADS\_REDIRECT\_URI, and GOOGLE\_ADS\_OAUTH\_STATE\_SECRET first (`openssl rand -base64 32` for the state secret).

**Click Connect Google Ads**

Approve access on Google's screen. You're returned to Keel HQ to choose an account.

**Choose the account**

Pick the account whose spend should count, then click **Connect account**. The card shows its name, id and currency.

**Let the import run**

The first nightly runs bring in history in chunks. The card shows the last sync time once data has arrived. **Disconnect** stops syncing.

## When something looks wrong

**A sync error on the card.** Google rejected the stored access, or the account isn't reachable. Disconnect and connect again.

**Recent days change.** Google adjusts spend after the fact, which is why each night refreshes the trailing 14 days.

**Spend in the wrong currency.** Keel HQ imports in the account's own currency, shown on the card.

## What this doesn't do

No campaign changes: no creating, pausing or budgeting.

No campaign, keyword or search-term breakdown. It's daily platform spend for the account, nothing finer.

Keel HQ is in private beta, with a waitlist.

## FAQ

### Is Keel HQ's Google Ads access read-only?

Keel HQ only sends read queries: a SELECT for daily cost and conversion value. The OAuth scope it requests is Google's https://www.googleapis.com/auth/adwords, which is the only scope Google offers for the Ads API and isn't limited to reading, so the read-only behavior is Keel HQ's, not enforced by the scope.

### How often does Google Ads sync?

Nightly at 10:15 UTC. Each run refreshes the trailing 14 days, so late adjustments from Google are picked up.

### How far back does it import?

The first connection imports about 180 days of daily spend in 28-day chunks, plus the month to date, so the 90-day Overview comparison has a prior period to compare against.

### Can I connect more than one Google Ads account?

Keel HQ imports one account per connection, the one you choose after signing in.

### Why does the card say it isn't configured?

Google Ads needs GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REDIRECT_URI, and GOOGLE_ADS_OAUTH_STATE_SECRET on the deployment (generate the state secret with openssl rand -base64 32). If the card says so, an administrator has to set them before anyone can connect.

## Sources

- [OAuth 2.0 overview for the Google Ads API](https://developers.google.com/google-ads/api/docs/oauth/overview), Google for Developers (accessed 2026-10-27)
