Why Is My Customer Match List Size So Small? 9 Causes and Fixes
Your Customer Match list size counts matched, active Google users, not the rows in your file. Here are the 9 reasons it comes out small, how to spot each one, and how to fix it before your next upload.
The short answer
You uploaded 4,000 customers. Google Ads shows a Customer Match list size of a few hundred. What happened?
Three things shrink every list. Google only counts people it can match to a Google account. It only counts people who were active recently. And some of your rows never had a chance to match, because of formatting, hashing or old data.
You can’t change the first two. The third is the part you control. The nine causes below are in the order worth checking them.
How Google counts list size
Customer Match lets you upload your own customer list (emails, phone numbers, names and addresses) so you can show ads to, or exclude, those people on Search, the Shopping tab, YouTube, Gmail and Display. Google compares each row with its signed-in users. The rows that match become the audience.
The number you see is not a row count. Google’s help page says that after matching, the size column shows a “bucketed number” of matched records (Google Ads Help). Bucketed means rounded into a range, so the size moves in steps.
To serve ads on Search, YouTube or Display, a list needs at least 100 active users in the last 30 days. A list nobody has refreshed since early 2024 has no eligible members left at all, because memberships expire after 540 days (cause 8). Upload it again.
9 causes and fixes
1. You checked too early
Google says a new list can take up to 48 hours to process. Until then the size can look empty or tiny.
There is a second trap. If you upload or edit the list more often than Google can process it, the list stays “In progress” all the time. Google’s own example: processing takes 6 hours, but a new upload arrives every 4 hours, so it never finishes (Google Ads Help).
Fix: upload once and wait two full days before you judge the size. If a CRM sync updates the list, space the syncs out so each one finishes before the next starts.
2. The list is too small to begin with
Every file needs at least 100 user records (Google Ads Help). Passing that rule is not the same as serving ads. A file of 300 customers is accepted, but after matching and the 30-day activity filter it may fall below the 100 active users it needs.
Google’s developer guide suggests uploading at least 5,000 members to improve the chance of having enough matched, active users (Customer Match guide).
Fix: combine sources that belong together, such as buyers, email subscribers and qualified leads. Include every identifier you have for each person (email, phone and address), not just one.
3. The headers, separators or encoding are wrong
Google reads only its exact English headers: Email, Phone, First Name, Last Name, Country and Zip (formatting rules). A header like E-mail Address, Mobile or Correo is not mapped. Each row must also have as many values as there are headers, so leave a missing value empty between two commas (Google Ads Help).
Records must be split by commas and line breaks, never by spaces or semicolons (Google Ads Help). Spreadsheet programs set to many European languages save “CSV” files with semicolons, so check yours. Save the file as a UTF-8 CSV, a standard text format; Google doesn’t accept UTF-16, the format Excel calls “Unicode Text” (formatting rules). Hidden characters pasted in from other systems can break rows too.
Fix: build the upload file with the Customer Match list formatter. It maps your columns to Google’s headers, writes commas and saves UTF-8.
4. The emails can’t match
Most customer lists are mostly emails, so email quality decides most of the size. Google needs a full address with a domain, such as gmail.com, with no spaces. Emails with accented characters won’t match (Google Ads Help). If you hash the file yourself, also remove the dots before the @ in gmail.com and googlemail.com addresses, as Google asks (formatting rules).
Typos from checkout forms, like gmial.com or yahoo.con, never match anyone. Duplicates don’t hurt matching, but they make the file look bigger than the number of real people in it.
B2B lists have one more problem. People often use a personal address for their Google account, so shared inboxes like info@ or sales@ are less likely to match. Where you have a phone number or a second email for the same person, include it.
Fix: run the file through the customer list checker before you upload. It counts invalid emails, domain typos, role addresses, test rows and duplicates, and fixes the obvious typos.
5. Phone numbers have no country code
Google matches phones in E.164 format: a plus sign, the country code, then the number. (415) 555-0132 can’t be tied to a country. +14155550132 can. In an unhashed file the plus sign is optional, but the country code is not (formatting rules).
Spreadsheets cause their own damage. Excel drops the leading plus, removes leading zeros and can turn long numbers into values like 1.41556E+10.
Fix: keep the phone column formatted as text, add the country code from each row’s country, and don’t open the finished CSV in Excel before you upload it.
6. The data was hashed the wrong way
Hashing turns an email or phone into a fixed code (SHA-256) so the raw value never leaves your company. You don’t have to do it yourself. If you upload plain text, Google Ads hashes Email, Phone, First Name and Last Name on your computer before anything is sent (formatting rules).
If your company must hash first, the order matters. Clean the value first (trim spaces, lowercase, remove Gmail dots, put phones in E.164), then hash. [email protected] and [email protected] give completely different hashes. Never hash Country or Zip.
The worst part: Google still accepts a badly hashed file. The upload looks fine, but the rows can’t match (Google Ads Help).
Fix: let Google hash a plain-text file, or use the formatter’s hashed mode, which cleans each value into Google’s standard format before it hashes it. If another system made the hashes, test a few with the SHA-256 hash checker.
7. Names and addresses are incomplete
Names alone never match. Address matching needs all four headers: First Name, Last Name, Country and Zip (formatting rules). Leave out prefixes like Mr. or Dr. and suffixes like Jr. Fill in Country even when every customer lives in the same country.
Watch ZIP codes, too. Spreadsheets drop the first zero from US codes like 02139, which becomes 2139 and no longer matches.
Fix: add Country and Zip, or leave the name columns out. Names without an address only add noise.
8. The memberships have expired
People stay on a Customer Match list for 540 days at most. Since April 7, 2025, lists no longer support an unlimited duration (Customer Match guide). A list stays eligible only if at least 100 members were added or updated in the last 540 days (Google Ads Help).
So a list you uploaded long ago and never touched shrinks on its own, even if nothing else is wrong.
Fix: refresh the list. Open the list’s menu and choose Add more customers or Replace all data with a fresh export.
9. The account can’t use the list yet
This one doesn’t shrink the list, but it can make a healthy list look useless. Google’s Customer Match policy requires a good history of policy compliance and a good payment history. Accounts that don’t meet both can’t use Customer Match at all.
There is a second level. Using a list in the Targeting setting, or with manual bid adjustments, needs 90 days of Google Ads history and more than USD 50,000 total lifetime spend. Other eligible accounts can still use lists with the Observation setting and as exclusions. The policy also allows only customer data you collected yourself (first-party data), so bought lists are out.
Fix: check the account’s policy and billing history. If you don’t meet the spend level, use the list for exclusions and observation for now.
Checklist before your next upload
Run through this list every time you export a fresh file.
- Count the real people. Remove test rows and duplicates, then check you still have well over 100 records.
- Check emails. Look for typos, accents, missing domains and shared inboxes. The customer list health checker shows each problem with row numbers.
- Fix phones. Every number should start with a plus sign and a country code.
- Complete addresses. Use names only together with Country and Zip.
- Use Google’s headers and UTF-8. Let the formatter write the file so the headers and separators are right.
- Decide on hashing. Plain text is simplest. If you hash, normalize first and never hash Country or Zip.
- Upload once, then wait. Give it up to 48 hours before you judge the size.
- Put a refresh date in your calendar. A list nobody updates slowly expires.
If you would rather not upload files by hand, Google Ads Data Manager can connect a Google Sheet or other data source and keep the data flowing. Its data preparation rules follow the same ideas. If a developer sends your lists through the Google Ads API, note that since April 1, 2026 Customer Match requests fail for developer tokens that hadn’t sent them before; Google says to use the Data Manager API instead.
List looks fine, but ads don't serve
Sometimes the list size is healthy and the campaign still gets almost no traffic. Google’s troubleshooting page names three reasons.
- Too few active people right now. Ads only reach people on the list who are active on Search, Gmail, YouTube or Display at that moment, so a list that only just passes 100 users serves rarely.
- Targeting is too narrow. A list combined with a small location, a short schedule or tight demographics leaves very few people. Remove the extra layers first, then add them back one at a time.
- Bids or budget are low. Your list competes with other advertisers’ remarketing for the same people. A small budget spread over a small audience can mean very few impressions.
Also check the setting. If your account can only use Observation, the list doesn’t limit who sees your ads. It only reports on them. Compare results for people on the list with everyone else before you decide the list “doesn’t work.”
The fastest win is still the data itself. Clean the file once with the customer list health checker, build it with the Customer Match list format tool, and you remove every cause of the gap that you control.
Frequently asked questions
Why is my Customer Match list size so small?
Google only counts people it could match to a Google account who were also active recently, and it shows that count rounded into a range. On top of that, rows with bad headers, typos, phones without a country code or wrong hashing never match. The first part is normal; the second part you can fix.
What is the minimum Customer Match list size?
Each file needs at least 100 user records. To serve ads on Search, YouTube or Display, the list needs at least 100 active users in the last 30 days. Google’s developer guide suggests uploading at least 5,000 members to have a good chance of reaching that.
How long does a Customer Match list take to populate?
Google says processing can take up to 48 hours. Wait that long before you judge the size, and don’t upload again in the meantime, or the list can stay stuck on “In progress”.
Why does my Customer Match list show a size of 0?
Usually one of four things: it is still processing, too few matched people were active in the last 30 days, the memberships have expired after 540 days, or the file was hashed the wrong way. A wrongly hashed file is accepted but can’t be matched, so the upload looks fine while the size stays at zero.
Does my account need to meet Customer Match eligibility rules?
Yes. Google’s Customer Match policy requires a good history of policy compliance and a good payment history. Using a list in the Targeting setting or with manual bid adjustments also needs 90 days of account history and more than USD 50,000 total lifetime spend. Other accounts can use lists for Observation and exclusions.
How do I upload a Customer Match list in Google Ads?
Click the Tools icon, open Audience manager, go to Your data segments, click the plus button and choose Customer list. Upload a CSV with Google’s exact headers, accept the Customer Match policy, set the membership duration (540 days at most) and create the list. The official steps are here.