Google Ads v2

Provides integration with Google Ads, Google's online advertising platform. Advertisers and agencies use Google Ads to run search, display, video, shopping and app campaigns, manage budgets and bids, track conversions, and report on performance across one or many customer accounts.

The Node connects to the Google Ads API (version v26). It can run GAQL reports, read account resources, create, update and remove resources such as campaigns, ad groups and labels, and run provider actions such as keyword planning and offline conversion uploads. Use it to bring Google Ads reporting into other systems, or to keep campaigns and conversions in sync with your own data.

Revision History

0.0.0.1 - Initial release.

Connection

The Connection stores the Google Cloud OAuth client and the tokens obtained when you click Connect your Account. All Methods use it. You can also set the manager account and the default customer account that requests act on.

Property Type Description
ClientId String OAuth client ID from a Google Cloud project with the Google Ads API enabled.
ClientSecret Masked OAuth client secret from the same Google Cloud project.
ManagerAccountId String Optional 10-digit manager (MCC) customer ID without hyphens, for example 1234567890. It is sent to Google as the login customer ID, which you need when you access client accounts through a manager account.
DefaultCustomerId String Optional 10-digit customer ID without hyphens. It is used when Options.customerId is empty.
TimeoutSeconds Integer Per-request timeout in seconds. The default is 100.
AccessToken Masked Google access token with the adwords scope. Connect your Account sets it.
RefreshToken Masked Offline Google refresh token. Connect your Account sets it, and the Node uses it to renew the access token automatically.

Setup Notes

Run this Node on a Cloud Runtime.

  1. In Google Cloud, create or choose a project, enable the Google Ads API, and create an OAuth client. Add the Flowgear OAuth callback URL, https://app.flowgear.net/r/auth, to the client's authorized redirect URIs.
  2. Make sure the project's Google Ads API access level allows the accounts you need. The access level (Test, Explorer, Basic or Standard) decides which accounts the Connection can reach. Google retired developer tokens on 9 September 2026, so the Connection has no developer token Property.
  3. Enter ClientId and ClientSecret, then click Connect your Account and sign in with a Google user that has access to the Google Ads accounts. The Node requests offline access to the https://www.googleapis.com/auth/adwords scope.
  4. If you reach client accounts through a manager account, enter its 10-digit ID in ManagerAccountId. Enter DefaultCustomerId to avoid repeating the customer ID in every Method.
  5. Enter customer IDs as 10 digits without hyphens. The Node rejects 123-456-7890 instead of rewriting it.

You can supply an AccessToken on its own, but it can't be renewed. When it expires, the Node asks you to supply a new token.

Connections from the v1 Google Ads Node do not migrate. Create a new Connection and click Connect your Account. The v1 Node-level CustomerId becomes DefaultCustomerId or Options.customerId.

Methods

The Node groups the Google Ads API into six Methods by intent. In each Method, you choose a template that selects the operation and fills OperationId, Options and, where needed, Items. Options and Items use Google's own field names, such as customerId, query and resourceName. Options.customerId falls back to DefaultCustomerId when it is empty.

The Node handles paging itself. Templates have no page token, page size or search settings fields. The first page of a query, or the first batch or item of a mutation, is sent while the Node runs. Later pages and batches are sent as the next Node reads the results.

Query

Runs a GAQL report or another paged search with automatic pagination. The operations are googleAds:search (GAQL), googleAdsFields:search and generateKeywordIdeas.

The search template's default query is SELECT customer.id, customer.descriptive_name FROM customer, so it runs with only DefaultCustomerId set. The query sample shows a filtered campaign report you can adapt.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Operation selected from a template.
Options Object customerId, the GAQL query and other search fields. query is required for every operation that takes one, including googleAds:search and googleAdsFields:search.
Return Type Description
Response Array One row per result, such as a GoogleAdsRow with the campaign, metrics and segments fields selected by the query. Page metadata such as nextPageToken, fieldMask and totalResultsCount is not included.

A query that matches nothing returns no rows. If Google rejects the first page, for example because of a GAQL syntax error, the Node raises that error instead of returning an empty result.

Read

