Troubleshooting

  • This guide provides detailed steps to troubleshoot issues when managing conversions through complex integrations involving multiple tools and processes.

  • A successful API import response does not guarantee conversion attribution; refer to the Help Center for data discrepancies after successful uploads.

  • Google Ads UI conversion metrics are not organized by import date, making offline diagnostics a better starting point for verifying import health.

  • Common errors for enhanced conversions for leads include NO_CONVERSION_ACTION_FOUND, INVALID_CONVERSION_ACTION_TYPE, CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS, DUPLICATE_ORDER_ID, and CLICK_NOT_FOUND.

  • Common errors for enhanced conversions for web include CONVERSION_NOT_FOUND, CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS, CONVERSION_ALREADY_ENHANCED, and CONVERSION_ACTION_NOT_ELIGIBLE_FOR_ENHANCEMENT.

Managing conversions requires a complex integration, often involving multiple interdependent tools and processes. This guide offers detailed steps you can take to troubleshoot any issues you're having, whether you're getting errors from the API that you don't understand, or if you're confused about the metrics or diagnostics you see in the UI.

Reading metrics in the Google Ads UI

The Google Ads UI doesn't organize conversion metrics by import date, so using campaign reports in the UI to verify import results can be misleading. To verify API request-level import health, start with offline data diagnostics. Offline data diagnostics don't evaluate asynchronous tag matching or user identifier quality for enhanced conversions. To verify matching health, check the Google Ads UI diagnostics reports for enhanced conversions for leads and enhanced conversions for web. For troubleshooting steps, see UI diagnostics alerts after a successful API upload.

Problems with Enhanced Conversions for Leads

This section focuses on addressing common issues encountered while importing enhanced conversions for leads.

Common errors

The following guidance helps you diagnose and fix common errors with enhanced conversions for leads.

Error
NO_CONVERSION_ACTION_FOUND

The specified conversion action is either not enabled or cannot be accessed by the account in the customer_id field of the request. Confirm that the conversion action in your upload is enabled and that its owner is either the click's Google Ads conversion customer or an account in the uploading account's conversion tracking hierarchy.

This error may also occur if the GCLID in the request belongs to a client account that does not have access to the conversion action specified in the request. You can verify whether a GCLID belongs to a client account using the click_view resource, by submitting a query that filters by click_view.gclid and segments.date, where the date is the date the click occurred.

INVALID_CONVERSION_ACTION_TYPE The specified conversion action has a type that is not valid for enhanced conversions for leads. Make sure the ConversionAction specified in your upload request has type UPLOAD_CLICKS.
CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS Make sure you've enabled enhanced conversions for leads in your conversion settings. Find instructions for this in the prerequisites guide.
DUPLICATE_ORDER_ID Imported events include multiple conversions with the same Order ID and were not processed. Make sure Order IDs are unique and try again.
CLICK_NOT_FOUND No click was found that matched the provided user identifiers.

If a conversion encounters this warning, the Google Ads API includes it in the successful_event_count of your offline data diagnostics. The Google Ads API includes an entry for CLICK_NOT_FOUND in the alerts collection so you can monitor the frequency of this warning.

This error is expected if the click is not from a Google Ads campaign. For example it may come from SA360 or DV360. Other possible causes are as follows:

In rare instances where the uploading customer is different from the Google Ads conversion customer, this error can mean that the uploading customer has accepted the customer data terms, but the serving customer has not.

You can determine if an account has accepted the customer data terms by querying the customer resource and checking the customer.conversion_tracking_setting.accepted_customer_data_terms field.

Discrepancies in metrics

Keep in mind the following common issues:

  • Conversions may be dropped by our processing pipeline for various reasons, and such conversions are unrecoverable. See Data discrepancies after a successful upload for more information.

  • Double-check that the Google tag is set up correctly on your webpage, and firing on lead form submissions. If your tag is not firing on form submissions, or if it is sending incorrect data, then you will likely see low, or no, attribution in uploaded conversions. Review our Help Center articles on configuring Google Tag and configuring Google Tag Manager for enhanced conversions for leads.

  • If you're using enhanced conversions for leads without the Google tag on your webpage, then you must include the GCLID in your conversion imports by setting the ClickConversion.gclid field on each conversion.

  • Check that you're properly specifying consent in your uploads. You can do this by either setting the default consent settings for your account (in the Google Ads UI, click Tools > Data Manager > Consent settings) or by setting the ClickConversion.consent field on each uploaded conversion.

Problems with campaign performance

If you don't have any technical issues uploading your conversions and you are comfortable with the metrics that are presented, but don't see the expected campaign performance improvements, or "lift", after implementing enhanced conversions for leads, reach out to Google Ads Product Support for help.

