Troubleshoot customer list issues
Stay organized with collections
Save and categorize content based on your preferences.
Use this guide to help you troubleshoot low match rates and common errors that
might come up in your Customer Match integration.
Validate match rate
Ensure that your upload job has completed before attempting to validate your
match rate.
Your match rate might be lower than expected for a number of reasons, including:
The data was not hashed before it was uploaded.
The data was not correctly formatted before it was hashed.
You are comparing against match rates in a different system.
You are trying to add multiple user identifiers to a single UserIdentifier
object. Instead, add multiple UserIdentifier
s to a single UserData
object as shown in this
code example.
It's possible for an advertiser to reach anywhere from 1% to 99% of their list,
based on how active their users are on Google Search, Gmail, or YouTube. For a
more detailed guide on troubleshooting low match rates, visit the Help
Center.
Differences between match rate and list size
Note that list size and match rate reflect different values. Match rate
counts all users with a Google Account even if they are not actually able to be
reached with the Customer Match list. List size counts
active
users that matched a Google Account and are able to be reached by Ads
personalization.
Debug common errors
Error |
USER_PERMISSION_DENIED
|
You might run into permissions errors if you attempt to modify a list that
was created by another account. You can only edit a list that your own account
created.
|
EXTERNAL_UPDATE_ID_ALREADY_EXISTS
|
This error can occur if you attempt to create multiple jobs with the same
external_id .
|
CONFLICTING_OPERATION
|
This error can occur if remove operations are mixed with
create operations in a single job.
|
TOO_MANY_USER_IDENTIFIERS
|
The create operations in a single job contain more than
100,000 user_identifiers in total. Split the request into
multiple requests that don't exceed that limit.
|
CONCURRENT_MODIFICATION
|
This error can occur if you try to operate on the same list at the same
time.
|
RESOURCE_EXHAUSTED
|
This error can occur if you try to send too many requests. You can mitigate
this by batching your operations as per the recommended
usage flow. You can also refer to the best practices guide for API limits and quotas.
|
Additional troubleshooting support
If you're still having issues, reach out to us through the Customer Match
troubleshooter.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-09-03 UTC.
[null,null,["Last updated 2025-09-03 UTC."],[[["\u003cp\u003eThis guide helps you troubleshoot low Customer Match rates and debug common errors during integration.\u003c/p\u003e\n"],["\u003cp\u003eLow match rates can stem from data formatting issues, hashing problems, or comparing against different systems.\u003c/p\u003e\n"],["\u003cp\u003eMatch rate and list size differ: match rate includes all matched Google Accounts, while list size only includes active, reachable users.\u003c/p\u003e\n"],["\u003cp\u003eCommon errors like permission issues, conflicting operations, and exceeding user identifier limits are addressed with solutions.\u003c/p\u003e\n"],["\u003cp\u003eFor persistent issues, consult the Customer Match troubleshooter or Help Center for detailed guidance.\u003c/p\u003e\n"]]],[],null,["# Troubleshoot customer list issues\n\nUse this guide to help you troubleshoot low match rates and common errors that\nmight come up in your Customer Match integration.\n\nValidate match rate\n-------------------\n\nEnsure that your upload job has completed before attempting to validate your\nmatch rate.\n\nYour match rate might be lower than expected for a number of reasons, including:\n\n- The data was not hashed before it was uploaded.\n\n- The data was not correctly formatted before it was hashed.\n\n- You are comparing against match rates in a different system.\n\n- You are trying to add multiple user identifiers to a single `UserIdentifier`\n object. Instead, add multiple `UserIdentifier`s to a single `UserData`\n object as shown in this\n [code example](/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started#code_example).\n\nIt's possible for an advertiser to reach anywhere from 1% to 99% of their list,\nbased on how active their users are on Google Search, Gmail, or YouTube. For a\nmore detailed guide on troubleshooting low match rates, visit the [Help\nCenter](//support.google.com/google-ads/answer/7474166).\n\n### Differences between match rate and list size\n\nNote that list size and match rate reflect different values. Match rate\ncounts all users with a Google Account even if they are not actually able to be\nreached with the Customer Match list. List size counts\n[active](//support.google.com/google-ads/answer/7474166?#zippy=%2Ctroubleshoot-low-traffic)\nusers that matched a Google Account and are able to be reached by Ads\npersonalization.\n\nDebug common errors\n-------------------\n\n| Error ||\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`USER_PERMISSION_DENIED`](/google-ads/api/reference/rpc/v21/AuthorizationErrorEnum.AuthorizationError#user_permission_denied) | You might run into permissions errors if you attempt to modify a list that was created by another account. You can only edit a list that your own account created. |\n| [`EXTERNAL_UPDATE_ID_ALREADY_EXISTS`](/google-ads/api/reference/rpc/v21/OfflineUserDataJobErrorEnum.OfflineUserDataJobError#external_update_id_already_exists) | This error can occur if you attempt to create multiple jobs with the same [`external_id`](/google-ads/api/reference/rpc/v21/OfflineUserDataJob#external_id). |\n| [`CONFLICTING_OPERATION`](/google-ads/api/reference/rpc/v21/OfflineUserDataJobErrorEnum.OfflineUserDataJobError#conflicting_operation) | This error can occur if `remove` operations are mixed with `create` operations in a single job. |\n| [`TOO_MANY_USER_IDENTIFIERS`](/google-ads/api/reference/rpc/v21/OfflineUserDataJobErrorEnum.OfflineUserDataJobError#too_many_user_identifiers) | The `create` operations in a single job contain more than 100,000 `user_identifiers` in total. Split the request into multiple requests that don't exceed that limit. |\n| [`CONCURRENT_MODIFICATION`](/google-ads/api/reference/rpc/v21/DatabaseErrorEnum.DatabaseError#concurrent_modification) | This error can occur if you try to operate on the same list at the same time. |\n| [`RESOURCE_EXHAUSTED`](/google-ads/api/reference/rpc/v21/QuotaErrorEnum.QuotaError#resource_exhausted) | This error can occur if you try to send too many requests. You can mitigate this by batching your operations as per the recommended [usage flow](/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started#usage-flow). You can also refer to the best practices guide for [API limits and quotas](/google-ads/api/docs/best-practices/quotas). |\n\nAdditional troubleshooting support\n----------------------------------\n\nIf you're still having issues, reach out to us through the Customer Match\n[troubleshooter](//support.google.com/google-ads/troubleshooter/10028577)."]]