tracking_googleads_roas_report
Reads what each Google Ads campaign cost and what it earned back, with ad groups and ads nested underneath.
Reads what each Google Ads campaign cost and what it earned back, with ad groups and ads nested underneath. Return on ad spend and cost per customer are worked out at campaign level from the revenue we traced ourselves; spend, impressions, clicks and Google's own conversion counts are there at every level. Each account currency is reported separately and never added to another. Covers the last 30 days unless a window is given.
Behavior
- HTTP
GET /tracking/googleads/reports/roas
Arguments
Name | Type | Required | Description |
|---|---|---|---|
to | string | — | End of the reporting window, inclusive. ISO-8601 date or timestamp; a date-only value covers that whole day, so revenue after midnight is not cut off. Omit to end now. |
from | string | — | Start of the reporting window, inclusive. ISO-8601 date or timestamp, e.g. 2026-01-01. Omit to start 30 days before the end of the window. |
model | string | — | Which touchpoint gets the credit for a conversion: the last paid click before it, or the first. Defaults to last_click. |
domain | string | — | Restrict to conversions tracked on this installed site, e.g. acme.com. Omit to cover every domain of the product. |
customerId | string | — | Restrict to one Google Ads account, by its customer id without dashes. Omit to cover every connected account. |
lookbackDays | integer | — | How far back before a conversion a paid click may sit and still earn the credit, in days. 1-365, silently clamped into that range; defaults to 30. |
Response
Field | Type | Always | Description |
|---|---|---|---|
to | string | • | End of the window this report covers, echoed back as an ISO-8601 UTC timestamp. |
from | string | • | Start of the window this report covers, echoed back as an ISO-8601 UTC timestamp. |
model | string | • | Which touchpoint earned the credit in these numbers: the last paid click before the conversion, or the first. |
stale | boolean | • | True when any account below is running on cost older than the freshness threshold, or on no cost at all — read this before acting on the numbers. |
domain | string | • | The installed site this report was restricted to; null when it covers every domain of the product. |
accounts | array | • | One entry per Google Ads account and currency. Kept apart on purpose: amounts in different currencies are never added together. |
currency | string | • | ISO-4217 code every amount in this report is expressed in, when all accounts share one; null when the report spans several currencies. |
computedAt | string | • | When this report was calculated (ISO-8601 UTC). The figures are a snapshot at this moment, not live. |
customerId | string | • | Google Ads account this whole report covers, when it covers exactly one; null when it spans several accounts. |
lookbackDays | number | • | How far back before a conversion a paid click was allowed to sit and still earn the credit, in days. |
costLastSyncedAt | string | • | Oldest moment cost was pulled from Google Ads across the accounts below (ISO-8601 UTC); null when any account has never synced. |
unmatchedAttributed | array | • | Revenue we tracked but could not tie to any Google Ads campaign, grouped by the utm_campaign we saw. A long list here means the ad tagging needs fixing, not that the ads failed. |
Try it
Reads what each Google Ads campaign cost and what it earned back, with ad groups and ads nested underneath.