Kratly
Platform changes 2026

Customer Match and the Data Manager API: what to do now

Customer Match Data Manager API guide: what changed on April 1, 2026, who qualifies, SHA-256 hashing, EU consent, upload options and a checklist for B2B teams.

Priyansh KumarUpdated November 1, 202610 min read
A customer list moving from a spreadsheet into Google's Data Manager and on to Google Ads audiences

Short answer

For Customer Match, the Data Manager API is now Google's route for uploads by code. Since April 1, 2026, Google Ads API Customer Match uploads fail for projects with no recent Customer Match activity. Hash emails and phones with SHA-256, pass EU consent, upload 100 or more rows, and start with exclusions.

Google's developer docs put it plainly: "Starting April 1, 2026, OfflineUserDataJobService and UserDataService requests for Customer Match will fail." That applies to projects with no Customer Match activity from October 1, 2025 to March 31, 2026 (Google Ads API docs). Google's fix: "Use the Data Manager API instead."

Here's Customer Match and the Data Manager API as of November 2026, for a small B2B team.

What changed in the Customer Match Data Manager API move?#

Failed calls return CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE. Google Ads Help calls Data Manager "the recommended path forward" (Google Ads Help).

What's different in the new API, per Google's upgrade guide (Data Manager API):

Google Ads API (old path)Data Manager API (new path)
WorkflowCreate a job, add members, run it, poll itOne ingestion request
Developer tokenRequiredNot required
Several audiences in one requestNo, one job per audienceYes
ErrorsPartial failureFast fail
Confidential matching and encryptionNot supportedSupported
QuotasPer developer tokenPer Google Cloud project

What is Customer Match, and who can use it?#

Customer Match is a Google Ads feature. It "lets you use your online and offline data to reach and re-engage with your customers" (Google Ads Help). You upload emails, phone numbers or addresses. Google matches them to signed-in users on Search, Shopping, YouTube, Gmail and Display.

The Customer Match policy sets two levels, as of November 2026:

Your accountWhat you can do
Good policy and payment historyUse lists in "Observation" and for "Exclusions"
Also 90 days of history and more than USD $50,000 lifetime spendAdd "Targeting" and manual bid adjustments

Under $50,000 lifetime spend, you can't target a list. You can still exclude it or observe it.

The policy also limits the data. Upload only data "you collected in the first-party context," such as your site, app or store. Your privacy policy must disclose sharing customer data with third parties. No data on users under 13. A bought lead list fails the first rule.

How to hash and format the list#

Get the format wrong and the upload still succeeds, but rows "can't be matched with a customer" (Google Ads API docs). Google's normalization rules:

  1. Trim leading and trailing spaces.
  2. Lowercase the text.
  3. Phones in E.164, such as +14155550100.
  4. Gmail addresses: remove dots and anything after a plus sign in the part before the @.
  5. Hash email, phone, first name and last name with SHA-256.
  6. Don't hash country, zip, IP addresses or timestamps.

In the Data Manager API you also set an encoding field, hex or Base64 (Data Manager API).

Manual uploads are easier. Upload a plain-text CSV and "Google Ads will hash it for you" with SHA-256 (Google Ads Help). Headers must use Google's exact names: Email, Phone, First Name, Last Name, Country, Zip.

A table of raw customer emails and phones next to the same rows trimmed, lowercased and SHA-256 hashed
Normalize first, then hash. A stray capital letter gives a different hash and a lost match.

Google's EU user consent policy covers users in the EEA, the UK and Switzerland. You need valid consent before using their data for ad personalization, and records of it (Google).

For Customer Match, two consent signals matter: ad_user_data and ad_personalization. Since March 2024, both must be granted for a list to be used in the EEA (Google Ads Help). A missing signal counts as not consented, and that data "will not be processed."

In a manual upload, tick the compliance box and upload only consented data. In the Data Manager API, set adUserData, adPersonalization and termsOfService in the request (Data Manager API). Partners must pass the signals for you. IP matching isn't supported for the EEA, UK or Switzerland. This isn't legal advice.

Which Google Customer Match upload method fits you?#

As of November 2026, Google Ads Help names four routes.

RouteBest forWatch out for
Google Ads UI (Tools › Audience manager › Customer list)A one-off list; small teamsManual; easy to let it go stale
Data Manager (no-code connections)A list that should refresh from your CRM, store or warehouseCheck your source is on the supported list
Data Manager APIEngineers building the Google Ads audience upload API flowYour code owns hashing, consent and errors
Customer Match upload partnerTeams whose CRM or CDP already offers itConfirm the partner moved off the old API

Data Manager's supported sources table includes HubSpot, Shopify, Klaviyo, Google Sheets and BigQuery for Customer Match. My take: start with one file in the UI. Move to a connection once the list earns its keep. Write API code only if no connector fits.

