Lens

Google Ads Source

Pull Google Ads campaign performance and account configuration into a Lens table. Pick a report stream and Lens derives the fields for you, or write your own GAQL.

Overview

A Google Ads table brings spend, clicks, impressions, conversions, and account configuration into Lens alongside your analytics data. You authenticate with a Google OAuth connection, choose an account, and pick a report stream. Lens handles the GAQL behind the scenes for built-in streams, so you don't need to know the query language to get a campaign performance table running.

Streams come in two shapes. Performance streams are date-segmented time series that support incremental sync. Config and Audit streams describe the current account state (conversion actions, account settings, campaign budgets) and always run a full refresh, because there's no time dimension to append.

Connect and choose an account

Open Lens > Tables, click + New Table, and choose Google Ads. Name the table, then select a Google Connection. If you don't have one, create it from Manage Connections first. Once the connection loads, the Account panel appears and you pick a Customer Account.

If you reach client accounts through a Manager account, enter the Login Customer ID (MCC) in the format 123-456-7890. Leave it blank for direct accounts. The MCC field only matters when the authorized login account is different from the account whose data you're reading.

Pick a report stream

Under Report Stream, choose from the date-segmented performance streams (Campaign Performance, Ad Group Performance, Ad Copy and Landing Pages, Keyword Performance, Search Terms Report, Geographic Performance, Device Performance) or the config and audit streams (Conversion Actions, Account Settings, Campaign Budgets). The Fields panel then shows the dimensions and metrics Lens auto-derives for that stream. Metrics ending in _micros are converted to dollars automatically, so cost columns read in real currency.

For full control, choose Custom GAQL under Advanced and write the query yourself. Use {'{start_date}'} and {'{end_date}'} as date range placeholders, and omit them for config or non-date queries.

Set sync mode and backfill

Under Sync Settings, choose Full Refresh or Incremental and set Backfill Days (default 30) for how much history a full sync pulls. Config streams always use Full Refresh, since they represent current account state rather than time-series data, and the UI enforces that for those streams.

Pick a sync schedule, then click Save and Sync. The first sync honors the backfill window; performance streams then sync incrementally on the schedule you set.

Tip

Combine a Google Ads cost table with a GA4 conversions table using a Join on date plus campaign to build true ROAS and cost-per-conversion views inside Lens.

Heads up

The Google Ads API renames fields between versions. If a Custom GAQL query fails with an unrecognized-field error, test fields one at a time to find the renamed one rather than assuming the whole query is wrong.

Troubleshooting

The account dropdown is empty

The selected connection can't list accessible customers. Confirm the Google OAuth connection is valid and the authorized user has access. If you're reaching client accounts through a manager account, the Login Customer ID (MCC) may be required.

A config stream won't let me pick Incremental

That's expected. Conversion Actions, Account Settings, and Campaign Budgets represent current account state, so they always run Full Refresh. Only date-segmented performance streams support incremental sync.

Custom GAQL returns an unrecognized-field error

A field in the query was renamed in the current API version. Test fields individually to find the offender, then update the query. Resource date fields in particular have changed names across recent API versions.