Google Ads API design document
Tool: Climbers GA Pro App · Operator: Climbers Hub · Last updated 17 October 2026
1. Purpose
Climbers GA Pro App is an internal campaign management tool. It manages App campaigns only, in Google Ads accounts owned by Climbers Hub and reached through our own manager (MCC) accounts. It is used by our in-house user-acquisition team and is not available to external users or clients.
2. Users and access
- Users: members of the Climbers Hub user-acquisition team.
- Sign-in: Google OAuth 2.0 (scope
https://www.googleapis.com/auth/adwords) with the user's own Google account, which must already have access to the account in Google Ads. - The tool only lists and manages the client accounts linked under our manager accounts. It does not create accounts or send invitations.
3. Architecture
A desktop application (Python, using the official google-ads client library) runs on the user's computer and serves its interface on localhost. Calls go directly from that computer to the Google Ads API. Credentials (developer token, OAuth client, refresh token) are stored in a local settings file that is never uploaded. There is no backend server.
4. Features and API services used
| Feature | What it does | Main API calls |
|---|---|---|
| Account list | Lists client accounts under our manager accounts | CustomerService.ListAccessibleCustomers, GoogleAdsService.Search on customer_client |
| Campaign creation | Creates an App campaign with budget, bidding (tCPA or tROAS), locations, languages, ad group and App ad; paused by default | GoogleAdsService.Mutate (campaign budget, campaign, campaign criteria, ad group, ad group ad, assets) |
| Assets | Creates image, YouTube video and HTML5 assets for App ads | GoogleAdsService.Mutate (asset operations) |
| Reporting | Daily and period metrics per campaign, ad group, country, placement and asset | GoogleAdsService.Search on campaign, ad_group, ad_group_ad_asset_view, user_location_view (network via segments.ad_network_type) |
| Campaign management | Changes name, status, budget, target CPA / ROAS, locations, languages, ad text and assets on our campaigns; duplicates ad groups and campaigns | GoogleAdsService.Mutate |
| Rule-based bidding | At fixed times each day, applies team-defined rules to budgets and targets of selected campaigns, with a daily limit on how far a budget can grow | GoogleAdsService.Search, GoogleAdsService.Mutate |
| Policy clean-up | Finds disapproved assets and removes them from ads | GoogleAdsService.Search on ad_group_ad_asset_view.policy_summary, GoogleAdsService.Mutate |
| Conversion actions | Lists Firebase conversion actions to select as campaign goals | GoogleAdsService.Search on conversion_action |
5. Safeguards
- New campaigns are paused unless the user explicitly chooses to start them and confirms.
- Every create or change can first be sent with
validate_onlyso Google checks it without applying it. - Automated rules have a daily ceiling on budget increases and an optional maximum budget, and every change is written to a local log the team can review.
- API usage is counted per feature. On
RESOURCE_EXHAUSTEDthe tool stops all calls until the time Google gives, instead of retrying. - Reports are read in batches with GAQL queries that select only the fields needed.
6. Data handling
Google Ads data is shown in the tool and kept on the user's computer (for example, a history of created campaigns and the change log). It is not sold or shared with third parties. See the privacy policy.
7. Expected usage
A small team (fewer than 10 users) managing App campaigns across our own accounts. Most calls are reporting searches plus campaign and asset mutations when new creatives launch. Daily volume is a few thousand operations, peaking when reports are refreshed across all accounts.
8. Contact
Climbers Hub · contact@climbers.info · climbers.info