Skip to Content
DestinationsAdvertisingGoogle Ads

Google Ads

Upload Customer Match audiences to Google Ads for targeted advertising. Use Zeotap to sync your warehouse segments directly to Google Ads user lists.

Prerequisites

  • A Google Ads account with Customer Match eligibility
  • A Google Ads API developer token (from your Manager account’s API Center)
  • Your Google Ads Customer ID (10-digit number)

Finding Your Customer ID

Your Customer ID is the 10-digit number displayed in the top-right corner of the Google Ads dashboard, formatted as XXX-XXX-XXXX.

  1. Sign in to Google Ads 
  2. Look at the top-right corner — your Customer ID appears next to your account name (e.g., 406-685-0321)
  3. When entering it in Zeotap, remove the dashes (e.g., 4066850321)

Getting a Developer Token

A developer token is required for all Google Ads API access.

  1. Sign in to your Google Ads Manager account (MCC) — developer tokens are issued at the MCC level, not individual ad accounts
  2. Navigate to Tools & Settings (wrench icon) > Setup > API Center
  3. If you don’t have a developer token yet, one will be generated with Test Account access level
  4. Copy the 22-character alphanumeric token

Developer Token Access Levels

LevelWhat It MeansHow to Get It
Test AccountOnly works with accounts you explicitly whitelist in the API CenterDefault when first issued
Basic AccessWorks with any Google Ads account the user authorizesApply in API Center — requires app review
Standard AccessHigher rate limits, same account access as BasicApply after Basic approval

For testing, add your Customer ID as a test account: in the API Center page, find the “Test accounts” section and add the Customer ID you want to sync to.

For production, apply for Basic Access in the API Center. Google reviews your OAuth consent screen, terms of service URL, and privacy policy.

Authentication

Google Ads uses OAuth 2.0.

  1. Click Connect with OAuth in Zeotap
  2. Sign in with the Google account that has access to your Google Ads account
  3. Authorize the requested permissions

The authorizing Google account must have at least Standard access to the target Google Ads account.

Configuration

FieldTypeRequiredDescription
Customer IDTextYesYour Google Ads customer ID (10-digit number, without dashes). Find it in the top-right corner of your Google Ads dashboard.
Login Customer ID (MCC)TextNoManager account ID if managing the customer through an MCC. Leave blank for direct access.
Developer TokenPasswordYesGoogle Ads API developer token from your Manager account’s API Center.

Target Settings

FieldTypeRequiredDescription
Audience NameTextYesName for the Customer Match user list
Audience IDTextNoExisting user list resource name. Leave blank to create a new list.

Per-row user lists

Audience Name can be taken from a column instead of being fixed for the sync, so one sync fans out across several Customer Match user lists.

To set it up, open the sync’s Destination target overrides, switch the field from Fixed value to From column, and pick the column. The switch adds a row to the sync’s field mapping, so you can also see and edit the binding — including adding a transform — in the Map fields editor. The fixed value you leave behind becomes the fallback applied to rows whose column is empty.

Zeotap groups each batch by the resolved name and uploads once per distinct list, reusing an existing list of that name or creating it on first sight. This works identically whether the destination uploads natively or through the Data Manager API.

Limiting how many user lists a run can create

Because a new Audience Name creates a user list, binding a high-cardinality column by mistake — a user id, say — would create one per profile. Max distinct values per run (default 500) caps this: if a run needs to create more than the limit allows, it fails with an error naming the field and the offending value, and nothing further is created. Set it to 0 for no limit.

Mirror mode cannot express a move. A profile that moves from one user list to another appears in the diff as a changed row carrying only its current value, so it is added to the new one but never removed from the old. Prefer Add and Remove sync modes when Audience Name comes from a column.

Supported Operations

Sync Modes: Upsert, Mirror

Audience Sync Modes: Add, Remove, Mirror, Upsert

Features

  • Field Mapping: Yes
  • Schema Introspection: No

Required Mapping Fields

FieldDescription
emailPrimary match key for Customer Match. Alternatives: hashed_email (pre-hashed values), phone, or hashed_phone — any one of the four satisfies the requirement.

Default Destination Fields

FieldTypeDescription
emailstringEmail address (raw — auto normalized and SHA-256 hashed)
hashed_emailstringEmail — pre-hashed SHA-256 hex of lowercase trimmed email
phonestringPhone number (raw — auto normalized and SHA-256 hashed)
hashed_phonestringPhone — pre-hashed SHA-256 hex of E.164 number
first_namestringFirst name (raw — auto lowercased and SHA-256 hashed). Data Manager uploads only.
hashed_first_namestringFirst name — pre-hashed SHA-256 hex of lowercase trimmed name. Data Manager uploads only.
last_namestringLast name (raw — auto lowercased and SHA-256 hashed). Data Manager uploads only.
hashed_last_namestringLast name — pre-hashed SHA-256 hex of lowercase trimmed name. Data Manager uploads only.
country_codestringCountry code (plain text, e.g. US). Data Manager uploads only.
postal_codestringPostal/ZIP code (plain text). Data Manager uploads only.
mobile_idstringMobile advertising ID (IDFA or GAID). Data Manager uploads only.

The fields marked Data Manager uploads only are honored when the destination’s Upload via Data Manager toggle is enabled; the native Customer Match path uploads email and phone digests only.

When both a raw field and its pre-hashed counterpart are mapped (e.g. email and hashed_email), the pre-hashed value wins. Values that are not valid 64-character SHA-256 hex digests are never uploaded — they are dropped (falling back to the raw column if mapped) and counted in the sync run logs. See Match Keys & Identifier Hashing for the full normalization contract, precedence, and validation rules.

Troubleshooting

Permission denied (403)

Developer token in test mode: Your developer token only works with whitelisted accounts. Go to Tools & Settings > API Center and add the target Customer ID under “Test accounts”. For production, apply for Basic Access.

User doesn’t have account access: The Google account that authorized OAuth must have at least Standard access to the target Google Ads account. Check under Tools & Settings > Access and security.

Customer Match not available

Customer Match requires your account to meet Google’s eligibility requirements including a good compliance history and sufficient spend.

Low match rate

Ensure email addresses are valid and phone numbers include country codes (E.164). Zeotap normalizes and hashes raw identifiers automatically, so casing and whitespace are not a concern for raw fields. If you map pre-hashed hashed_* columns, verify they follow the normalization contract in Match Keys & Identifier Hashing — a digest of a wrongly normalized value uploads cleanly but matches nothing.

Last updated on