/ Google Ads API
How we use the Google Ads API
devdash AB builds and runs an internal campaign-management tool for the Google Ads accounts we operate — our own products and the client accounts linked under our manager account. This page describes that tool, what it does with the Google Ads API, and how the data it reads is handled.
Last updated 20 August 2026
- Company
- devdash AB, org. nr 559513-3124, Stockholm, Sweden
- Tool
- DevDash Ads Console — internal, staff-only
- Manager account
- DevDash Ads Manager · 859-716-7954
- Access requested
- Google Ads API Basic access
- Model
- Agency / in-house tool — not resold, not offered as a product
- API contact
- contact@devdash.co
Who we are
devdash AB is a Swedish software company in Stockholm, founded by Philip Rönnmark and Oskar Hellström. We build and operate web and mobile products — our own, such as the rental-housing marketplace bofrid.se, and products we build and run for clients.
Running those products means running their advertising. We hold a Google Ads manager account, DevDash Ads Manager (customer ID 859-716-7954), and the accounts we are responsible for are linked beneath it — including the Bofrid account (187-084-3033). Advertiser verification for that account is complete.
The tool: DevDash Ads Console
DevDash Ads Console is an internal tool. It is not a product, it is not sold, licensed, white-labelled or made available to anyone outside devdash AB, and there is no sign-up. Its users are our own team, working on the accounts linked under our manager account with the account owner's authorisation.
It exists because the work is repetitive and spread across many accounts. Reading a month of spend, checking whether every campaign is actually serving, adding the week's negative keywords, and building a new search campaign to a house standard are all things that are slow and error-prone to do by hand in the Google Ads interface, once per account, and fast and consistent to do once through the API.
The tool runs on our own infrastructure. It is operated from our internal console — an authenticated, staff-only surface, not a public web application. Every write is first submitted to the API in validate-only mode and only applied once it validates, so a malformed change is rejected before it can touch a live account.
What it does
Each function below is a real operation in the tool, with the Google Ads API service or resource it uses.
Account discovery
Expands our manager account into the list of client accounts linked below it, so the team always works against an explicit, named account rather than a remembered ID.
GoogleAdsService.Search over customer_client
Performance reporting
Pulls spend, impressions, clicks, conversions and cost-per-conversion per campaign, ad group, ad and keyword into our internal reporting, so a monthly client report is generated from the API rather than re-typed out of the UI.
GoogleAdsService.Search / SearchStream (GAQL) over customer, campaign, ad_group, ad_group_ad, ad_group_criterion
Serving diagnostics
Answers one question the Google Ads UI makes slow across many accounts: is this campaign actually serving, and if not, what is blocking it — budget, policy, a paused ad group, or no eligible keywords.
campaign.primary_status and primary_status_reasons, ad_group_ad.policy_summary.approval_status
Change auditing
Reads back who changed what and when, so a drop in delivery can be traced to the edit that caused it instead of guessed at.
GoogleAdsService.Search over change_event
Campaign build-out
Creates search campaigns with their budget, ad groups, responsive search ads and keyword sets from a reviewed plan, so a new campaign is built consistently and identically every time instead of by hand in the UI.
CampaignBudgetService, CampaignService, AdGroupService, AdGroupAdService, AdGroupCriterionService
Targeting management
Sets and updates geographic and language targeting on a campaign — for Swedish-market accounts this is nearly always the same small, repeatable set of criteria.
CampaignCriterionService, GeoTargetConstantService, LanguageConstantService
Negative keyword hygiene
Adds negative keywords at campaign and ad group level from the search-terms we review, which is the single most repetitive part of managing a search account.
CampaignCriterionService, AdGroupCriterionService
Budget, bid and status edits
Adjusts daily budgets and bids and pauses or enables campaigns, ad groups, ads and keywords — always as an explicit, logged operation rather than an ad-hoc click.
CampaignBudgetService, CampaignService, AdGroupService, AdGroupAdService, AdGroupCriterionService
Keyword planning
Retrieves keyword ideas and search-volume estimates for the accounts we manage, so campaign plans are grounded in Google's own data. This feature is the main reason we are applying for Basic access: it is not available under an Explorer-level developer token.
KeywordPlanIdeaService.GenerateKeywordIdeas
Interface
The mock-up below shows the two screens the team spends its time in: the account overview, which answers “where is the money going and is everything serving”, and the change review, which shows a pending set of edits before they are applied.
DevDash Ads Console — Bofrid (187-084-3033)
Spend · 30 d
11 592 kr
Conversions
183
Cost / conv.
63 kr
Campaigns serving
2 of 4
| Campaign | Serving | Blocker | Budget | Spend | Conv. |
|---|---|---|---|---|---|
| Search · Brand | Serving | — | 120 kr/d | 3 402 kr | 61 |
| Search · Hyra lägenhet | Limited | Budget constrained | 200 kr/d | 5 980 kr | 88 |
| Search · Andrahand | Serving | — | 80 kr/d | 2 210 kr | 34 |
| Performance Max · Q3 | Not serving | Campaign paused | 150 kr/d | 0 kr | 0 |
Pending change set — validate-only passed
3 operations- ADDSearch · Hyra lägenhet12 negative keywords from search-term review
- UPDATESearch · Hyra lägenhetDaily budget 200 kr → 260 kr
- UPDATEPerformance Max · Q3Status PAUSED → ENABLED
Interface mock-up. Figures are illustrative and are not live advertiser data.
Data handling and security
- We read data only from Google Ads accounts we own or that are linked to our manager account by their owner, and only for the purpose of managing those accounts.
- Google Ads data is stored on infrastructure devdash AB controls, hosted in the EU, and is used for reporting to, and management of, the account it came from. It is never sold, brokered, shared with third parties, or combined into any cross-advertiser dataset or benchmark.
- OAuth credentials and the developer token are held in our internal secret vault, never committed to source control, and are readable only by the service that makes the API calls and by the staff who administer it.
- Access to the tool is limited to devdash AB staff and is authenticated. There is no public or customer- facing interface to it.
- When an account leaves our management, its link to our manager account is removed and we delete the ads data we hold for it on request.
Our full privacy policy and terms apply.
Policy compliance
- The tool is used only to manage Google Ads accounts we are authorised to manage. It does not provide any service to third parties, and no Google Ads data leaves devdash AB.
- We comply with the Google Ads API Terms and Conditions and the Required Minimum Functionality policy, and with the Google Ads policies that govern the campaigns themselves.
- The tool respects API rate limits, does not poll for data it can cache, and makes no attempt to retrieve data outside the accounts linked to our manager account.
- All changes are auditable: every write is recorded on our side and is visible in the account's own Google Ads change history.
Contact
Questions about this application, the tool, or our API use — including from the Google Ads API review team — reach us at contact@devdash.co.
- Legal entity
- devdash AB
- Organisation number
- 559513-3124
- Registered address
- Brännkyrkagatan 95, 118 31 Stockholm, Sweden
- Website
- https://www.devdash.co