Skip to main content
A google_ads account is a Google Ads client account, not a social network. It publishes nothing and receives no messages: it holds campaigns. You don’t need your own Google Cloud project, Google Ads API access or Google’s API review. PlugKit calls the Google Ads API with its own approved access; your users only sign in with Google.

Search campaigns

Budget, countries, languages, bidding.

Keywords & ads

Ad groups with keywords, responsive search ads.

Insights

Spend and performance at every level.

Offline conversions

Tell Google which leads became customers.

Connect

Open the returned authUrl in the browser. When the Google user can reach several client accounts — directly, or through an agency’s manager account — they pick which ones to add, and each becomes its own PlugKit account. A manager account on its own isn’t connectable: it holds no campaigns.
Check what you're spending against
Returns the currency, status and whether auto-tagging is on (you need it to send conversions).

Same API as Meta Ads

Google Ads uses the same /v1/ads/{accountId}/… routes as Meta Ads, and the account decides which one PlugKit calls. The words are mapped like this:
Budgets are in minor units, like on Meta. 2000 is €20.00. Google counts in micros internally; PlugKit converts both ways, so you never see them.
Everything is created PAUSED. Set status: "ACTIVE" only after an explicit go on the amount and the targeting.

Build a Search campaign

Campaign — budget and targeting
  • dailyBudget is required. The budget lives on the campaign: ad groups have none.
  • countries defaults to ["FR"]. A Google campaign with no location targeting would serve worldwide.
  • bidStrategy: MAXIMIZE_CLICKS (default), MAXIMIZE_CONVERSIONS or MANUAL_CPC.
  • containsEuPoliticalAdvertising defaults to false. Google requires this declaration on every new campaign.
Ad group — with its keywords
bidAmount is the max CPC, in minor units. matchType is BROAD by default.
Ad — responsive search ad
You need 3 to 15 headlines (30 characters max each) and 2 to 4 descriptions (90 characters max). Ad ids come back as {adGroupId}~{adId}: pass them as-is to PATCH /ads/ACCOUNT_ID/ads/{id}. An ad can be paused or resumed, but not renamed.
Keywords of an ad group

Insights

  • level is account, campaign, adset or ad.
  • objectId filters at that level.
  • For the period, use datePreset (today, yesterday, last_7d, last_14d, last_30d, this_month, last_month) or since + until (YYYY-MM-DD).
  • spend and cpc come back in major units, as strings ("12.34"), and ctr as a percentage, the same shape as on Meta.

Offline conversions

Tell Google which clicks turned into real results (a lead that signed, a sale closed by phone), so it optimizes on them rather than on form fills.
  1. In Google Ads, create a conversion action that imports from “Other data sources or CRMs”. Then find its id:
Use one with accepts_uploads: true.
  1. Send the conversions:
  • Each conversion needs a gclid (captured from the landing page URL), an email, or a phone in E.164 format.
  • PlugKit hashes email and phone (SHA-256) before they leave.
  • value is in major units (490 = €490), unlike budgets.
  • orderId lets Google drop duplicates.
  • Pass "validateOnly": true to check a payload without importing it.
  • Up to 2,000 conversions per call.
Conversions go through Google’s Data Manager API, which replaced the Google Ads API conversion upload for new integrations in 2026. You don’t need to do anything for this: the same connection covers both.

Permissions

The Google consent screen asks for two scopes: adwords (manage campaigns) and datamanager (import conversions).