Google Customer Match: How to Upload Your List (and Make It Worth Uploading)
What Customer Match is, who's eligible, the exact upload steps, what drives match rates - and why the quality of the list matters more than the mechanics.
In short
Google Customer Match matches your own contact list to signed-in Google users so you can target, bid-adjust or exclude them across Search, Shopping, Gmail, YouTube and Display. Every uploaded file must contain at least 100 user records, and ads only serve once the list holds enough active Google users. Google publishes no target match rate — it treats the rate as a signal of your data quality and formatting. The two levers that actually move it are supplying multiple identifiers (email plus phone, name and postcode) and uploading fresh data rather than a stale export.
What is Google Customer Match?
Customer Match is Google Ads' first-party audience feature. You upload your own contact list - emails, phone numbers, names and addresses - Google hashes it, matches it against signed-in Google users, and lets you target, bid-adjust or exclude those people across Search, Shopping, Gmail, YouTube and Display.
It's the Google equivalent of a Meta Custom Audience, with one important difference: it works on Search. That means you can bid differently when an existing customer searches your category terms, suppress converters from brand campaigns, or put a lapsed-buyer segment back in front of people actively searching again.
The requirements, per Google
| Requirement | What Google states |
|---|---|
| Minimum file size | All files submitted must contain a minimum of 100 user records (Google Ads Help) |
| Serving threshold | Ads only serve when the list holds a minimum threshold of active users — people active on Gmail, Search, YouTube or Display at serve time |
| Identifiers accepted | Email, phone, first/last name, country, postcode. Plain text is hashed on upload; SHA-256 pre-hashing also supported (upload guide) |
| Membership duration | 30 to 540 days, set per list |
| Improving match rate | Add as many match keys as possible; scrub data before hashing; upload fresh, active users |
| Account eligibility | Gated on policy compliance and account history (Customer Match policy) |
The 100-record floor is the one people trip over when they slice a list too finely: a "high-value movers in Surrey" segment can be strategically perfect and still be rejected at upload.
Who's eligible
Google gates Customer Match behind account history and policy standing. Newer or low-spend accounts typically get a restricted version - observation-only on some inventory - until they've built spend history. If your account is restricted, the practical path is unglamorous: build clean history on standard campaigns, and full access follows. Check your current status under Tools → Audience manager.
How to create and upload a Customer Match list
- In Google Ads, go to Tools → Audience manager and click the plus button → Customer list.
- Prepare the CSV. Email is the anchor field; add first name, last name, country and postcode columns wherever you have them. Plain text is fine - Google hashes on upload (SHA-256) - but pre-hashing works too if your data team prefers it.
- Upload, name it by segment and date, and set a membership duration (30 days to 540 days). Match the duration to the segment's meaning: "recent buyers" should expire fast; "VIP tier" can run long.
- Apply the audience to campaigns as targeting, observation (bid adjustments only), or exclusion.
- Allow 24-48 hours to populate. Check the match rate before assuming the list failed.
Match rates: the number that decides everything
Google doesn't publish a target match rate — its guidance is to treat the rate as an indicator of data viability and formatting rather than a score. Across the UK consumer lists we see, 30-70% is the realistic band, and the variance is almost entirely explained by input quality:
- Email quality. Work emails, old addresses and role accounts match poorly. Personal Gmail-heavy lists match best - unsurprisingly.
- Field completeness. Name + postcode alongside email materially improves matching. Export more columns, not fewer.
- Freshness. A list decays the moment it's exported. People buy, lapse, move house - and a static CSV doesn't know.
An enriched, cleaned list matches better than a raw platform export, which is one reason the data enrichment layer pays for itself before a single ad runs.
Where Customer Match earns its keep
1. Search bid adjustments on existing customers
Your best buyer searching a category term is worth a higher bid than a stranger. Observation mode lets you pay for that difference without restructuring campaigns.
2. Suppression
Exclude recent converters and active subscribers from acquisition campaigns. Same principle as exclusion on Meta - stop paying acquisition prices to reach people who already bought.
3. Win-back on Search and YouTube
A lapsed-buyer segment matched against active searchers is one of the cheapest "retention" plays available - you're only paying when they raise their hand again.
4. Sharper prospecting signals
Google retired similar audiences in 2023. What replaced them - optimised targeting and Performance Max signals - leans harder on your first-party lists. A small, dense, enriched seed (top-decile buyers with household context) outperforms a giant undifferentiated upload as a signal source.
Does it update automatically?
No - a CSV is a snapshot, and membership duration caps how long anyone stays in it. For segments that move (recent buyers, active subscribers), either re-upload on a schedule or use a live sync from your ESP or data platform. The sync approach is what keeps suppression truthful across every campaign at once.
If you want it automated properly, the Google Ads API handles list membership through offline user data jobs: you add and remove hashed identifiers against a user list rather than replacing the file each time. Most ESPs and customer data platforms wrap that in a connector, so in practice the decision is about cadence, not code. A weekly sync is enough for lifecycle segments; suppression lists are worth running daily, because the cost of a stale one is paid in wasted acquisition spend.
When a list won't serve: a short troubleshooting list
| What you see | Likely cause | Fix |
|---|---|---|
| Upload rejected | Fewer than 100 records, or a column header Google doesn't recognise | Widen the segment and use Google's template headers exactly (Email, Phone, First Name, Last Name, Country, Zip) |
| Stuck on "Populating" past 48 hours | Formatting problem in the hashed fields | Re-upload as plain text and let Google hash it, or confirm your SHA-256 output is lowercase and whitespace-trimmed before hashing |
| Match rate far below 30% | Work emails, role accounts or an ageing export | Export more identifier columns, drop role accounts, and refresh the file rather than reusing last quarter's |
| Audience "too small to serve" | Matched, but not enough active users to clear the serving threshold | Merge related segments, or use the list for observation and exclusion where thresholds are easier to clear |
| Targeting option greyed out | Restricted Customer Match access on the account | Check policy standing under Tools → Audience manager and build standard spend history first |
| Reported size smaller than expected | Google reports rounded, matched, active users - not uploaded rows | Nothing to fix; judge the list on campaign delivery, not the headline number |
One thing worth saying plainly: almost none of these are fixed inside Google Ads. They're fixed in the file you hand it.
Customer Match and the rest of your stack
The audiences worth uploading to Google are the same ones worth pushing to Meta: enriched segments built on household-level context. The practical pattern is one audience layer feeding every platform - the activation guide for Meta, Google and programmatic covers how a single household brief becomes live audiences across all three without rebuilding anything.
A ready-made Customer Match list template
If your customer data lives in a spreadsheet rather than a CRM, a manual CSV upload is the perfect route. Small and medium businesses rarely need the API integration that platforms like Salesforce, HubSpot or Zoho CRM build in, where lists sync straight to Google Ads. What you need instead is a correctly formatted file.
To save you building one from scratch, we've put together a Customer Match list template with the columns Google expects and a few demo rows showing the format:
- Email - the anchor field; Google hashes plain text on upload
- First name and Last name
- Country
- Phone
Make a copy of the template, replace the demo rows with your own export, and you have an upload-ready file. Two things to remember: keep at least 100 records, because Google rejects smaller files, and if you hold postcodes, add a column for them - every extra match key lifts the match rate.
The bottom line
Customer Match is mechanically simple and strategically underused. The upload takes twenty minutes; the performance gap between accounts comes from what's in the file. Complete fields, clean data, enriched segments, honest refresh cadence. Get those right and Customer Match quietly becomes one of the highest-ROI features in the account.
Read next
Give Customer Match complete, enriched inputs
Outra enriches your customer file with household context - complete name and postcode fields that lift match rates - and syncs segments into Google Ads. One audience layer feeds Google, Meta and programmatic.
What Outra knows about every UK household
All attributes and segments are tied to a single identifier: the household, not an email, not a cookie.
- Employment stage
- Move stage
- Age band
- Family stage
- Occupancy status
- Property type
- Bedrooms
- Property size
- Property value band (£)
- Garden
- Garage
- Parking / Driveway
- Area type
- Region
- Purchasing power band
- Household income band
- Credit score band
- UHW (ultra-high wealth)