Reads accounts, invoices, operations, batch job results and other fixed resources through Google's 11 GET operations, such as listAccessibleCustomers.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Operation selected from a template.
Options Object Route and query values using Google's field names, such as customerId or resourceName.
Return Type Description
Response Array One row per collection item, or one row for a single-object response. Paged reads continue automatically.

Create

Creates Google Ads resources, such as campaigns, ad groups and labels, through every resource mutate service that supports create.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Service selected from a template.
Items Array One resource per item, for example the fields of a Label.
Options Object customerId, validateOnly and responseContentType.
Return Type Description
Response Array One row per input item, with the mutate result, such as the new resourceName, and a Flowgear object.

The Flowgear object contains:

  • IsSuccess: whether Google applied the item.
  • Message: Created, or Validated when validateOnly is true, or the reason the item failed.
  • Request: the original input item.

Update

Updates Google Ads resources through every resource mutate service that supports update.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Service selected from a template.
Items Array One resource per item, with its resourceName and an updateMask such as name,status.
Options Object customerId, validateOnly and responseContentType.
Return Type Description
Response Array One row per input item, with the mutate result and a Flowgear object (IsSuccess, Message and Request). A successful item has the message Updated, or Validated when validateOnly is true.

updateMask is required on each item. The Node never derives it, because the mask decides which fields Google changes or clears. An item without an updateMask returns a failed row and is not sent.

Delete

Removes Google Ads resources by resource name through every resource mutate service that supports remove.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Service selected from a template.
Items Array One resourceName per item, for example customers/1234567890/labels/123.
Options Object customerId, validateOnly and responseContentType.
Return Type Description
Response Array One row per input item, with a Flowgear object (IsSuccess, Message and Request). A successful item has the message Removed, or Validated when validateOnly is true.

Delete templates leave resourceName empty, so a template can't remove anything as selected. An item without a resourceName returns a failed row and is not sent.

Action

Runs a Google Ads provider action, such as keyword planning, conversion uploads, recommendations, experiments, batch jobs and the mixed googleAds:mutate.

Parameter Type Description
Connection Connection Google Ads Connection.
OperationId String Action selected from a template.
Options Object Route and query values using Google's field names.
Items Array One request body per item. Not used by actions without a request body.
Return Type Description
Response Array One row per input item with the action response and a Flowgear object (IsSuccess, Message and Request). An action without a request body runs once and returns one row without Flowgear.Request.

Actions such as uploadClickConversions require partialFailure: true in the item, so Google accepts the request even when some operations are rejected. Those rows report IsSuccess as false with the rejected operations' errors, and keep the results of the accepted operations.

Usage Notes

  • Create, Update and Delete send items in batches of up to 1,000 operations. Where the service supports partial failure, each item succeeds or fails on its own. Where it doesn't, one bad item rejects the whole batch: that item is marked Rejected: with Google's errors, and the other items in the batch are marked Not applied:.
  • If Google rejects the first batch or item as a whole, the Node fails and nothing more is sent. This happens for authentication, permission and quota errors, for example. On a later batch or item, a rejection marks only that batch or item as failed, and the Node continues with the rest.
  • An expired access token is refreshed and the request is retried, up to two times. If Google reports the grant as revoked (invalid_grant), the Node asks you to reconnect the Connection. Permission errors such as USER_PERMISSION_DENIED and CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION are not refreshed and include a hint about what to check.
  • Rate limits with a short retry delay (60 seconds or less) are retried automatically. Daily quota exhaustion fails immediately.
  • String and integer lists are CSV text in both directions. Values that contain commas, quotes or line breaks are quoted with doubled quotes, and empty text is an empty list. Free-form provider fields are JSON text.
  • When a request or response has a single object field, the template exposes that object's fields directly. For example, productLinks:create items are the productLink fields.
  • Set validateOnly to true to have Google check items without changing anything.
  • Template keys include the API version. When the Node moves to a newer Google Ads API version, reselect the templates in your Workflows.

Known Issues

  • The Node has been validated against a Google Ads test account only, not a production account.
  • googleAds:searchStream, media uploads and the long-running operation list, wait, cancel and delete calls are not available. Use googleAds:search in the Query Method instead of searchStream.
  • The googleAds:search template describes the full GoogleAdsRow, so it is large and can take a moment to load in the Workflow designer.

See also