LiveIntent Conversions API

Datafly Signal delivers conversion events to LiveIntent server-to-server using the Conversions API. LiveIntent is a people-based platform: conversions are matched on the visitor’s email (hashed before it leaves your infrastructure), so delivery does not depend on third-party cookies, ad blockers, or browser tracking prevention.

Prerequisites

Before configuring LiveIntent in Signal, you need three values, all supplied by your LiveIntent account manager:

  • Customer ID — identifies your LiveIntent account. It forms part of the Conversions API request path.
  • API Token — a static Bearer token used to authenticate every request.
  • Pixel ID — the numeric LiveIntent conversion pixel you are attributing events against.

The Conversions API is not self-serve. Contact your LiveIntent account manager to be provisioned and to receive your Customer ID, API Token, and Pixel ID. The API reference lives at conversions.liveintent.com/api-guide.

Configuration

Configuration Fields

FieldRequiredDescription
customer_idYesYour LiveIntent customer ID. Forms part of the request path.
api_tokenYesStatic Bearer token issued by LiveIntent. Sent as the Authorization header.
pixel_idYesNumeric LiveIntent conversion pixel ID. Sent as pixelId on every event.

Configure in Signal

  1. Go to Integrations > Add Integration > LiveIntent.
  2. Select the Default preset (page visits, product views, and purchases).
  3. Enter your customer_id, api_token, and pixel_id.
  4. Select consent categories (typically advertising or marketing).
  5. Click Save.

API Endpoint

POST https://conversions.liveintent.com/conversions/{customer_id}
Authorization: Bearer {api_token}
Content-Type: application/json

The request body is a JSON array of conversion events. Signal sends up to 100 events per request and batches automatically.

A successful request returns 204 No Content (all signals processed). A 200 response means the batch was only partially processed and the returned signal IDs should be retried. 400 indicates a malformed body, 401 a missing or invalid token, and 403 that the token lacks access to the customer or pixel.

Identity Signals

LiveIntent matches each conversion against its Identity Graph using the visitor’s email plus device signals. The more signals you provide, the higher your match rate.

SignalFieldHashingDescription
Email (MD5)userData.md5MD5, lowercased, trimmedLiveIntent’s preferred email match key.
Email (SHA-256)userData.sha2SHA-256, lowercased, trimmedSecondary email match key.
IP addressuserData.ipNoneVisitor IP, forwarded from the original request.
User agentuserData.uaNoneVisitor User-Agent, forwarded from the original request.

All email hashing is performed server-side by Signal before any data leaves your infrastructure. Raw email is never sent to LiveIntent. Either a hashed email or a LiveIntent decisionId is required for attribution, so make sure users are identified via datafly.identify().

How to Send User Data

Call datafly.identify() when a user logs in, registers, or submits a form. Signal normalises (lowercase + trim) and hashes the email with both MD5 and SHA-256 automatically:

datafly.identify("user-123", {
  email: "jane.doe@example.com"
});

Event Mapping

Default preset

Signal eventLiveIntent sourceNotes
pagewebPage visit; carries sourceUrl.
Product ViewedwebProduct view; carries sourceUrl, optional currency / value.
Order CompletedwebPurchase; carries orderId, value, currency.

Every record posted to the Conversions API is a conversion identified by your pixelId — there is no per-event name on the wire. Signal sets source to web and routes purchase detail into the purchaseData object. All other Signal events are dropped (the blueprint default is drop).

To customise, edit the integration’s Field Mappings in the Management UI.

Example: Purchase Event

Datafly.js call:

datafly.identify("user-123", { email: "jane.doe@example.com" });
 
datafly.track("Order Completed", {
  order_id: "ORD-001",
  revenue: 129.99,
  currency: "USD"
});

LiveIntent Conversions API payload sent by Signal:

[
  {
    "eventId": "evt_abc123def456",
    "pixelId": 67890,
    "eventTime": 1717668000,
    "source": "web",
    "userData": {
      "md5": "f0e166dc34d14d6c228ffac576c9a43c",
      "sha2": "62a14e1de526e9bbe8524c5113597e6131a3995027c0a1c75d3a3c8a8a04c2f9",
      "ip": "203.0.113.50",
      "ua": "Mozilla/5.0 ..."
    },
    "purchaseData": {
      "sourceUrl": "https://example.com/checkout/confirmation",
      "orderId": "ORD-001",
      "value": 129.99,
      "currency": "USD"
    }
  }
]

eventTime is a Unix timestamp in seconds and must be earlier than the time the event is sent. LiveIntent accepts events up to 7 days in the past.

Testing

Trigger a test conversion

Identify a user and fire an Order Completed event on your site, or replay one through Signal’s event debugger.

Confirm the request

In the Signal event debugger, inspect the outbound request. Confirm the Authorization: Bearer header is present, the URL path ends with your customer_id, the body is a JSON array, and each element carries eventId, pixelId, eventTime, source, and a userData.md5 / userData.sha2 hash.

Confirm acceptance

A successful delivery returns 204 No Content. A 200 indicates partial processing.

Confirm attribution

Ask your LiveIntent account manager to confirm conversions are landing against your pixel. Match rate depends on the hashed email being present, so verify users are identified before the conversion fires.

Troubleshooting

ProblemSolution
401 responsesThe API token is missing or invalid. Confirm the api_token is set and sent as Authorization: Bearer.
403 responsesThe token does not have access to the configured customer_id / pixel_id. Confirm all three values with your account manager.
400 responsesMalformed body or a missing required field. Check that eventId, pixelId, eventTime, and source are present, and that eventTime is in epoch seconds (not milliseconds).
Low match rateConversions without a hashed email rely on IP + user agent only. Ensure datafly.identify() runs with the user’s email before the conversion event fires.
Events rejected as too old / too neweventTime must be earlier than send time and no more than 7 days in the past.
Whole batch rejectedIf any event in a batch is invalid, LiveIntent rejects the entire batch. Inspect the rejected payload in Signal’s event debugger.