Field mappings

Use the mappings in the tables to map the Google Ads API methods and fields to their IngestEventsRequest equivalent in the Data Manager API.

API methods

The Data Manager API lets you upload each batch of store sales events in a single IngestEventsRequest.

In contrast, the Google Ads API required a three step process using the OfflineUserDataJobService:

  1. Create a job using CreateOfflineUserDataJob
  2. Add operations to the job using AddOfflineUserDataJobOperations
  3. Run the job using RunOfflineUserDataJob

Request fields

Each IngestEventsRequest is subject to request limits. If the number of operations in your AddOfflineUserDataJobOperations request exceeds these limits, you must split this into multiple Data Manager API ingestion requests.

Here is how the fields of the Google Ads API requests map to the Data Manager API.

CreateOfflineUserDataJobRequest

The following table shows how the fields of a CreateOfflineUserDataJobRequest map to an IngestEventsRequest.

CreateOfflineUserDataJobRequest (Google Ads API) IngestEventsRequest (Data Manager API) Notes
customer_id destinations.operating_account See Customer and conversion action fields.
  • developer-token request header
  • login-customer_id request header
  • linked-customer-id request header
destinations See Customer and conversion action fields.
  • job.status
  • job.failure_reason
Diagnostics Use the request_id returned in the IngestEventsResponse to retrieve diagnostics about your conversion upload.
job.id request_id Use the request_id returned in the IngestEventsResponse to retrieve diagnostics about your conversion upload.
job.external_id No equivalent
job.type No equivalent
job.store_sales_metadata.third_party_metadata.partner_id destinations.login_account A data partner uploading store sales conversions will be identified by the login_account of a destination. See Configure destinations for more details.
job.store_sales_metadata.third_party_metadata.advertiser_upload_date_time No equivalent
job.store_sales_metadata.third_party_metadata.valid_transaction_fraction No equivalent
job.store_sales_metadata.third_party_metadata.partner_match_fraction No equivalent
job.store_sales_metadata.third_party_metadata.partner_upload_fraction No equivalent
job.store_sales_metadata.third_party_metadata.bridge_map_version_id No equivalent
job.store_sales_metadata.loyalty_fraction No equivalent
job.store_sales_metadata.transaction_upload_fraction No equivalent
job.store_sales_metadata.custom_key
  • events[].custom_variables[].variable
  • events[].cart_data.items[].custom_variables[].variable
Map to the variable field of a CustomVariable at the event level or an ItemCustomVariable at the item level.
enable_match_rate_range_preview No equivalent
validate_only validate_only
No equivalent consent Google Ads API only supports specifying consent at the event level in UserData. For the Data Manager API, you can specify consent for all events in a request by setting the consent field on the IngestEventsRequest. You can override this value for an individual event by setting the consent field of Event.
No equivalent encoding Required for UserData uploads. Set to the Encoding used for UserIdentifier values.
No equivalent encryption_info Set if the request contains encrypted UserData user identifiers. See Encryption for details.

AddOfflineUserDataJobOperationsRequest

The following table shows how the fields of a AddOfflineUserDataJobOperationsRequest map to an IngestEventsRequest.

AddOfflineUserDataJobOperationsRequest (Google Ads API) IngestEventsRequest (Data Manager API) Notes
  • developer-token request header
  • login-customer_id request header
  • linked-customer-id request header
destinations See Customer and conversion action fields.
resource_name No equivalent The Data Manager API doesn't require updating a job resource.
enable_partial_failure No equivalent If the IngestEventsRequest succeeds, any failures that occur during downstream processing are handled at the event level, which can result in a partial success. Use Diagnostics to retrieve the status of your upload as well as errors and warnings for individual events. If the IngestEventsRequest fails (for example, due to a BadRequest), no events are processed and you will need to resolve the error and retry the request. See Understand API errors for more information.
enable_warnings No equivalent Use Diagnostics to retrieve warnings about your Data Manager API request. You don't need to enable this.
operations events The OfflineUserDataJobOperation.create operation is equivalent to sending an IngestEventsRequest. The Data Manager API doesn't support removing events.
validate_only validate_only
No equivalent consent Google Ads API only supports specifying consent at the event level in UserData. For the Data Manager API, you can specify consent for all events in a request by setting the consent field on the IngestEventsRequest. You can override this value for an individual event by setting the consent field of Event.
No equivalent encoding Required for UserData uploads. Set to the Encoding used for UserIdentifier values.
No equivalent encryption_info Set if the request contains encrypted UserData user identifiers. See Encryption for details.

Customer and conversion action fields

The Google Ads API requires the developer-token request header, and you set the login-customer-id and linked-customer-id request headers for different authentication scenarios.

The Data Manager API doesn't require a developer token, and you specify login and linked customer information using fields of a Destination instead of request headers. Check out Configure destinations for more information about destinations.

