LoadersGoogle Ads

Google Ads Loader

The Google Ads loader pulls campaign, ad group, keyword, and performance data from your Google Ads accounts into your data warehouse. It uses the Google Ads API and supports incremental sync for reporting data based on date segments.

Prerequisites

  • A Google Ads account (or access to a Google Ads Manager account)
  • A Google account with read access to the target Google Ads accounts
  • A connected Warehouse (target warehouse) with write permissions on the target schema

Authentication

The Google Ads loader uses OAuth 2.0 for authentication.

OAuth 2.0 Setup

  1. In SignalSmith, click Add Loader and select Google Ads
  2. Click Connect with Google
  3. You’ll be redirected to Google’s sign-in page
  4. Sign in with the Google account that has access to your Google Ads accounts
  5. Grant SignalSmith permission to access your Google Ads data (read-only)
  6. You’ll be redirected back to SignalSmith with the connection established

SignalSmith requests the following OAuth scope:

ScopePurpose
https://www.googleapis.com/auth/adwordsRead-only access to Google Ads data via the API

After authentication, SignalSmith discovers the Google Ads accounts accessible to the authenticated user. Select the account(s) you want to sync. If you use a Manager (MCC) account, you can select one or more child accounts.

Account Selection

FieldDescriptionExample
Customer IDThe Google Ads account ID (10-digit number)123-456-7890
Login Customer IDManager account ID (required if accessing via MCC)987-654-3210

Available Objects

ObjectAPI NameDescriptionDefault Sync Mode
CampaignscampaignsCampaign settings, status, budget, and targetingIncremental
Ad Groupsad_groupsAd groups within campaigns with bid settingsIncremental
AdsadsIndividual ad creatives with headlines, descriptions, and URLsIncremental
KeywordskeywordsSearch keywords with match type, bids, and quality scoreIncremental
Campaign Performancecampaign_performanceDaily campaign metrics (impressions, clicks, cost, conversions)Incremental
Ad Group Performancead_group_performanceDaily ad group metricsIncremental
Ad Performancead_performanceDaily ad-level metricsIncremental
Keyword Performancekeyword_performanceDaily keyword metrics including quality score and search impression shareIncremental
Search Termssearch_termsActual search queries that triggered your ads (Search Terms Report)Incremental
Audience Segmentsaudience_segmentsAudience segment definitions (remarketing lists, custom audiences)Full Refresh
ConversionsconversionsConversion action definitions and settingsFull Refresh
Geo Performancegeo_performancePerformance metrics segmented by geographic locationIncremental
Device Performancedevice_performancePerformance metrics segmented by device typeIncremental

Performance Reports

Performance objects contain daily aggregated metrics. Each row represents one day of data for the parent entity (campaign, ad group, ad, or keyword). The date field serves as part of the composite primary key.

Key metrics available in performance reports:

MetricDescription
impressionsNumber of times ads were shown
clicksNumber of ad clicks
cost_microsTotal spend in micros (divide by 1,000,000 for currency units)
conversionsNumber of conversions
conversions_valueTotal value of conversions
ctrClick-through rate (clicks / impressions)
average_cpcAverage cost per click in micros
average_cpmAverage cost per thousand impressions in micros
search_impression_shareShare of eligible impressions received (keywords only)

Configuration

SettingDescriptionDefault
Customer IDGoogle Ads account ID to sync— (required)
Login Customer IDManager account ID (if using MCC)— (optional)
ObjectsList of objects and reports to sync— (you choose during setup)
Sync ModeFull Refresh or Incremental (per object)Incremental
Date RangeLookback period for performance reportsLast 30 days
Primary KeyField(s) that uniquely identify a recordid (entities), id + date (reports)
Target SchemaWarehouse schema for Google Ads tables— (required)
Table PrefixOptional prefix for table namesgads_
ScheduleSync frequencyDaily

Scheduling Notes

  • Conversion window: Google Ads attributes conversions to the click date, not the conversion date. Conversions can be attributed up to 90 days after the click. SignalSmith applies a configurable lookback window (default: 30 days) to re-fetch recent days and capture late-attributed conversions.
  • Data freshness: Google Ads reporting data is typically available 3-4 hours after the end of each day (in the account’s timezone). Schedule daily syncs to run in the morning to capture the previous day’s data.
  • Rate limits: The Google Ads API enforces per-developer token rate limits. SignalSmith handles rate limiting with automatic backoff.
  • Cost in micros: All monetary values in the Google Ads API are returned in micros (1/1,000,000 of the account currency). For example, a cost of $1.50 is returned as 1500000. Your models should divide by 1,000,000 to get currency values.
  • Manager accounts: If syncing multiple child accounts via MCC, each account is extracted independently. Tables include a customer_id column to distinguish between accounts.

Schema Mapping

Google Ads field types are mapped to warehouse-compatible types:

Google Ads TypeWarehouse TypeNotes
STRINGVARCHAR
INT64BIGINTIncludes cost in micros
DOUBLEDOUBLERates and percentages
BOOLEANBOOLEAN
DATEDATEReport date segments
ENUMVARCHARStatus values like ENABLED, PAUSED, REMOVED
MESSAGEJSON / VARCHARNested structures

Troubleshooting

IssueSolution
”PERMISSION_DENIED”The authenticated Google account doesn’t have access to the specified Google Ads account. Verify account access in Google Ads
”CUSTOMER_NOT_FOUND”The Customer ID is incorrect. Verify the 10-digit account number (without dashes)
“OAUTH_TOKEN_REVOKED”Re-authenticate by clicking “Reconnect” on the loader detail page
Missing conversion dataConversions are attributed to click dates and may take up to 90 days to appear. Increase the lookback window
Cost values look too largeGoogle Ads returns costs in micros. Divide by 1,000,000 in your models
No data for recent datesReporting data may not be available for 3-4 hours after the end of each day
”RESOURCE_EXHAUSTED”API rate limit exceeded. SignalSmith retries automatically. If persistent, reduce the number of reports synced

Next Steps