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` objects to a single `UserData` object as shown in this [code example](https://developers.google.com/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started#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](https://support.google.com/google-ads/answer/7474166).

### Differences between match rate and list size

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](https://support.google.com/google-ads/answer/7474166#zippy=%2Ctroubleshoot-low-traffic) users that matched a
Google Account and are able to be reached by Ads personalization.

## Debug common errors

| Error ||
|---|---|
| [`USER_PERMISSION_DENIED`](https://developers.google.com/google-ads/api/reference/rpc/v26/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. |
| [`EXTERNAL_UPDATE_ID_ALREADY_EXISTS`](https://developers.google.com/google-ads/api/reference/rpc/v26/OfflineUserDataJobErrorEnum.OfflineUserDataJobError#external_update_id_already_exists) | This error can occur if you attempt to create multiple jobs with the same [`external_id`](https://developers.google.com/google-ads/api/reference/rpc/v26/OfflineUserDataJob#external_id). |
| [`CONFLICTING_OPERATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/OfflineUserDataJobErrorEnum.OfflineUserDataJobError#conflicting_operation) | This error can occur if `remove` operations are mixed with `create` operations in a single job. |
| [`TOO_MANY_USER_IDENTIFIERS`](https://developers.google.com/google-ads/api/reference/rpc/v26/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. |
| [`CONCURRENT_MODIFICATION`](https://developers.google.com/google-ads/api/reference/rpc/v26/DatabaseErrorEnum.DatabaseError#concurrent_modification) | This error can occur if you try to operate on the same list at the same time. |
| [`RESOURCE_EXHAUSTED`](https://developers.google.com/google-ads/api/reference/rpc/v26/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](https://developers.google.com/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](https://developers.google.com/google-ads/api/docs/best-practices/quotas). |
| [`CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE`](https://developers.google.com/google-ads/api/reference/rpc/v26/NotAllowlistedErrorEnum.NotAllowlistedError#customer_not_allowlisted_for_this_feature) | This error occurs if your Google Cloud project (or legacy developer token, deprecated September 9, 2026) had no Customer Match requests between October 1, 2025 and March 31, 2026. You must use the [Data Manager API](https://developers.google.com/data-manager/api/devguides/audiences/google-ads/customer-match) for Customer Match workflows instead. |

## Additional troubleshooting support

If you're still having issues, reach out to us through the Customer Match
[troubleshooter](https://support.google.com/google-ads/troubleshooter/10028577).