{
  "ab_internal": {
    "isEnterprise": false,
    "ql": 400,
    "requireVersionIncrementsInPullRequests": true,
    "sl": 300
  },
  "allowedHosts": {
    "hosts": [
      "accounts.google.com",
      "googleads.googleapis.com"
    ]
  },
  "connectorBuildOptions": {
    "baseImage": "docker.io/airbyte/python-connector-base:4.1.1@sha256:a268b44c733ae699a60f5fbc06a324945dba98945c6e2ab7f8609f2f895b0d28"
  },
  "connectorTestSuitesOptions": [
    {
      "suite": "unitTests"
    },
    {
      "suite": "integrationTests",
      "testSecrets": [
        {
          "fileName": "config_click_view.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_CLICK_VIEW__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "incremental_config.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_INCREMENTAL__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_manager_account.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_MANAGER_ACCOUNT_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    },
    {
      "suite": "acceptanceTests",
      "testSecrets": [
        {
          "fileName": "config_click_view.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_CLICK_VIEW__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "incremental_config.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_INCREMENTAL__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config_manager_account.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS_MANAGER_ACCOUNT_CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        },
        {
          "fileName": "config.json",
          "name": "SECRET_SOURCE-GOOGLE-ADS__CREDS",
          "secretStore": {
            "alias": "airbyte-connector-testing-secret-store",
            "type": "GSM"
          }
        }
      ]
    }
  ],
  "custom": false,
  "dockerImageTag": "6.1.7-preview.7503342",
  "dockerRepository": "airbyte/source-google-ads",
  "documentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads",
  "externalDocumentationUrls": [
    {
      "title": "Release notes",
      "type": "api_release_history",
      "url": "https://developers.google.com/google-ads/api/docs/release-notes"
    },
    {
      "title": "Deprecation and sunset dates",
      "type": "api_deprecations",
      "url": "https://developers.google.com/google-ads/api/docs/sunset-dates"
    },
    {
      "title": "Feature deprecations and unversioned changes",
      "type": "api_deprecations",
      "url": "https://developers.google.com/google-ads/api/docs/deprecations"
    },
    {
      "title": "Developer token sunset and API access management guide",
      "type": "authentication_guide",
      "url": "https://developers.google.com/google-ads/api/docs/api-policy/developer-token"
    },
    {
      "title": "Google Ads API Terms and Conditions and Developer Policies",
      "type": "other",
      "url": "https://support.google.com/adspolicy/answer/6169371?hl=en"
    },
    {
      "title": "Developer blog",
      "type": "api_release_history",
      "url": "https://ads-developers.googleblog.com/"
    }
  ],
  "generated": {
    "git": {
      "commit_author": "Devin AI",
      "commit_author_email": "158243242+devin-ai-integration[bot]@users.noreply.github.com",
      "commit_sha": "7503342c267774c46bffbc0226883e8cdad0cbe9",
      "commit_timestamp": "2026-10-23T01:09:27+00:00"
    },
    "release": {
      "attributed_to": "devin-ai-integration",
      "attributed_to_kind": "bot",
      "merge_commit_sha": null,
      "merged_at": null,
      "pr_author_association": "CONTRIBUTOR",
      "pr_author_id": 158243242,
      "pr_author_login": "devin-ai-integration",
      "pr_author_type": "Bot",
      "pr_merged_by_login": null,
      "pr_merged_by_type": "Unknown",
      "pr_number": 89699,
      "pr_url": "https://github.com/airbytehq/airbyte/pull/89699",
      "released_at": "2026-10-23T15:41:53.781965Z",
      "source": "prerelease"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-google-ads/6.1.7-preview.7503342.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-google-ads/6.1.7-preview.7503342/metadata.yaml",
      "metadata_last_modified": "2026-10-23T15:42:38.648973+00:00",
      "registry_entry_generated_at": "2026-10-23T15:42:38.648973+00:00"
    }
  },
  "githubIssueLabel": "source-google-ads",
  "icon": "google-adwords.svg",
  "iconUrl": "https://connectors.airbyte.com/files/metadata/airbyte/source-google-ads/latest/icon.svg",
  "language": "python",
  "license": "Elv2",
  "maxSecondsBetweenMessages": 14400,
  "name": "Google Ads",
  "packageInfo": {
    "cdk_version": "python:7.39.0.post5.dev39879313492"
  },
  "public": true,
  "releaseStage": "generally_available",
  "releases": {
    "breakingChanges": {
      "1.0.0": {
        "message": "This release introduces fixes to custom query schema creation. Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#1.0.0",
        "upgradeDeadline": "2023-10-31"
      },
      "2.0.0": {
        "message": "This release updates the Source Google Ads connector so that its default streams and stream names match the related resources in Google Ads API. Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#2.0.0",
        "upgradeDeadline": "2023-11-30"
      },
      "3.0.0": {
        "message": "Google is deprecating v13 of the Google Ads API in January. This release upgrades the Google Ads API to the latest version (v15), which causes changes in several schemas. Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#3.0.0",
        "upgradeDeadline": "2024-01-12"
      },
      "4.0.0": {
        "message": "Google is deprecating v18 of the Google Ads API August 20. This release upgrades the Google Ads API to the latest version (v20), which causes changes in several schemas. Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#4.0.0",
        "upgradeDeadline": "2025-08-19"
      },
      "5.0.0": {
        "message": "This release upgrades the Google Ads API from v20 to v23. Several built-in stream schemas have renamed fields (e.g., video metrics renamed to TrueView equivalents, `campaign.start_date` / `end_date` renamed to `start_date_time` / `end_date_time`) and removed fields (`CallAd` / `CallAdInfo` on `ad_group_ad`). It also removes the nullable `bidding_strategy.id` field from the primary keys of the `campaign_bidding_strategy` and `ad_group_bidding_strategy` streams. Users should refresh the source schema and reset affected streams after upgrading to ensure uninterrupted syncs. See the migration guide for full details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#5.0.0",
        "scopedImpact": [
          {
            "impactedScopes": [
              "campaign",
              "campaign_budget",
              "account_performance_report",
              "ad_group_ad",
              "ad_group_ad_legacy",
              "display_keyword_view",
              "geographic_view_with_metrics",
              "topic_view",
              "user_location_view",
              "ad_group_bidding_strategy",
              "campaign_bidding_strategy"
            ],
            "scopeType": "stream"
          }
        ],
        "upgradeDeadline": "2026-05-30"
      },
      "6.0.0": {
        "message": "This release limits incremental report streams and custom queries that use `segments.date` to the 37-month granular data retention window enforced by the Google Ads API. The affected built-in streams are `account_performance_report`, `ad_group`, `ad_group_ad`, `ad_group_ad_legacy`, `ad_group_bidding_strategy`, `campaign`, `campaign_bidding_strategy`, `campaign_budget`, `click_view`, `customer`, `display_keyword_view`, `geographic_view`, `geographic_view_with_metrics`, `keyword_view`, `shopping_performance_view`, `topic_view`, and `user_location_view`; custom queries using `segments.date` are also affected. Data older than 37 months will be skipped. If you use the Full Refresh | Overwrite sync mode, store historical data older than 37 months before upgrading or that data will be permanently lost. If you use the Incremental | Append or Incremental | Append and Deduped sync modes, historical destination data older than 37 months is preserved, but the connector will not be able to sync it again. See the migration guide for full details.",
        "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations#6.0.0",
        "upgradeDeadline": "2026-05-31"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "autopilotConfig": {
        "autoPromoteStages": true,
        "autoStart": true,
        "strategy": "slow"
      },
      "defaultRolloutMode": "autopilot",
      "enableProgressiveRollout": false,
      "initialPercentage": 0,
      "maxPercentage": 50
    }
  },
  "remoteRegistries": {
    "pypi": {
      "enabled": true,
      "packageName": "airbyte-source-google-ads"
    }
  },
  "sourceDefinitionId": "253487c0-2246-43ba-a21f-5116b20a2c50",
  "sourceType": "api",
  "spec": {
    "advanced_auth": {
      "auth_flow_type": "oauth2.0",
      "oauth_config_specification": {
        "complete_oauth_output_specification": {
          "properties": {
            "access_token": {
              "path_in_connector_config": [
                "credentials",
                "access_token"
              ],
              "type": "string"
            },
            "refresh_token": {
              "path_in_connector_config": [
                "credentials",
                "refresh_token"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_input_specification": {
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_secret": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "complete_oauth_server_output_specification": {
          "properties": {
            "client_id": {
              "path_in_connector_config": [
                "credentials",
                "client_id"
              ],
              "type": "string"
            },
            "client_secret": {
              "path_in_connector_config": [
                "credentials",
                "client_secret"
              ],
              "type": "string"
            },
            "developer_token": {
              "path_in_connector_config": [
                "credentials",
                "developer_token"
              ],
              "type": "string"
            }
          },
          "type": "object"
        }
      }
    },
    "connectionSpecification": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": true,
      "properties": {
        "conversion_window_days": {
          "default": 14,
          "description": "A conversion window is the number of days after an ad interaction (such as an ad click or video view) during which a conversion, such as a purchase, is recorded in Google Ads. For more information, see <a href=\"https://support.google.com/google-ads/answer/3123169?hl=en\">Google's documentation</a>.",
          "examples": [
            14
          ],
          "maximum": 1095,
          "minimum": 0,
          "order": 6,
          "title": "Conversion Window",
          "type": "integer"
        },
        "credentials": {
          "description": "",
          "order": 0,
          "properties": {
            "access_token": {
              "airbyte_secret": true,
              "description": "The Access Token for making authenticated requests. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
              "order": 4,
              "title": "Access Token",
              "type": "string"
            },
            "client_id": {
              "description": "The Client ID of your Google Ads developer application. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
              "order": 1,
              "title": "Client ID",
              "type": "string"
            },
            "client_secret": {
              "airbyte_secret": true,
              "description": "The Client Secret of your Google Ads developer application. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
              "order": 2,
              "title": "Client Secret",
              "type": "string"
            },
            "developer_token": {
              "airbyte_secret": true,
              "description": "The Developer Token granted by Google to use their APIs. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
              "order": 0,
              "title": "Developer Token",
              "type": "string"
            },
            "refresh_token": {
              "airbyte_secret": true,
              "description": "The token used to obtain a new Access Token. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
              "order": 3,
              "title": "Refresh Token",
              "type": "string"
            }
          },
          "required": [
            "developer_token",
            "client_id",
            "client_secret",
            "refresh_token"
          ],
          "title": "Google Credentials",
          "type": "object"
        },
        "custom_queries_array": {
          "description": "",
          "items": {
            "properties": {
              "query": {
                "description": "A custom defined GAQL query for building the report. Avoid including the segments.date field; wherever possible, Airbyte will automatically include it for incremental syncs. For more information, refer to <a href=\"https://developers.google.com/google-ads/api/fields/v11/overview_query_builder\">Google's documentation</a>.",
                "examples": [
                  "SELECT segments.ad_destination_type, campaign.advertising_channel_sub_type FROM campaign WHERE campaign.status = 'PAUSED'"
                ],
                "multiline": true,
                "title": "Custom Query",
                "type": "string"
              },
              "table_name": {
                "description": "The table name in your destination database for the chosen query.",
                "title": "Destination Table Name",
                "type": "string"
              }
            },
            "required": [
              "query",
              "table_name"
            ],
            "type": "object"
          },
          "order": 5,
          "title": "Custom GAQL Queries",
          "type": "array"
        },
        "customer_id": {
          "description": "Comma-separated list of (client) customer IDs. Each customer ID must be specified as a 10-digit number without dashes. For detailed instructions on finding this value, refer to our <a href=\"https://docs.airbyte.com/integrations/sources/google-ads#setup-guide\">documentation</a>.",
          "examples": [
            "6783948572,5839201945"
          ],
          "order": 1,
          "pattern": "^[0-9]{10}(,[0-9]{10})*$",
          "pattern_descriptor": "The customer ID must be 10 digits. Separate multiple customer IDs using commas.",
          "title": "Customer ID(s)",
          "type": "string"
        },
        "customer_status_filter": {
          "default": [],
          "description": "A list of customer statuses to filter on. For detailed info about what each status mean refer to Google Ads <a href=\"https://developers.google.com/google-ads/api/reference/rpc/v15/CustomerStatusEnum.CustomerStatus\">documentation</a>.",
          "items": {
            "description": "An enumeration.",
            "enum": [
              "UNKNOWN",
              "ENABLED",
              "CANCELED",
              "SUSPENDED",
              "CLOSED"
            ],
            "title": "CustomerStatus"
          },
          "order": 2,
          "title": "Customer Statuses Filter",
          "type": "array"
        },
        "end_date": {
          "description": "UTC date in the format YYYY-MM-DD. Any data after this date will not be replicated. (Default value of today is used if not set)",
          "examples": [
            "2017-01-30"
          ],
          "format": "date",
          "order": 4,
          "pattern": "^$|^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "pattern_descriptor": "YYYY-MM-DD",
          "title": "End Date",
          "type": "string"
        },
        "num_workers": {
          "default": 3,
          "description": "The number of concurrent threads to use for syncing. Increasing this value may speed up syncs for accounts with many customers or streams. Adjust based on your API usage and rate limits.",
          "examples": [
            2,
            3,
            5
          ],
          "maximum": 25,
          "minimum": 2,
          "order": 7,
          "title": "Number of Concurrent Threads",
          "type": "integer"
        },
        "start_date": {
          "description": "UTC date in the format YYYY-MM-DD. Any data before this date will not be replicated. (Default value of two years ago is used if not set)",
          "examples": [
            "2017-01-25"
          ],
          "format": "date",
          "order": 3,
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
          "pattern_descriptor": "YYYY-MM-DD",
          "title": "Start Date",
          "type": "string"
        }
      },
      "required": [
        "credentials"
      ],
      "title": "Google Ads Spec",
      "type": "object"
    },
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads",
    "supportsDBT": false,
    "supportsNormalization": false
  },
  "suggestedStreams": {
    "streams": [
      "campaigns",
      "accounts",
      "ad_group_ads",
      "ad_group_ad_report",
      "ad_groups",
      "click_view",
      "account_performance_report",
      "keyword_report",
      "campaign_labels",
      "ad_group_labels",
      "ad_group_ad_labels",
      "user_location_report",
      "geographic_view_with_metrics",
      "display_keyword_performance_report",
      "shopping_performance_report",
      "display_topics_performance_report"
    ]
  },
  "supportLevel": "certified",
  "supportsDataActivation": false,
  "supportsFileTransfer": false,
  "tags": [
    "language:python",
    "cdk:low-code"
  ],
  "tombstone": false
}
