# Google Ads spend and ROAS

> Connect a Google Ads account to see spend, attributed revenue, ROAS and cost per customer for every Google campaign, ad group, ad and Performance Max asset group, next to Meta Ads.

Source: https://metricraven.com/docs/google-ads  
Markdown: https://metricraven.com/docs/google-ads.md  
Section: Features

See which Google Ads campaigns bring paying customers: Google's spend next to the visitors, customers and revenue MetricRaven attributes to each campaign, ad group and ad, with combined totals when Meta Ads is connected too.

## Before you start

- The [tracking script](https://metricraven.com/docs/install) on every landing page.
- Revenue from a [payment provider](https://metricraven.com/docs/stripe) or the [Payments API](https://metricraven.com/docs/payments-api).
- A Google account with access to the Google Ads account, directly or through a manager account (MCC).

## Connect Google Ads

1. **Open Settings → Integrations → Ads → Google Ads**

   Choose **Connect Google Ads**. Website admins and owners can connect; viewers see the status.

2. **Sign in with Google and allow Google Ads access**

   Google asks for access to your Google Ads data in its own consent step. MetricRaven only reads reports: it never creates, edits or pays for ads. This is separate from Search Console: connecting or disconnecting Google Ads doesn't change your Search Console connection.

3. **Choose the Google Ads account**

   Accounts you reach through a manager account are listed with **via manager**. Each website tracks one account. MetricRaven imports the last 90 days of spend, impressions and clicks per ad and day, then syncs once a day. **Sync now** fetches the latest numbers.

4. **Add the final URL suffix**

   See below. Visits only match a campaign when its clicks carry these tags.

5. **Open Revenue → Paid acquisition**

   With more than one network connected, a switch shows **All** (combined spend, revenue, ROAS and cost per customer) or one network. **Full table** lists campaigns, ad groups and ads of every network.

> **Verify it works**
>
> The settings panel shows the account, its currency and timezone, and the last synced day. Click one of your own ads, then check that the visit appears on its campaign row.

## Final URL suffix

In Google Ads, open **Admin → Account settings → Tracking → Final URL suffix** and paste:

```bash title="Final URL suffix (account)"
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={adgroupid}&utm_content={creative}
```

Google fills in the ValueTrack values on every click: `{campaignid}` is the campaign ID, `{adgroupid}` the ad group ID and `{creative}` the ad ID. IDs never change when you rename a campaign, so history stays matched. Auto-tagging (`gclid`) can stay on.

Performance Max campaigns have no ad groups or ads. Set this suffix on each Performance Max campaign (**Campaign settings → Campaign URL options → Final URL suffix**), which overrides the account's:

```bash title="Final URL suffix (Performance Max)"
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={assetgroupid}
```

> **Note:** `utm_medium=cpc` puts these visits in the **Paid** channel. MetricRaven also recognises `utm_source` adwords, google_ads and googleads, and the mediums ppc and paid.

## How visits are matched to campaigns

- `utm_content` equal to an ad ID (or a Performance Max asset group ID): that ad, its ad group and campaign.
- `utm_campaign` equal to a campaign ID or name; `utm_term` then picks the ad group and `utm_content` the ad.
- `utm_term` equal to an ad group ID: that ad group and its campaign.
- Google traffic (`utm_source=google` with a paid medium, or a `gclid`, `gbraid` or `wbraid` click) whose `utm_campaign` contains a campaign name.

A visit tagged for another network (`utm_source=facebook`, an `fbclid`) never matches a Google campaign, even with the same campaign name. Google clicks that match no synced campaign (a click with only `gclid`, `gbraid` or `wbraid`, or Google tags with an unknown campaign) appear on their own line, **Unattributed Google clicks**, and are left out of totals, ROAS and cost per customer.

## Metrics

The same as [Meta Ads](https://metricraven.com/docs/meta-ads#metrics): spend, revenue (first touch), ROAS, customers, cost per customer, ad visitors, assisted revenue and clicks (Google's clicks are clicks to your site). Spend is `metrics.cost_micros` ÷ 1,000,000 in the account's currency, converted at ECB rates. Spend outside ads and asset groups (campaign types without ads) is kept as **Campaign-level spend** on its campaign, so totals match the account. With several networks, **All** adds their spend and revenue, counts each customer once, and sums ad visitors.

| Google Ads | MetricRaven |
| --- | --- |
| Campaign | Campaign |
| Ad group | Ad group (Meta: ad set) |
| Ad | Ad |
| Performance Max asset group | Ad group and ad |

## Currency, timezone and days

Google reports whole days in the account's timezone; days are summed the same way as [Meta Ads](https://metricraven.com/docs/meta-ads#currency) (Last 7 days is 7 account days, today included). Each sync re-reads the last 7 days, because Google can still adjust recent spend (invalid click credits). Removed ads are imported too.

## API, MCP and CLI

- REST: `GET /api/v1/stats/ads?provider=google` (or `provider=all` for every network). See the [Reports API](https://metricraven.com/docs/reports-api#ads).
- MCP: `get_ad_spend` with `provider: "google"`.
- CLI: `metricraven analytics ads --provider google`.

## Troubleshooting

- **No accounts listed**: the Google login has no access to a Google Ads account. Ask for access in Google Ads (Admin → Access and security) or use the login of its manager account, then **Reconnect Google Ads**.
- **"Still limited to test accounts"**: MetricRaven's Google Ads API access is waiting for Google's approval. The connection stays and syncing starts by itself once approved.
- **Access revoked or expired**: the panel asks you to reconnect (for example after you removed MetricRaven in your Google Account). History is kept.
- **Numbers differ from Google Ads**: Google counts modeled conversions and its own attribution windows. MetricRaven counts tracked visitors and payments only.

## Details

- Disconnecting deletes the imported spend and the stored Google token. It doesn't revoke the token at Google, because that would also end your Search Console access; remove MetricRaven in your Google Account (Security → Third-party access) to revoke everything.
- Switching accounts removes the old account's spend and imports 90 days of the new one.
- Traffic filters don't apply to ad spend: spend can't be split by visitor properties.
- The public demo shows a synthetic Google Ads account next to the Meta sample.
