Skip to content

Server-side events · Platform reference

Google Ads API offline click conversion import (UploadClickConversions): events, fields and dedup rules

Offline conversion import uploads ClickConversion rows (a click ID such as gclid, gbraid or wbraid, or hashed user data for enhanced conversions for leads) to an UPLOAD_CLICKS conversion action, usually from a CRM. Uploads 'succeed' but don't attribute when the click can't be found (CLICK_NOT_FOUND), the upload is past the 90-day limit (63 days for enhanced conversions for leads), conversion_date_time is earlier than the click or has no timezone, or consent isn't set. Since 15 June 2026 the method is closed to new adopters, who must use the Data Manager API instead.

Read from the official documentation on 9 November 2026. Sources are listed at the end.

Endpoint and authentication

ConversionUploadService.UploadClickConversions (Google Ads API); new integrations: Data Manager API

Google Ads API developer token and OAuth credentials for the conversion customer. Since 15 June 2026, developer tokens that sent no offline conversion uploads between 17 Dec 2025 and 15 Jun 2026 get CUSTOMER_NOT_ALLOWLISTED_FOR_THIS_FEATURE

Calls and objects

Google Ads has no standard event list: every conversion action is one you create. These are the upload types and API objects an offline import works through.

NameWhat it is
UPLOAD_CLICKSrequired conversion action type for click conversion imports (INVALID_CONVERSION_ACTION_TYPE otherwise)
ClickConversionone imported conversion: click ID and/or user_identifiers, conversion_action, conversion_date_time, value
Enhanced conversions for leadsClickConversion with hashed user_identifiers (email/phone only); the account must have it enabled or you get CUSTOMER_NOT_ENABLED_ENHANCED_CONVERSIONS_FOR_LEADS

Required and recommended fields

FieldWhat it needs
conversion_actionResource name of a conversion action with type UPLOAD_CLICKS in the conversion customer
conversion_date_timeFormat yyyy-mm-dd HH:mm:ss+|-HH:mm with a timezone; must be after the click time
gclid / gbraid / wbraidInclude every identifier you captured; any combination is accepted on one ClickConversion
conversion_value + currency_codeNumeric (double) value plus a 3-character ISO 4217 currency code
order_idUnique transaction ID per conversion action. Stops duplicate imports and must be reused for later adjustments
consentIf not set, conversions may not be attributable
partial_failureMust be true when importing conversions
user_identifiersRequired for enhanced conversions for leads: 1 to 5 normalised and hashed identifiers (hashed_email, hashed_phone_number only)

Match keys and hashing

KeyNormalise and hash
hashed_emailTrim and lowercase. For gmail.com/googlemail.com also remove periods and any +suffix from the username. SHA-256 as a 64-character lowercase hex string
hashed_phone_numberFormat to E.164, then SHA-256

Click ids

Click idWhere it comes from
gclidGoogle click ID. Takes priority when several IDs are present (gclid, then wbraid, then gbraid). Google keeps the GCLID for 90 days
wbraidAccepted alongside other IDs. If sent without a gclid, any user_identifiers are ignored
gbraidAccepted alongside other IDs. If sent without a gclid, any user_identifiers are ignored

Deduplication

Time limits and batch sizes

How to test before you trust it

Why events arrive but don't attribute

Sources

Platforms change these rules without notice. If a source says something different from this page, the source wins.

Other platforms

All platforms