Search all guides

Reference · Tools

Google Ads integration

Retrieve Google Ads campaign data, including specific campaigns by ID or all campaigns for an account, with filtering by status and date range.

Action Analytics v1

The Google Ads node reads campaign data from your Google Ads account — fetch a single campaign by ID or pull every campaign in an account, filtered by status or date range. Use it to build automated reports that pipe spend and performance data into a spreadsheet or dashboard whenever a workflow runs. Metrics come back in micros, so a cost of 5000000 means $5.00.

Works as
Action
Tool name
google_ads
Operations
2 — Campaign: Get , Campaign: Get Many
Parameters
13
Outputs
Output, Error
Credentials
Google Ads OAuth2 API
Official docs
Google Ads docs developers.google.com

What you can build with Google Ads

  • Get all campaigns for a Google Ads account.
  • Retrieve a specific campaign by ID.
  • Filter campaigns by status (ENABLED, PAUSED, REMOVED).
  • Get campaign metrics for a date range like LAST_30_DAYS.
  • List campaigns managed under an MCC account.

Overview

Google Ads tool provides read access to Google Ads campaign data. Campaign operations: get a single campaign by ID, get all campaigns for an account. Queries use GAQL (Google Ads Query Language) via the POST /googleAds:search endpoint. Metrics are returned in micros (divide by 1,000,000 for human-readable values). Supports filtering by campaign status and date range segments.

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Google Ads OAuth2 API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Campaigncampaign

Operations

OperationValueDescription
Campaign: GetgetGet a specific campaign by its ID.
Campaign: Get ManygetAllGet many campaigns linked to the specified account.

Parameters

Campaign: Get

ParameterTypeRequiredDefaultDescription
Manager Customer IDstringNo—The MCC (Manager) account customer ID. Sent as the login-customer-id header. Dashes are stripped automatically. Leave empty if not using an MCC account.
Client Customer IDstringYes—The client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890).
Campaign IDstringYes—The ID of the campaign to retrieve.

Campaign: Get Many

ParameterTypeRequiredDefaultDescription
Manager Customer IDstringNo—The MCC (Manager) account customer ID. Sent as the login-customer-id header. Dashes are stripped automatically. Leave empty if not using an MCC account.
Client Customer IDstringYes—The client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890).
Return AllbooleanNofalseWhether to return all results or limit to a maximum number.
LimitnumberNo10Maximum number of campaigns to return. (shown when Return All is false)
Additional OptionscollectionNo{}Additional options for fetching campaigns.
— Date RangeoptionsNoallTimeFilters campaign statistics by period using GAQL segments.date.
Options: allTime, TODAY, YESTERDAY, LAST_7_DAYS, LAST_BUSINESS_WEEK, THIS_MONTH, LAST_MONTH, LAST_14_DAYS, LAST_30_DAYS
— Show Campaigns by StatusoptionsNoallFilters campaigns by status using GAQL campaign.status.
Options: all, ENABLED, PAUSED, REMOVED

All Operations

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNooAuth2Authentication method to use.
Options: oAuth2 (OAuth2 (recommended)), serviceAccount
Google AccountcredentialNo—Connect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYes—The email address of the Google service account. (shown when Authentication is serviceAccount)
Private KeystringYes—The private key from the service account JSON key file. (shown when Authentication is serviceAccount)
Max ConcurrencynumberNo5Maximum number of items to process concurrently.

Output Data

This node fans out: one output item per campaign record returned, not one per input item. An input item that matches ten campaigns produces ten output items; one that matches none produces a single pass-through item carrying the input JSON unchanged. Binary data is not forwarded.

Each campaign record is merged onto the input item JSON, so upstream fields stay addressable alongside the campaign fields. The campaign, budget and metrics objects are flattened into one level, so the GAQL field campaign.id arrives as id and metrics.cost_micros as costMicros.

Every campaign query selects the same fields:

GroupGAQL fields selected
Campaigncampaign.id, campaign.name, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, campaign.advertising_channel_sub_type
Budgetcampaign_budget.amount_micros, campaign_budget.period
Metricsmetrics.impressions, metrics.interactions, metrics.interaction_rate, metrics.average_cost, metrics.cost_micros, metrics.conversions, metrics.cost_per_conversion, metrics.conversions_from_interactions_rate, metrics.video_views, metrics.average_cpm, metrics.ctr

Money fields are returned in micros — divide by 1,000,000 for a currency value. Reference a field downstream by expression, for example {{ $json.name }} or {{ $json.costMicros }}.

Example Configuration

Get one campaign by ID from a client account:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "get",
    "clientCustomerId": "1234567890",
    "campaignId": "987654321"
  }
}

List every enabled campaign from the last 30 days, through an MCC account:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "getAll",
    "managerCustomerId": "1111111111",
    "clientCustomerId": "1234567890",
    "returnAll": true,
    "additionalFields": {
      "dateRange": "LAST_30_DAYS",
      "campaignStatus": "ENABLED"
    }
  }
}

Take the account ID from the item and cap the result set:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "getAll",
    "clientCustomerId": "{{ $json.customerId }}",
    "returnAll": false,
    "limit": 25,
    "maxConcurrency": 3
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool gets and lists campaigns from Google Ads accounts. It is ideal when you need to retrieve specific campaign details by ID or get all campaigns associated with an account. It produces campaign data, including metrics in micros, which can be filtered by status and date range.

Behavior notes

  • Dashes in customer IDs are stripped for you. 123-456-7890 and 1234567890 are both accepted in Manager Customer ID and Client Customer ID.
  • Manager Customer ID is only for MCC setups. Leave it empty when the credential authenticates directly against the client account; fill it in when one manager account fronts many client accounts.
  • This node reads; it does not write. Both operations run a GAQL SELECT — nothing here creates, pauses or edits a campaign.
  • Prefer a limit over Return All on large accounts. Return All pages through every matching campaign, which is slow and easy to rate-limit; a limit keeps the run predictable.
  • Filters shrink the query, not the response. Date Range and Show Campaigns by Status are pushed into the GAQL WHERE clause, so filtering there is cheaper than filtering downstream.

Frequently asked questions

Does this node let me create, pause or edit campaigns?

No. Both operations — get a single campaign and list all campaigns — run a GAQL SELECT query, which is read-only. Nothing in this node creates, pauses, edits or deletes any campaign. If you need to write to Google Ads, you would need a different integration.

When do I need to fill in the Manager Customer ID?

Only fill in the Manager Customer ID if you are using an MCC (manager account) that fronts multiple client accounts. If your OAuth2 credential authenticates directly against the client account you want to query, leave it empty. Using it unnecessarily will cause the request to fail.

My customer ID has dashes in it — will that break anything?

No. The node strips dashes automatically, so both 123-456-7890 and 1234567890 are accepted in either the Manager Customer ID or Client Customer ID fields. You can paste the ID straight from the Google Ads UI without reformatting it.

Should I use 'Return All' or set a limit when querying a large account?

Set a limit. Return All pages through every matching campaign in sequence, which is slow on large accounts and easy to push into Google Ads API rate limits. A specific limit keeps run times predictable and reduces the chance of a failed workflow mid-page.

How do the date range and status filters work — are they applied after the data is fetched?

No, they are pushed directly into the GAQL WHERE clause before the query runs. That means only matching campaigns are returned from the API, rather than fetching everything and filtering afterward. Filtering at query time is faster and consumes less of your API quota.

Build with Google Ads

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Ads OAuth2 API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.