/ 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

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

CampaignServingBlockerBudgetSpendConv.
Search · BrandServing120 kr/d3 402 kr61
Search · Hyra lägenhetLimitedBudget constrained200 kr/d5 980 kr88
Search · AndrahandServing80 kr/d2 210 kr34
Performance Max · Q3Not servingCampaign paused150 kr/d0 kr0

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