Problems with Enhanced Conversions for Web

This section focuses on addressing common issues encountered while importing enhanced conversions for web.

Common errors

The following guidance helps you diagnose and fix common errors with enhanced conversions for web.

Error
CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS The customer data terms and conditions have not been accepted for the customer_id of the request. Find instructions for this in the prerequisites guide.
CONVERSION_ALREADY_ENHANCED This conversion has already received an ENHANCEMENT adjustment with the given order_id and conversion_action fields. Make sure to provide a unique order_id value for each conversion.
CONVERSION_ACTION_NOT_ELIGIBLE_FOR_ENHANCEMENT The conversion_action supplied is not eligible for enhanced conversions for web. In the Google Ads UI, make sure you check the Turn on enhanced conversions box on the conversion action referenced in your request. Find instructions for this in the Help Center.
INVALID_USER_IDENTIFIER A hashed user identifier field (hashed_email, hashed_phone_number, hashed_first_name, hashed_last_name, or hashed_street_address) isn't a valid 64-character hexadecimal SHA-256 digest. Normalize and hash user-provided data before importing it. For instructions, see Normalize and hash user-provided data.
CONVERSION_NOT_FOUND

Google Ads couldn't find a conversion matching the supplied conversion_action field and conversion identifier (order_id or gclid_date_time_pair). This error applies only to RESTATEMENT and RETRACTION adjustments. For details, see Requirements in Import conversion adjustments.

For ENHANCEMENT adjustments, the API accepts the request without returning a CONVERSION_NOT_FOUND error and evaluates tag-to-API order_id matching asynchronously. High rates of unmatched order_id values trigger an order ID mismatch alert in the enhanced conversions diagnostics report in the Google Ads UI. For troubleshooting steps, see UI diagnostics alerts after a successful API upload.

UI diagnostics alerts after a successful API upload

When you upload ENHANCEMENT adjustments by using the ConversionAdjustmentUploadService service, the API validates request formatting at ingestion time and matches enhancements to website tag events asynchronously. As a result, API requests can succeed with no errors in the partial_failure_error field and show an EXCELLENT status in offline data diagnostics. At the same time, the enhanced conversions diagnostics report in the Google Ads UI can still display alerts.

Check for the following causes when UI diagnostics alerts appear after successful API uploads:

  • Missing required address fields: An OfflineUserAddressInfo object in the address_info field requires four fields in the same entry: hashed_first_name, hashed_last_name, country_code, and postal_code. The hashed_street_address, city, and state fields are optional (if you populate the hashed_street_address field, it must still be a valid 64-character SHA-256 hex digest). The API accepts non-empty partial address_info objects (such as first and last name only) without returning an error in the partial_failure_error field. However, downstream matching discards incomplete addresses and triggers an alert for missing address fields. If any of the four required fields are unavailable, omit the UserIdentifier object for the address_info field.

  • Missing transaction IDs on website tag events: Omitting the order_id field from an ENHANCEMENT adjustment in the API returns a synchronous FieldError.REQUIRED error. When your API requests include the order_id field, a UI alert for a missing transaction ID from the conversion event refers to your website tag. This alert appears when fewer than 90% of website conversion tag events include a valid transaction ID (or when the tag sends placeholder strings such as "undefined" or "null"). Configure your website conversion tag to send a unique transaction ID for every conversion event.

  • Tag and API order ID mismatch or late uploads: For ENHANCEMENT adjustments, the API doesn't return a CONVERSION_NOT_FOUND or CONVERSION_EXPIRED error at upload time. Instead, unmatched order_id values trigger an order ID mismatch alert in the UI, and enhancements uploaded more than 24 hours after the conversion trigger a late-upload alert. Match the API order_id field to the exact transaction ID string sent by your website conversion tag and upload the enhancement within 24 hours of the conversion event.

  • Unnormalized user data hashed before upload: Hashing unnormalized values—such as uppercase letters, leading or trailing whitespace, or phone numbers outside E.164 format—still produces a valid 64-character SHA-256 hex digest. The API accepts the upload without returning an INVALID_USER_IDENTIFIER error, while downstream matching fails and reports formatting or low-match-rate alerts. Follow the normalization rules in Normalize and hash user-provided data.

  • Low API enhancement volume relative to website tag volume: UI diagnostics compare deduplicated API enhancements that contain user identifiers against deduplicated, consented website tag events:

    • Consent mode configuration: When consent mode on the Google tag signals the ad_storage='denied' setting, UI diagnostics exclude unconsented website tag events from the comparison, so omitting those events from API uploads doesn't trigger a low-volume alert. However, mismatched consent handling between your website tag and backend triggers alerts:

      • Tag lacks ad_storage='denied', backend skips upload: UI diagnostics count the tag events as consented and report a low-coverage alert.
      • Tag signals ad_storage='denied', backend uploads enhancement: Uploaded enhancements lack a matching consented tag event and contribute to order ID mismatch alerts.

      Apply the same consent state to both your website tag and your API enhancement uploads.

    • Anonymous website events: Don't enable enhanced conversions on upper-funnel conversion actions (such as page views or item views) where the website tag fires for anonymous visitors. If your server sends API enhancements only for signed-in users with known contact details, the unmatched anonymous tag events trigger a low-coverage alert. Enable enhanced conversions only on conversion actions where user-provided data is consistently available.