How big should a list be?#

Google gives three numbers:

  • 100 rows is the floor for each uploaded file. Google Ads Help also recommends lists of "at least 100 users to prevent ads from not serving" (Google Ads Help).
  • 5,000 members is what the API docs suggest "to increase the chance of having enough matched, active users for targeting" (Google Ads API docs).
  • 540 days is the longest membership. Lists with too few members added or updated inside that window can stop being eligible (Google Ads Help).

Serving also needs enough active users; Google doesn't publish that floor.

Match rate is the share of your uploaded list that Google can connect to its users (Google Ads Help). Google gives no target range. It says unmatched rows are common, and that match rate "isn't an indicator of list performance." Processing "may take up to 48 hours."

To lift it, Google suggests more match keys, such as email plus phone. B2B lists often hold work emails only, so expect lower rates.

Customer Match for B2B: ABM and exclusions#

Exclude current customers first#

Every eligible account can run this play, even below the $50,000 line. Upload paying customers and exclude them from prospecting. Stop paying for clicks from people who already pay you.

Pull the list from Stripe or your billing tool, not your CRM. Refresh it weekly. Our guide to tracking Stripe conversions in Google Ads shows how to link those payments back to campaigns.

Account-based lists#

Upload contacts at target accounts and use the list in Observation. You'll see whether they search your terms and what they cost. With targeting access, raise bids on them. Pick the accounts with ABM for startups: one account play your team can run in a week. If only a handful match, ads to that list may not serve.

Pair audiences with revenue#

An audience tells Google who to show ads to. Conversion uploads tell it what they paid. Our guide to offline conversion import in Google Ads with real Stripe revenue covers the second half. To judge leads on pipeline, see B2B lead generation strategy: measure pipeline, not form fills.

Flow: paying customers from Stripe uploaded as a customer list and added as an exclusion on a prospecting campaign
Excluding paying customers is the first Customer Match play, and it's open to every eligible account.

What breaks for scripts and tools on the Google Ads API#

If you or a vendor built an uploader, check these:

  1. Silent failures. A nightly sync that fails quietly leaves your exclusion list stale. New customers keep seeing prospecting ads.
  2. Dormant code. A script untouched since last year is the riskiest.
  3. Partial-failure logic. The new API fails fast, so one bad row can stop the request. Validate first with validateOnly, which checks "for fast-fail errors without ingesting any data" (Data Manager API).
  4. Batch size. Google's sample code sets 10,000 members per request (Data Manager API). Split larger lists.
  5. Credentials. The new API needs no developer token; it uses Google Cloud project quotas. Google marks the legacy token "deprecated September 9, 2026" (Google Ads API docs). See Google Ads API without a developer token.

Where Kratly fits#

Kratly's ad audiences, built from a lead list or an account play and synced to the ad platforms, are built but switched off. Google uploads will move to the Data Manager API before we turn them on. Live today: Kratly reads your Google Ads data next to Stripe or Shopify revenue and website tracking, and shows revenue by campaign, page and email, so you can see which campaigns bring paying customers.

Questions, answered

Do I have to use the Data Manager API for Customer Match?

Only if you upload by code. As of November 2026, Google Ads API Customer Match calls fail for projects with no activity from October 2025 to March 2026. Google says to use the Data Manager API instead. If you upload a CSV in the Google Ads interface, or use a Data Manager connection or a partner, you don't write API code.

Can a small account use Customer Match?

Yes, with limits. Any account with good policy and payment history can use lists in Observation and for Exclusions. Targeting and manual bid adjustments need 90 days of Google Ads history and more than USD $50,000 lifetime spend, per Google's Customer Match policy. For a small B2B team, excluding paying customers is the most useful starting point.

Does Google hash the data for me?

In the Google Ads interface, yes. If you upload plain text, Google hashes emails, phones and names with SHA-256 on your computer before upload. In the Data Manager API, you hash first and set the encoding to hex or Base64. Normalize before hashing: trim spaces, lowercase and format phones in E.164.

What is a good Customer Match match rate?

Google doesn't publish a target. It says unmatched rows are common, and that match rate isn't a sign of how the list will perform. Use it to catch formatting errors. A sudden drop usually means a hashing or column problem. To raise it, add more match keys, such as phone numbers alongside emails.

Written by

Priyansh Kumar

Priyansh Kumar has spent more than a decade in growth, scaling brands from 1 to 10 and from 10 to 100. He now builds Kratly, an autonomous growth team that ties every campaign, page and email to the revenue it brings.

Kratly on LinkedIn

Sources

Was this article useful?

Next step

See which campaigns bring paying customers.

Start a free trial of Kratly and connect Stripe or Shopify with your Google Ads data. Then judge every audience on revenue.