Google Ads API Integration
Google Ads, from inside WittiGrow
WittiGrow is a marketing platform for small businesses. We use the Google Ads API so our customers can create and manage their own Google Search campaigns — always starting paused — from inside the WittiGrow dashboard.
What we use the API for
- Account discovery — after connect, listing which Google Ads customers the signed-in account can access, and reading each customer's currency, name, and manager (MCC) status so we never let a customer accidentally target a Manager account.
- Campaign creation — one Search campaign per launch, always created in
PAUSEDstatus, with one ad group per audience hypothesis WittiGrow proposed (each carrying its own Responsive Search Ad and keyword set). - Ad & campaign management — pausing or removing individual ads, and removing whole campaigns, from the WittiGrow dashboard.
- Status sync — periodically reading live campaign/ad-group/ad status back from Google Ads (GAQL, read-only) so the WittiGrow dashboard reflects changes the customer made directly in Google Ads, such as enabling a paused campaign.
OAuth scope
One scope only: https://www.googleapis.com/auth/adwords.
This scope is required so WittiGrow can create and manage Search campaigns inside the customer's own Google Ads account on their behalf — there is no narrower Google Ads API scope that covers campaign, ad group, ad, and keyword writes.
We do not request Drive, Gmail, Cloud Platform, Profile, or Userinfo scopes.
What we store
- OAuth access and refresh tokens (Firestore)
- Customer's Google Ads Customer ID, account currency, descriptive name, and manager (MCC) flag
- Resource names of the campaigns, ad groups, and ads WittiGrow created, so we can look up their live status
We never store billing information, payment methods, or anything outside the Google Ads scope. Customers can disconnect at any time; on disconnect we delete the tokens and stop calling the API.
How customers connect
From the WittiGrow dashboard, under Settings → Platform Connections:
The platform-connections panel in the customer dashboard
The ad-creation flow
After connecting their Google Ads account, customers open the Google Ads wizard from the Ads tab. WittiGrow proposes a set of audience hypotheses derived from the customer's own product/website analysis, and the customer picks which ones to turn into ad groups. For each hypothesis, WittiGrow drafts Responsive Search Ad headlines and descriptions plus keywords, which the customer reviews and can edit inline before confirming. On confirmation, WittiGrow creates one Search campaign in the customer's own Google Ads account via the API — one ad group per selected hypothesis — always in PAUSED status. No impressions are served and no money is spent until the customer reviews the campaign in Google Ads and enables it themselves.
The Ads page in the customer dashboard — entry point to the ad-creation wizard
Safeguards
- Every campaign and ad group WittiGrow creates starts
PAUSED— WittiGrow never enables a campaign on the customer's behalf. - The customer sets the daily budget once at creation; WittiGrow does not raise it or create additional spend without a new, customer-initiated launch.
- Actually enabling a campaign — and controlling ongoing spend — happens in the customer's own Google Ads account, not inside WittiGrow.
- All API calls are triggered by an explicit, authenticated customer action (connect, launch, pause, remove). There are no autonomous or scheduled campaign changes.
- API usage operates under whatever developer-token access tier (Basic or Standard) Google has approved for the account, and within Google's published daily quotas for that tier.
Customer ownership
Customers always operate their own Google Ads account with their own billing. WittiGrow does not run ads from an internal MCC on behalf of customers — every campaign lives in the customer's account.
Home · Pricing · Privacy · Terms · Free audit

