Authentication
Connect to Google Ads using OAuth.The signed-in Google account must have access to the Google Ads accounts you want to push audiences into. Cargo requests the
https://www.googleapis.com/auth/adwords scope and only stores an encrypted refresh token — Google handles access-token refresh.Google Ads actions
Create Audience
Create a new CRM-based Customer Match user list on a Google Ads account. Configuration| Field | Description |
|---|---|
| Ad account | Google Ads customer ID (10 digits, no dashes), e.g. 1234567890 |
| Audience name | Display name for the new user list |
| Description | Optional description |
| Membership lifespan (days) | How long a member remains in the list. Max 540 days for CRM-based user lists |
userListId, plus the full resourceName, the name, and the customerId.
Add Contact to Audience
Add a single contact to a Customer Match user list. At least one identifier (email, phone, mobile advertising ID, or full address) is required. Configuration| Field | Description |
|---|---|
| Ad account | Google Ads customer ID |
| Audience | Customer Match user list to add the contact to |
| Lowercased and SHA-256 hashed automatically before being sent to Google | |
| Phone number | E.164 format (e.g. +15551234567); SHA-256 hashed automatically |
| Mobile advertising ID | Optional IDFA or GAID |
| First name, Last name | Lowercased and SHA-256 hashed automatically |
| Country code | ISO 3166-1 alpha-2 (e.g. US) |
| Postal code | Optional, paired with country code |
Cargo lowercases and SHA-256 hashes emails, phone numbers, and names before sending them to Google, as required by the Customer Match API. You only need to provide the raw value — the hashing happens automatically.
OfflineUserDataJob of type CUSTOMER_MATCH_USER_LIST, adds a single create operation with the hashed identifiers, and runs the job. Google processes the upload asynchronously — there is no synchronous “added/not added” response.
Remove Contact from Audience
Remove a contact from a Customer Match user list by email. Configuration| Field | Description |
|---|---|
| Ad account | Google Ads customer ID |
| Audience | Customer Match user list to remove the contact from |
| Lowercased and SHA-256 hashed automatically before being sent to Google |
Create Report
Fetch size and match-rate metrics for a Customer Match user list. Configuration| Field | Description |
|---|---|
| Ad account | Google Ads customer ID |
| Audience | Customer Match user list to report on |
| Field | Description |
|---|---|
userListId | The user list ID |
resourceName | The full resource name (customers/{cid}/userLists/{id}) |
sizeForDisplay | Estimated number of matched members for Display Network targeting |
sizeForSearch | Estimated number of matched members for Search Network targeting |
matchRatePercentage | Google’s estimated match rate, as a percentage |
Google populates match data asynchronously after you push records into a list. New lists typically take 24–48 hours before metrics show meaningful values, and a list needs at least 1,000 members before Google reveals its match rate.
Use cases
Lead retargeting
Lead retargeting
Sync engaged contacts (MQLs, trial signups, demo requests) into a user list and retarget them across Google Search, YouTube, and the Display Network.
Customer remarketing
Customer remarketing
Push your existing customers into a user list to drive expansion campaigns, or build lookalike (Similar) audiences off them.
Suppression lists
Suppression lists
Keep a user list of customers or unsubscribed contacts in sync, then exclude it from campaigns to avoid wasting spend on people you already converted.
Match-rate monitoring
Match-rate monitoring
Use Create Report in a scheduled workflow to track audience match rates over time and alert when they drop.
Best practices
- Provide as many identifiers as possible — Google matches on any of email, phone, mobile ID, or full address. The more identifiers per contact, the higher the match rate.
- Send raw values, not pre-hashed — Cargo normalizes (lowercase, trim, E.164 for phone) and SHA-256 hashes for you. Sending already-hashed data will skip the normalization step and lower your match rate.
- Use full addresses, not partials — When supplying address fields, include first name, last name, country code, and postal code together. Partial addresses are dropped by Google.
- Wait before reading match rates — Schedule Create Report at least 24 hours after pushing records. Lists below 1,000 members will return a placeholder match rate until they cross the threshold.
- Remove with the same identifier you added — Google only removes contacts whose hashed identifier matches. If a contact was added with phone + address, removing by email alone won’t take them out of the list.
Limitations
- Customer Match API migration: Google announced that as of April 1, 2026, the
OfflineUserDataJobServicepath used by this integration is being deprecated in favor of the new Data Manager API. Developer tokens that have been actively used for Customer Match uploads continue to work, but tokens that have been inactive for 180+ days will be blocked. See the Google Ads Developer Blog for details. Long-term, this integration will need to be migrated to the Data Manager API. - Manager (MCC) accounts: this integration sets the
login-customer-idheader to the same value as the customer being pushed to. For accounts under a Manager (MCC) account, you may need to use the direct (non-manager) customer ID rather than the MCC ID. - One contact per action call: each
Add Contact to Audiencecall creates its own offline user data job. For very high-volume syncs (tens of thousands of records per minute), consider batching upstream — Google rate-limits job creation per customer.

