POST /track/realtimeconversion
The POST /track/realtimeconversion endpoint enables you to upload conversion events to the platform in real-time.
Prerequisites
Before you can send conversion events, you must have a captured event and a unique ID of the user who triggered the event. For details and FAQs, see Real-time conversion events.
Technical requirements
Here's what you need to know to use this endpoint:
- The Real-Time Conversion Events API is accessible via HTTPS requests using the JSON format.
- You must specify the
Content-Type: application/jsonheader. - This endpoint does not require authentication.
Request size limits
The total request size may not exceed 28.6 MB. There's no limit on the number of events you can send.
TIP: To upload a larger file, split it into several smaller files that meet the request size requirements. For details, see the individual endpoints.
Request example
The following is a JSON example with the request properties that you can use to communicate real-time conversion events to The Trade Desk. Specifically, the example shows the resulting JSON for a First Purchase event for booking two hotel rooms, a Deluxe Twin and King Terrace, from an Android device at the IP address 7.7.7.7 with revenue tracking enabled and sent by advertiser GenericMart with ID 4w1ba8e.
{
"data": [
{
"adv": "4w1ba8e",
"pixel_id": "hc7ihke",
"value": 25.97,
"currency": "USD",
"event_name": "purchase",
"client_ip": "7.7.7.7",
"referrer_url": "site.com",
"adid": "A4AAAAs6ZBcEbwAPoFhVV7CNW5W-4R-9TKDNL4RS0ctkw1U-IkNOXSnWczvwOMgCQaXHPf3Gd1o1W6IBmlZBFIloM67XOsOgwP5jUrQrclGkq1zBJJUJmOFTe6sJJA7pM1GP9gLd-hz5did6baZvcKd8DXkUYM-WALRZFnzHivu_1YEsC_CeXNdMexKDN7EwSQ6L5eZvOd1F1RkF_nLy_J0twg",
"adid_type": "UID2",
"tdid": "660e1d86-6796-463a-be86-897993136018",
"daid": "3ecef5dd-21da-4a9d-a6d7-cd541666bc1e",
"idfa": "cc9d5044-5837-4bcd-b339-26115f56deb6",
"aaid": "8887b1e6-82cd-4b44-b36e-1a25655349a1",
"naid": "9aa5696c-af88-4127-bfdb-107b12417913",
"idl": "XY1234wXyWPB1SgpMUKIpzA0I3UaLEz-2lg0wFAr1PWK7FMhs",
"imp": "49gCBlwj-9d33-0927-s9g7-sd7nF3D248d5",
"uid2_token": "A4AAAAs6ZBcEbwAPoFhVV7CNW5W-4R-9TKDNL4RS0ctkw1U-IkNOXSnWczvwOMgCQaXHPf3Gd1o1W6IBmlZBFIloM67XOsOgwP5jUrQrclGkq1zBJJUJmOFTe6sJJA7pM1GP9gLd-hz5did6baZvcKd8DXkUYM-WALRZFnzHivu_1YEsC_CeXNdMexKDN7EwSQ6L5eZvOd1F1RkF_nLy_J0twg",
"country": "United States",
"region": "TX",
"NielsenDMA": "678",
"city": "US ELP",
"zip": "10004",
"order_id": "abc123XyZ",
"items": [
{
"item_code": "203319203",
"name": "Deluxe Twin Room",
"qty": 1,
"price": 264.00,
"cat": "23",
"item_brand": "Sample Hotel Group"
},
{
"item_code": "#2234567892",
"name": "King Terrace Suite",
"qty": 1,
"price": 399.00,
"cat": "1110",
"item_brand": "Sample Hotel Group"
}
],
"privacy_settings": [
{
"privacy_type": "GDPR",
"is_applicable": true,
"consent_string": "12345"
}
],
"data_processing_option": {
"policies": [
"LDU"
],
"region": "US-CO"
},
"td1": "Spring 2026 Promo"
}
]
}
Request properties
The following table lists all the conversion event properties that JSON requests to the POST /track/realtimeconversion endpoint support.
| Property | Required? | Data Type | Description | Value Example | Notes |
|---|---|---|---|---|---|
merchant_id |
Required, only for merchants | String | The platform ID of the merchant assigned by The Trade Desk to the merchant during the onboarding process. | 12345 |
None |
adv |
Required, only for non-merchants | String | The platform ID for the advertiser on whose behalf the tracking call was made. | 4w1ba8e |
None |
pixel_id |
Required | String | The platform ID of the event tracker for merchant event mappings, or the Universal pixel ID of the event for URL mappings. | ejs57s6 |
For event mapping, include the event tracker and the event_name property in the request. |
pixel_ids |
Optional | String array | The list of IDs for event trackers or universal pixels. | ejs57s6, hc7ihke |
You can include multiple IDs of the same type, or a combination of event tracker and universal pixel IDs. If this property is provided, pixel_id is ignored. |
tracker_id |
Not recommended, use pixel_id instead |
String | The platform ID of the event tracker. | hc7ihke |
This property has been deprecated. |
upixel_id |
Not recommended, use pixel_id instead |
String | The universal pixel ID for the event. | ejs57s6 |
This property has been deprecated. |
value |
Required, only for purchase events | Decimal | The revenue-tracking value with a period (not a comma) as a decimal point. | 19.98 |
If revenue is passed, it will be available in all reports. |
currency |
Optional | String | The ISO 4217 currency code for the revenue value. | USD |
Here’s what you need to know about this property:
|
event_name |
Optional | String | The type of event defined by the partner platform. | addtocart |
For a list of event names to use, see Event names. For merchants with a product catalog, see Item-Level Event Tracking in the Knowledge Portal. . |
client_ip |
Optional | String | The client IPv4 or IPv6 IP address that uniquely identifies a network interface on a machine. | 7.7.7.7 |
Make sure that it is the client, not server, IP address. |
referrer_url |
Required, if you are including a universal pixel ID | String | The website URL from where the event occurred, if any. | site.com |
If you are using the conversion SDK, the URL will automatically be extracted. To provide a specific URL, set this value to the URL you want to provide. |
adid |
Optional | String | The unique advertising ID for the event. For details, see Supported user ID types. | 660e1d86-6796-463a-be86-897993136018 |
If the adid value is empty and the adid_type value is not provided, your request might be rejected. Be sure to include this property if you are using any of the following:
|
adid_type |
Required, if adid is provided |
String | The type of the advertising ID, specified in the adid property: TDID, IDFA, AAID, DAID, NAID, IDL, EUID, or UID2. For details, see Supported user ID types. |
TDID |
If this field is empty and adid is not provided, the default value is TDID. |
tdid |
Optional | String | The Trade Desk 36-character GUID (including dashes) for this user. | 660e1d86-6796-463a-be86-897993136018 |
None |
daid |
Optional | String | A 36-character GUID (including dashes) that serves as the device advertising ID for this user. See also idfa for iOS, or aaid for Android devices. |
3ecef5dd-21da-4a9d-a6d7-cd541666bc1e |
None |
idfa |
Optional | String | A 36-character GUID (including dashes) that serves as the device advertising ID for Android devices. | cc9d5044-5837-4bcd-b339-26115f56deb6 |
None |
aaid |
Optional | String | A 36-character GUID (including dashes) that serves as the device advertising ID for iOS devices. | 8887b1e6-82cd-4b44-b36e-1a25655349a1 |
None |
naid |
Optional | String | A 36-character GUID (including dashes) that serves as the device advertising ID for Windows devices. | 9aa5696c-af88-4127-bfdb-107b12417913 |
None |
uid2_token |
Optional | String | The encrypted UID2 token, also known as an advertising token. This token is case-sensitive. Tokens are generated and managed using UID2 APIs. For details about UID2 APIs, see UID2 Endpoints. | See Request example. | None |
euid_token |
Optional | String | The encrypted EUID token, also known as an advertising token. This token is case-sensitive. For details about EUID APIs, see UID2 Endpoints. | See Request example. | None |
idl |
Optional | String | The 49-character or 70-character RampID (previously known as IdentityLink). IMPORTANT: This must be a RampID from LiveRamp that is mapped specifically for The Trade Desk. For details about mapping a RampID, see LiveRamp documentation. |
XY1234wXyWPB1SgpMUKIpzA0I3UaLEz-2lg0wFAr1PWK7FMhs |
A Ramp ID (formerly IDL) is a 49 or 70 character ID based on the LiveRamp identity graph. |
imp |
Optional | String | A 36-character GUID (including dashes) that serves as the unique ID for the impression to which the event is attributed. | 49gCBlwj-9d33-0927-s9g7-sd7nF3D248d5 |
If you are using a third-party measurement partner, be sure to include this property for more accurate attribution. |
country |
Optional | String | Optional | The full name of the country where the conversion occurred. | United States |
region |
Required if country is set to United States |
String | The full name or code of the region in the United States where the conversion occurred. | NY, New York |
|
NielsenDMA* |
Optional | Integer | The numerical metropolitan area geotargeting code where the conversion occurred. | 501 |
|
city |
Optional | String | The city where the conversion occurred. | US NYC |
None |
zip |
Optional | String | The zip code or postal code. | 10004 |
None |
order_id |
Optional | String | The associated order identifier of the event. | abc123XyZ |
None |
items |
Optional | Object array | One or more items in the order. For object properties, see Item properties. | N/A | None |
privacy_settings |
Required for the EU unless an exemption has been approved by The Trade Desk Legal team. Optional for the US. |
Object array | User privacy settings based on data privacy consent processing. For object properties, see Privacy settings properties. | N/A | None |
data_processing_option |
Required for applicable states | Object | A data processing option to pass users' opt-out choices, such as Limited Data Use (LDU), in applicable US states. This is an alternative to the GPP string in the Privacy settings properties. For object properties, see Data processing option properties. |
N/A | The user choice processing options are supported only for events from US states where applicable laws and regulations are in effect. |
td1 - td10 |
Optional | String(150) | Ten sequentially numbered custom dynamic properties that can be used to provide additional conversion metadata. For details, see Custom line-item dynamic parameters. | N/A | None |
* © 2026, The Nielsen Company (US), LLC. The DMA® data is used pursuant to a license from The Nielsen Company (US), LLC. Any use and/or reproduction of these materials without the express written consent of The Nielsen Company (US), LLC, is strictly prohibited. DMA® data is valid for the period 2025 - 2026. DMA® is a registered service mark of The Nielsen Company (US), LLC and is used pursuant to license.
Item properties
The following table lists the items object properties that contain item-level information.
| Property | Required? | Data Type | Description | Value Example |
|---|---|---|---|---|
item_code |
Required | String | The item identifier (such as SKU numbers). | #3234567894 |
name |
Optional | String(150) | The name associated with the item code. | Lemon Sandwich Creme Cookies, Family Size, 25 oz |
qty |
Optional | Integer | The number of items in the order for the item code. | 12 |
price |
Optional | Decimal | The unit price of the item. | 9.99 |
cat |
Optional | String | The item category ID. NOTE: The Real-Time Conversion Events API uses the provided value in all cases except when a merchant has a product catalog with the specified item code in it, but with a different category ID. In this case, the product catalog category ID will be used. |
1110 |
item_brand |
Optional | String | The brand name of the item. | Cookie Brand Name |
Privacy settings properties
The following table lists the privacy_settings object properties.
| Property Name | Required? | Data Type | Description | Example | Notes |
|---|---|---|---|---|---|
privacy_type |
Required | String | Specifies the applicable privacy regulation based on the user's geographical location:
|
GDPR |
Only one value per PrivacySettings object.NOTE: You can also use the data_processing_option object as an alternative to the GPP string. For details, see Data processing option properties. |
is_applicable |
Required | Boolean | Indicates if the value specified in the privacy_type property is applicable. |
true or 1 |
None. |
consent_string |
Required | String | The user's consent when the privacy regulations are in effect. The format depends on the privacy_type property value:
|
None | For details, see the IAB documentation on the Transparency and Consent Framework and Global Privacy Platform. |
Data processing option properties
The following table lists the data_processing_option object properties that you can use to signal users' opt-out choices in US states with applicable privacy laws.
| Property | Required? | Data Type | Description | Value Example | Notes |
|---|---|---|---|---|---|
policies |
Required | String array | Specifies the data processing option policies. | LDU |
LDU (Limited Data Use) is currently the only supported value that signals the user's opt-out. |
region |
Required | String | The data processing option region of the request in this format: US followed by a hyphen (-) and a two-letter state or territory abbreviation. |
US-CO (Colorado) |
If the region is passed, The Trade Desk uses it to determine the enforcement of applicable regulations. Otherwise, we look up the geo location based on the IP address. |
Event names
The Trade Desk provides a list of events that you can map to an event tracker without any additional configuration. Here's what you need to know about the event names list:
- The list is ordered from bottom-funnel actions, such as purchases (which are most desired), to top-funnel actions (that occur less consistently or are less critical).
- Some event names have similar functions (for example,
InitiateCheckoutandstartcheckout) and are shown together. You can use whichever one, depending on your business needs. - To map an event to an event tracker, in a Real-Time Conversion Events API call, set the
pixel_idvalue to your tracking tag ID and theevent_namewith any of the following names. For details, see the Event mapping.
NOTE: To configure and manage events as a merchant with a product catalog, you need to use the platform UI. For details, see Item-Level Event Tracking in the Knowledge Portal.
| Event Name | User Action |
|---|---|
purchase |
The user completed a purchase and has the Thank You page displayed. |
donate |
The user donated to the business or a cause. |
subscribe |
The user subscribed to a service or content offering. |
reserve |
The user made a reservation. |
starttrial |
The user started a free trial. |
applicationapproval |
The user's application was approved. |
submitapplication |
The user submitted an application. |
initiatecheckout |
The user started the checkout process. TIP: There is no functional difference between initiatecheckout and startcheckout. Choose the one that aligns best with your own internal systems. |
startcheckout |
The user started the checkout process. TIP: There is no functional difference between initiatecheckout and startcheckout. Choose the one that aligns best with your own internal systems. |
addpaymentinfo |
The user added payment information during checkout. |
addbilling |
The user added or updated their billing information. |
addtocart |
The user added an item to the shopping cart. |
addtowishlist |
The user added an item to the wish list. |
wishlistitem |
The user added an item or SKU number to the wish list. |
customizeproduct |
The user customized a product configuration. |
viewcart |
The user viewed the contents of the shopping cart. |
viewitem |
The user viewed an item or SKU number. |
viewcontent |
The user viewed a specific piece of content, such as a product or landing page. |
viewcategory |
The user viewed a category page. |
listview |
The user viewed a list of items. |
pageview |
The user viewed a page on the site. |
searchitem |
The user searched for an item or SKU number. |
searchcategory |
The user searched for a category. |
search |
The user performed a search on the site or app. |
sitevisit |
The user visited the site. |
login |
The user logged in to the site. |
contact |
The user contacted the business (for example, by chat, email, or phone). |
messagebusiness |
The user sent a message to the business or contacted the business via form or email. |
direction |
The user requested and received directions to the business. |
findlocation |
The user searched for or requested a store or business location. |
share |
The user shared content, a product, or a promotion. |
save |
The user saved content or an item to revisit later. |
rate |
The user rated a product or service. |
schedule |
The user scheduled an appointment or visit. |
invite |
The user invited another person to use the product or service. |
watchvideo |
The user watched a video. |
download |
The user downloaded a file or asset. |
adclick |
The user clicked an ad. |
adview |
The user viewed an ad. |
lead |
The user submitted their information as a lead. |
submitform |
The user submitted a form. |
completeregistration |
The user completed a registration or sign-up form. |
levelcomplete |
The user completed a level in a game or experience. |
Custom line-item dynamic parameters
When you include an items array in your request, The Trade Desk automatically maps item-level fields to the td1-td10 fields to support dynamic rules for commerce use cases. You do not need to populate the td1-td10 fields yourself — the platform derives these values from your items payload. This mapping occurs only on rule-matched conversion copies. The original conversion record always reflects your payload as sent.
If you do not include an items array in your request, the td1-td10 fields are available as general-purpose custom fields. You can use them to pass any additional conversion metadata relevant to your use case.
IMPORTANT: If your payload includes both an
itemsarray and explicittd1-td10values, the item-based mapping will overwrite yourtd1-td10values on any rule-matched copies. Avoid populating thetd1-td10fields manually if you are also sending anitemsarray. If you have a use case that requires both, contact your Trade Desk representative to understand how these fields interact and their downstream impact on optimization and reporting prior to implementation.
| Custom mapping field | Derived from |
|---|---|
td1 |
event_name |
td2 |
items.item_code |
td3 |
items.qty |
td4 |
items.price |
td5 |
items.name |
td6 |
N/A |
td7 |
N/A |
td8 |
items.cat |
td9 |
N/A |
td10 |
adid_type |
Response format
Here's what you need to know about the Real-Time Conversion Events API responses:
- If an error or a warning occurs when processing a request, the API returns a batch response that includes a message for the entire batch and any applicable details for each failed event in it.
- The API supports partial success and specifies errors or warnings for the failed events in the response but does not fail the entire request.
TIP: For troubleshooting tips and other details about using this API, see FAQs.
The Real-Time Conversion Events API response uses the following format:
{
"Message": null,
"EventResponses": [
{
"EventIndex": 23,
"EventErrors": [],
"EventWarnings": [
{
"Warning": "Warning code",
"WarningMessage": "Warning description."
}
],
"Successful": true // a warning was issued for the event but it processed successfully
},
{
"EventIndex": 31,
"EventErrors": [
{
"Error": "Error code",
"ErrorMessage": "Error description."
}
],
"EventWarnings": [],
"Successful": false // an event error occurred
}
]
}
The following table lists the response object properties.
| Property | Data Type | Description |
|---|---|---|
Message |
String | The top-level message that indicates the processing status of the request. If set to null, it indicates that the request itself was successful, even though individual events in the batch might not have been process successfully. Otherwise, a 400 request error message is provided. For details, see Error code and responses. |
EventResponses |
Object array | Individual event processing details. For details, see Event Response object properties. |
Event Response object properties
The following table lists the EventResponse object properties that contain information about event errors, or warnings, that might have occurred when processing the request.
| Property | Data Type | Description |
|---|---|---|
EventIndex |
Integer | The 0-based index of the event where the issue occurred. |
EventErrors |
Object array | A list of error codes and messages that provide details about failed events, if there are any. For details, see Error code and responses. |
EventWarnings |
Object array | A list of potential warnings about when they might have been processed successfully but with some alterations. For example, if an invalid quantity, monetary or price value is provided, the default value is used instead. |
Successful |
Boolean | Indicates whether the event was processed successfully:
|
Error code and responses
The following table provides a list of common errors and their respective HTTP error codes.
| Error Case | HTTP Response Code | HTTP Response Description | Error Message |
|---|---|---|---|
| Request sent empty, without content in the body. | 400 | Bad Request | The provided request could not be interpreted (no json data). |
Request sent without the merchant_id value. |
400 | Bad Request | The request is missing a merchant identifier (merchant_id). |
General processing error (possibly because of invalid values in the Items array). |
400 | Bad Request | A deserialization error occurred. |
| Request sent with an invalid or missing ADID type for the device ID. | 200 | OK | The request is missing or has an invalid adid_type property. Value provided ''. Valid ADID types are: TDID, IDFA, AAID, NAID, UID2, EUID. |
| Request sent with an invalid or missing tracking tag ID. | 200 | OK | The request is missing or has an invalid tracker_id property. Value provided ''. |
| Request sent with an invalid privacy setting. | 400 | Bad Request | The request has an invalid privacy setting. |
| Request sent with multiple privacy settings per type. | 400 | Bad Request | The request contains multiple privacy settings for a single type. Only one privacy setting per type is permitted. |
Here's an example of a successful response with no individual event issues:
{
"Message": null,
"EventResponses": []
}
Here's an example of a partially successful response with an event that is missing property values:
{
"Message": null,
"EventResponses":[
{
"EventIndex":0,
"EventErrors":[
{
"Error":"MissingOrInvalidADIDType",
"ErrorMessage":"The request is missing or has an invalid adid_type parameter. Value provided ''. Valid ADID types are: TDID, IDFA, AAID, NAID, UID2, EUID."
},
{
"Error":"MissingOrInvalidTrackingTagId",
"ErrorMessage":"The request is missing or has an invalid tracker_id parameter. Value provided ''."
}
],
"EventWarnings":[],
"Successful":false
}
]
}
Here's an example of a failed response:
{
"Message": "The provided request could not be interpreted (no json data).",
"EventResponses":[]
}