> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lightdash.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Ads

> Query cost, clicks and conversions for a Google Ads account live from Explore and AI agents

The Google Ads [live data source](https://docs.lightdash.com/integrations/live-data-sources) reads one Google Ads account, by day and by campaign or ad group. Each query is one report request, and Lightdash shows the results as they come back from Google. It's a [level 3](https://docs.lightdash.com/integrations/live-data-sources#integration-levels) integration: its API returns reports.

## Before you start

* **Live data sources enabled** for your organization. See [Live data sources](https://docs.lightdash.com/integrations/live-data-sources).
* **Admin role** in the Lightdash project.
* **A Google account that can read the Google Ads account.** Read-only access is enough.

## Connect Google Ads

1. On the nav bar, click **Browse** → **Semantic Layer**.
2. In the sidebar, select **Live data sources**, then click **Add**.
3. Select **Google Ads**.
4. Enter a **Name**, such as `Google Ads`.
5. Click **Continue to Google**.
6. Sign in with your Google account and allow access.
7. Back in Lightdash, pick the account the source reads.

The list shows client accounts, including those under a manager account. Google only reports metrics for client accounts, so you can't pick a manager account itself.

Lightdash adds an **Ad performance** table to Explore. Queries run with the Google account that signed in. To change it, choose **Sign in again** from the source's menu.

Google's consent screen asks for access to manage your Google Ads account, because Google has only one permission for its Ads API. Lightdash limits the source to the read-only report endpoint of the account you picked.

## Dimensions

| Dimension | Notes |
| - | - |
| Date, Date week, Date month, Date quarter, Date year | In the account's time zone. Weeks start on Monday |
| Day of week, Device, Network | |
| Account ID, Account name, Account currency | |
| Campaign ID, Campaign name, Campaign status, Campaign type, Campaign bidding strategy type | A removed campaign can share its name with a live one. Add **Campaign ID** to tell them apart |
| Ad group ID, Ad group name, Ad group status, Ad group type | An ad group name is unique only within its campaign |

Ads, keywords, search terms and conversion actions aren't available.

## Metrics

| Metric | Notes |
| - | - |
| Cost, Average CPC, Average CPM | In the account's currency |
| Clicks, Impressions, Click-through rate | |
| Interactions, Interaction rate, Engagements | |
| Conversions, Conversion value, Conversion rate, Cost per conversion, Value per conversion | Counted by the account's bidding goals. Attribution can make them fractional |
| All conversions, All conversions value, View-through conversions | Include conversions not used for bidding |
| Search impression share, Search top impression share, Search absolute top impression share, Search lost impression share (budget), Search lost impression share (rank) | |

## Combination rules

Google Ads returns one row per campaign or ad group and doesn't group across them, so a query has to identify the rows it returns:

* Any campaign dimension needs **Campaign name** or **Campaign ID** in the query.
* Any ad group dimension needs **Ad group ID**, or **Ad group name** with **Campaign name** or **Campaign ID**.
* To filter by **Day of week**, **Device** or **Network**, also add that dimension to the query.
* To filter by a campaign or ad group, include a dimension at that level or a finer one. For example, add **Campaign name** before you filter by it.

Lightdash checks these rules before calling Google and tells you which dimension to add. Google also rejects some combinations of metrics and dimensions. When it does, Lightdash shows Google's error.

## Supported features

| Feature | Available |
| - | - |
| Filters on text dimensions: is, is not, includes, doesn't include, starts with, ends with | Yes |
| Filters on IDs, statuses and types: is, is not | Yes |
| Filters on metrics: greater than, less than, between | Yes |
| OR filters and nested filter groups | No |
| Table calculations, custom metrics and custom dimensions | No |
| Period-over-period comparisons, pivots and date zoom | No |

## Limits

| Limit | Value |
| - | - |
| Default date range | Last 30 days ending yesterday, when the query has no filter on Date |
| Most rows per query | 9,999 |
| Timeout | 60 seconds |
| Queries at once | 5 per source |
| Calls per minute | 60 per source |
| Calls per hour | 1,000 per source |

When a query has more than 9,999 rows, Lightdash shows an error rather than a partial result. Narrow the date range, add a filter or remove a dimension.

Google Ads also applies its own daily quota to the Google Cloud project behind the sign-in, shared by every source that uses it.

## Example questions

* *"Cost and conversions by campaign over the last 30 days."*
* *"Top 10 ad groups by clicks last month, with their campaign."*
* *"Weekly cost per conversion by device since the start of the quarter."*

## Troubleshooting

**Numbers don't match the Google Ads interface.** Check the date range first. Relative dates such as *last 7 days* use the project's time zone to decide what today is, so they can be a day off from the account's. Google can also keep updating conversions for several days.

**Your query needs a dimension you didn't pick.** See [Combination rules](#combination-rules). The error names the dimension to add.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.