Google Ads API Destination (Data Manager API) Notes
customer_id of the request operating_account Set the account_id to the customer ID of the Google Ads conversion account. Set the account_type of the operating_account to GOOGLE_ADS.
developer-token request header No equivalent A developer token is not required for the Data Manager API.
login-customer-id request header login_account Set the account_id to the customer ID of the login account. Set account_type to GOOGLE_ADS if the login account is a Google Ads account, or DATA_PARTNER if the login account is a data partner account.
linked-customer-id request header linked_account If you're accessing the operating_account using a partner link, set the account_id to the customer ID of the linked account and set account_type to DATA_PARTNER. Otherwise, don't set the linked_account field.
conversion_action product_destination_id Set to the numeric ID of the conversion action. Don't use the resource name.

Event fields

The following table shows how the fields of a store sales conversion map between the two APIs.

Unlike the Google Ads API, which supports including only a single item per transaction using ItemAttribute, the Data Manager API supports including multiple items per event in CartData.

OfflineUserDataJobOperation.create (Google Ads API) Event (Data Manager API) Notes
No equivalent event_source Required Set to IN_STORE for store sales conversions.
transaction_attribute.conversion_action destinations.product_destination_id See Customer and conversion action fields. Use the numeric ID of the conversion action instead of the resource name.
transaction_attribute.transaction_date_time event_timestamp
See Timestamp format for details.
transaction_attribute.transaction_amount_micros
  • conversion_value (Required)
  • cart_data.items[].conversion_value
Set to the currency value, not the value in micros. For example, for a conversion value of $5.23, use the value 5.23.
transaction_attribute.currency_code currency Required.
transaction_attribute.order_id transaction_id Required.
transaction_attribute.store_attribute.store_code event_location.store_id Required Set the store code in the store_id field in the EventLocation object.
transaction_attribute.custom_value
  • custom_variables[].value
  • cart_data.items[].custom_variables[].value
Map to the value field of a CustomVariable at the event level or an ItemCustomVariable at the item level.
transaction_attribute.item_attribute.item_id cart_data.items[].merchant_product_id
transaction_attribute.item_attribute.merchant_id
  • cart_data.merchant_id
  • cart_data.items[].merchant_id
If you set cart_data.merchant_id, it acts as a default for all items, but you can override it for individual items.
transaction_attribute.item_attribute.country_code
  • cart_data.merchant_feed_label
  • cart_data.items[].merchant_feed_label
If you set cart_data.merchant_feed_label, it acts as a default for all items, but you can override it for individual items.
transaction_attribute.item_attribute.language_code
  • cart_data.merchant_feed_language_code
  • cart_data.items[].merchant_feed_language_code
If you set cart_data.merchant_feed_language_code, it acts as a default for all items, but you can override it for individual items.
transaction_attribute.item_attribute.quantity cart_data.items[].quantity
No equivalent cart_data.items[].unit_price Set to the unit price excluding tax, shipping, and event scoped (transaction-level) discounts for this item.
user_identifiers
  • user_data.user_identifiers
  • third_party_user_data.user_identifiers
Required.

third_party_user_data uses the same structure as user_data, but indicates that the user identifiers come from a third-party source rather than being first-party advertiser data.

Populating third_party_user_data is only allowed if the login account is a data partner (login_account.account_type is DATA_PARTNER).

See User identifier fields for details.

consent consent Both APIs use a similar Consent object (ad_user_data, ad_personalization). For the Data Manager API, you can also set consent for all events in a request by setting the consent field on the IngestEventsRequest.

User identifier fields

UserIdentifier (Google Ads API) UserIdentifier (Data Manager API) Notes
user_identifier_source

The source determines which field to populate on the Data Manager API Event:

  • user_data
  • third_party_user_data

third_party_user_data uses the same structure as user_data, but indicates that the user identifiers come from a third-party source rather than being first-party advertiser data.

Populating third_party_user_data is only allowed if the login account is a data partner (login_account.account_type is DATA_PARTNER).

See User identifier fields for details.

hashed_email email_address Set to the formatted and hashed email address. You can also encrypt the hashed email address.
hashed_phone_number phone_number Set to the formatted and hashed phone number. You can also encrypt the hashed phone number.
address_info address Set to an AddressInfo object. Follow the formatting and hashing guidelines. You can also encrypt the hashed attributes of an address.
address_info.hashed_first_name address.given_name
address_info.hashed_last_name address.family_name
address_info.country_code address.region_code
address_info.postal_code address.postal_code
address_info.city No equivalent Not supported in the current version of the Data Manager API.
address_info.state No equivalent Not supported in the current version of the Data Manager API.
address_info.hashed_street_address No equivalent Not supported in the current version of the Data Manager API.