Google Ads spend and ROAS, read by itself
Sign in to Google Ads once and give each ad account to a project. Every night Sumly reads what each campaign spent, so ROI shows what it cost and what the people it brought paid.
Three steps
Read-only in what Sumly does: it never changes a campaign, a budget or a bid.
-
1
On Costs › Ad spend, press Connect Google Ads and allow access with the Google account that runs your ads.
-
2
Pick the project each ad account is for and how far back the first read goes, up to two years.
-
3
Tag your ads' links with a final URL suffix such as
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}, so each campaign meets its visitors. Untagged clicks still count for the Google Ads source by Google's click id.
Or let your coding assistant do it
Paste this into Claude Code, Cursor or Codex in your project. It fits the code to how your project is built, asks you for the dashboard steps and leaves the keys to you.
See what it says
Set up Google Ads for Sumly in this project.
Sumly (https://sumly.dev) shows revenue next to the visits and app users it came from. The full guide is https://sumly.dev/integrations/google-ads; read it if anything below is unclear.
Steps:
1. On Costs › Ad spend, press Connect Google Ads and allow access with the Google account that runs your ads.
2. Pick the project each ad account is for and how far back the first read goes, up to two years.
3. Tag your ads' links with a final URL suffix such as `utm_source=google&utm_medium=cpc&utm_campaign={campaignid}`, so each campaign meets its visitors. Untagged clicks still count for the Google Ads source by Google's click id.
So each payment shows which visit it came from: A visit with Google's click id (gclid, from auto-tagging) counts under the Google Ads source. A campaign whose name or id the visits carry as utm_campaign counts for that campaign on ROI; the others count for the Google Ads source.
Keep in mind: Not open yet: Google is still reviewing Sumly's access to the Google Ads API. Until then, import Google Ads exports on Costs or send spend through the costs API. Campaigns only, not ad groups, keywords or single ads. Google's sign-in has no read-only permission for Google Ads; Sumly only ever sends reports (queries), never a change.
How to work:
- Look at how this project is built first, and fit the code to its framework and its way of doing things; the examples above are a starting point, not something to paste as is.
- Steps that happen in a dashboard (Sumly, or Google Ads's own) are mine: tell me exactly what to click, then wait for me.
- Keys the code needs belong in environment variables, never in the code or the repository. Never ask me to paste a secret key into this chat; tell me which variable to set.
- Change only what this needs, show me the changes before you commit, and tell me how to check that it works.
What you see after connecting
Google Ads next to every other project and provider, on the same pages.
Costs
One line per campaign, with the days read from Google Ads.
ROI
What each campaign spent next to what the visitors it brought paid, its ROI and payback.
Overview
Profit with the ad spend taken off.
Which campaign brought them
A visit with Google's click id (gclid, from auto-tagging) counts under the Google Ads source. A campaign whose name or id the visits carry as utm_campaign counts for that campaign on ROI; the others count for the Google Ads source.
How attribution works →Counts toward your plan
Nothing: costs never count toward your plan. Plans →
What you don't get
No conversions from Google's side and no bid changes: Sumly counts the payments itself, from your payment provider.
The details
What is read
- Each campaign's cost, clicks and impressions by day
- The ad account's name and currency
- The accounts under a manager account (MCC)
When
- Every night, the last seven days again, as Google corrects recent days (invalid clicks).
- Read now on the Ad spend page, at any time.
- Costs stay in the ad account's currency and turn into euros at the European Central Bank's rate of each day.
- Each campaign and day is one cost, known by Google's ids: read again it is updated, never added twice, and a line imported from a Google Ads export for the same campaign and day is replaced.
Good to know
- Not open yet: Google is still reviewing Sumly's access to the Google Ads API. Until then, import Google Ads exports on Costs or send spend through the costs API.
- Campaigns only, not ad groups, keywords or single ads.
- Google's sign-in has no read-only permission for Google Ads; Sumly only ever sends reports (queries), never a change.
Google Ads questions
Does Sumly change my campaigns?
No. It asks Google for reports only. Google's permission is the same for reading and changing, so Sumly's code only ever sends queries.
Why does a campaign show no visitors?
Its ads' links carry no utm_campaign that matches its name or id. Add a final URL suffix in Google Ads; until then its spend counts for the Google Ads source.
I imported Google Ads exports before. Will they double?
No. The day and campaign read from the account replace the imported line for the same campaign and day.
Which currency?
The ad account's. Sumly turns it into euros at the European Central Bank's rate of the day, like every cost.
Other integrations
Try it with your own projects
Sign in with Google or a code by e-mail and connect your first project. The first 14 days of a paid plan are free, with no card.
Start free trialOr look around first: open the live demo.