{
  "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.0.2@sha256:9fdb1888c4264cf6fee473649ecb593f56f58e5d0096a87ee0b231777e2e3e73"
  },
  "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": "4.2.3-preview.589b60c",
  "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": "Developer blog",
      "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": "66df144be0a0f0ee306a5c486ecd64786817788b",
      "commit_timestamp": "2026-04-15T11:19:11+00:00"
    },
    "sbomUrl": "https://connectors.airbyte.com/files/sbom/airbyte/source-google-ads/4.2.3-preview.589b60c.spdx.json",
    "source_file_info": {
      "metadata_bucket_name": "prod-airbyte-cloud-connector-metadata-service",
      "metadata_file_path": "metadata/airbyte/source-google-ads/4.2.3-preview.589b60c/metadata.yaml",
      "metadata_last_modified": "2026-04-21T15:28:09.769168+00:00",
      "registry_entry_generated_at": "2026-04-21T15:28:09.769168+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.13.0.post13.dev23806774478"
  },
  "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"
      }
    },
    "migrationDocumentationUrl": "https://docs.airbyte.com/integrations/sources/google-ads-migrations",
    "rolloutConfiguration": {
      "advanceDelayMinutes": 10,
      "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
}
