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

# Google Ads Source

The Google Ads Source Connector ingests advertising data from the Google Ads API into Popsink pipelines. It retrieves campaign and performance data on a configurable schedule, enabling marketing analytics, spend monitoring, and cross-channel attribution with fresh advertising data.

## Key Features

* **Campaign data by default:** retrieves campaign attributes out of the box; queries can be customized using GAQL (Google Ads Query Language).
* **OAuth2 authentication:** secure access through your own Google Cloud OAuth application.
* **Scheduled ingestion:** flexible scheduling by minutes, hours, or days, with an immediate first run on creation.

## Prerequisites

* A Google Ads account and its **customer ID**.
* A Google Ads API **developer token** (requested from a Google Ads manager account under **Tools & settings → API Center**).
* A Google Cloud project with the Google Ads API enabled and an **OAuth2 client** (client ID and client secret).
* An OAuth2 **refresh token** authorized for the Google Ads account (obtained through the OAuth consent flow with the `https://www.googleapis.com/auth/adwords` scope).

## Configuration

| Field               | Required | Description                                     |
| ------------------- | -------- | ----------------------------------------------- |
| **Customer ID**     | Yes      | Google Ads customer ID (e.g. `123-456-7890`)    |
| **Developer Token** | Yes      | Google Ads API developer token                  |
| **Client ID**       | Yes      | OAuth2 client ID from your Google Cloud project |
| **Client Secret**   | Yes      | OAuth2 client secret                            |
| **Refresh Token**   | Yes      | OAuth2 refresh token authorized for the account |
| **Schedule**        | Yes      | Sync frequency — see [Scheduling](#scheduling)  |

## Scheduling

API source connectors run on a schedule rather than streaming continuously. A first run is always triggered immediately after the connector is created; subsequent runs depend on the selected mode:

| Mode        | Behavior                                                      | Example                                      |
| ----------- | ------------------------------------------------------------- | -------------------------------------------- |
| **days**    | Runs every N days at 00:00 UTC + offset (in minutes)          | Offset 30 → every day at 00:30 UTC           |
| **hours**   | Runs every N hours at :00 + offset (in minutes)               | Offset 15 → 00:15, 01:15, 02:15, …           |
| **minutes** | Runs every N minutes, anchored on the connector creation time | Created 10:03, interval 10 → 10:13, 10:23, … |