General conversion management issues

Keep in mind the following common issues:

  • Attempting to set any enum field to UNKNOWN will result in a RequestError.INVALID_ENUM_VALUE error. This is a common problem when specifying consent when the advertiser may not know if consent was given. If the status of consent is unknown, it should be set to DENIED.

  • When creating a conversion action for App conversions or Firebase and third-party app analytics, you can only mutate the app_id field on create; once the conversion action has been created, this field cannot be changed.

  • When creating a conversion action, you can only set the ConversionAction.attribution_model_settings.attribution_model field to either GOOGLE_ADS_LAST_CLICK or GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN. Any other option will result in a CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS error. Our blog post announcing the deprecation of other attribution models has more details.

  • The allowed range for the click_through_lookback_window_days field is 1 to 60 days for conversion actions with type AD_CALL and WEBSITE_CALL. For most other conversion actions, the allowed range is 1 to 90 days.

  • The allowed range for the view_through_lookback_window_days field is 1 to 30 days for most conversion actions. This field must be unset for conversion actions of type AD_CALL and WEBSITE_CALL.

  • Setting or updating the include_in_conversions_metric field on a conversion action will result in a FieldError.IMMUTABLE_FIELD error. Instead, set the primary_for_goal field, as described in the conversion goals guide.

  • When creating a conversion action of type WEBSITE_CALL or AD_CALL, the value_settings.always_use_default_value must be set to true. Specifying a value of false will result in an INVALID_VALUE error.

Common errors

The following guidance helps you diagnose and fix common errors with offline conversion imports, including cross-account conversion tracking access errors.

Error
INVALID_CONVERSION_ACTION_TYPE The specified conversion action has a type that is not valid for uploading click conversions. Make sure the ConversionAction specified in your upload request has type UPLOAD_CLICKS.
NO_CONVERSION_ACTION_FOUND The specified conversion action is either not enabled or cannot be accessed by the account in the customer_id field of the request. Retrieve information about your conversion tracking setup to confirm that the conversion action is enabled. The conversion action owner must be either the click's Google Ads conversion customer or an account in the uploading account's conversion tracking hierarchy. For example, this error occurs if the conversion action belongs to a former manager account that was unlinked after the click.
TOO_RECENT_CONVERSION_ACTION The conversion action is newly created. Wait at least 6 hours after the action is created before retrying the failed conversions.
INVALID_CUSTOMER_FOR_CLICK The customer_id field in the request does not match the Google Ads conversion customer at the time of the click. This error occurs when the uploading account also lacks cross-account access to the conversion action. Update the customer_id field of the request to an account in the conversion action owner's hierarchy.
EVENT_NOT_FOUND Google Ads cannot find the combination of click ID and customer_id. Review the requirements for customer_id and confirm you are uploading using the correct Google Ads account.
DUPLICATE_CLICK_CONVERSION_IN_REQUEST Multiple conversions in the request have the same combination of click ID, conversion_date_time, and conversion_action. Remove duplicate conversions from your request.
CLICK_CONVERSION_ALREADY_EXISTS A conversion with the same combination of click ID, conversion_date_time, and conversion_action was previously uploaded. Ignore this error if you were retrying the upload and this conversion previously succeeded. If you want to add another conversion in addition to the previously uploaded conversion, adjust the conversion_date_time of the ClickConversion to avoid duplicating the previously uploaded conversion.
EXPIRED_EVENT The imported click occurred before the timeframe specified in the click_through_lookback_window_days field. A change to the click_through_lookback_window_days only impacts clicks recorded after the change, so changing the lookback window wouldn't resolve this error for the particular click. If appropriate, change the conversion_action to another action with a longer lookback window.
CONVERSION_PRECEDES_EVENT The conversion_date_time is before the date and time of the click. Update the conversion_date_time to a later value.
VALUE_MUST_BE_UNSET

The ClickConversion has a value set for either gbraid or wbraid (without a gclid) and has a value for custom_variables or cart_data, which Google Ads does not support with gbraid or wbraid. Unset the conflicting field.