Page Summary
-
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, andCLICK_NOT_FOUND. -
Common errors for enhanced conversions for web include
CONVERSION_NOT_FOUND,CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS,CONVERSION_ALREADY_ENHANCED, andCONVERSION_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 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
|
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 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 thecustomer 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.gclidfield 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.consentfield 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
For |
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
OfflineUserAddressInfoobject in theaddress_infofield requires four fields in the same entry:hashed_first_name,hashed_last_name,country_code, andpostal_code. Thehashed_street_address,city, andstatefields are optional (if you populate thehashed_street_addressfield, it must still be a valid 64-character SHA-256 hex digest). The API accepts non-empty partialaddress_infoobjects (such as first and last name only) without returning an error in thepartial_failure_errorfield. However, downstream matching discards incomplete addresses and triggers an alert for missing address fields. If any of the four required fields are unavailable, omit theUserIdentifierobject for theaddress_infofield.Missing transaction IDs on website tag events: Omitting the
order_idfield from anENHANCEMENTadjustment in the API returns a synchronousFieldError.REQUIREDerror. When your API requests include theorder_idfield, 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
ENHANCEMENTadjustments, the API doesn't return aCONVERSION_NOT_FOUNDorCONVERSION_EXPIREDerror at upload time. Instead, unmatchedorder_idvalues 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 APIorder_idfield 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_IDENTIFIERerror, 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.
- Tag lacks
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
UNKNOWNwill result in aRequestError.INVALID_ENUM_VALUEerror. This is a common problem when specifyingconsentwhen the advertiser may not know if consent was given. If the status ofconsentis unknown, it should be set toDENIED.When creating a conversion action for App conversions or Firebase and third-party app analytics, you can only mutate the
app_idfield 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_modelfield to eitherGOOGLE_ADS_LAST_CLICKorGOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN. Any other option will result in aCANNOT_SET_RULE_BASED_ATTRIBUTION_MODELSerror. Our blog post announcing the deprecation of other attribution models has more details.The allowed range for the
click_through_lookback_window_daysfield is1to60days for conversion actions with typeAD_CALLandWEBSITE_CALL. For most other conversion actions, the allowed range is1to90days.The allowed range for the
view_through_lookback_window_daysfield is1to30days for most conversion actions. This field must be unset for conversion actions of typeAD_CALLandWEBSITE_CALL.Setting or updating the
include_in_conversions_metricfield on a conversion action will result in aFieldError.IMMUTABLE_FIELDerror. Instead, set theprimary_for_goalfield, as described in the conversion goals guide.When creating a conversion action of type
WEBSITE_CALLorAD_CALL, thevalue_settings.always_use_default_valuemust be set totrue. Specifying a value offalsewill result in anINVALID_VALUEerror.
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 |