Listrak
Datafly Signal delivers your first-party events server-to-server to the Listrak Cross Channel REST API, passing contacts and their event detail into a custom event journey in Listrak Journey Hub. Contacts are matched by email address, so behaviour captured on your site can trigger Listrak email and SMS automations without a browser pixel.
Prerequisites
- A Listrak account with Journey Hub and at least one custom event configured.
- A Listrak integration created under Integrations > Integration Management > New Integration, which gives you an OAuth Client ID and Client Secret. The secret is shown only once and cannot be retrieved later — store it securely.
- Your Listrak Company ID.
- The Event UID of the custom event in Journey Hub you want incoming events to trigger.
Configuration
| Field | Required | Description |
|---|---|---|
| Client ID | Yes | OAuth Client ID from your Listrak integration. |
| Client Secret | Yes | OAuth Client Secret paired with the Client ID. Shown once at creation. |
| Company ID | Yes | Your Listrak company (account) ID. Sent as companyId. |
| Event UID | Yes | The unique ID of the Journey Hub custom event to trigger. Sent as eventUid. |
Configure in Signal
- In the Signal management UI, open Integrations and add Listrak.
- Enter your Client ID, Client Secret, Company ID, and Event UID.
- Attach the Listrak integration to the pipeline that carries the events you want to forward.
- Select the Default preset (or customise the event mappings) and save.
Signal authenticates with Listrak using the OAuth 2.0 client_credentials grant. It exchanges your Client ID and Client Secret for a short-lived access token at https://auth.listrak.com/OAuth2/Token and sends that token as a Bearer credential on every event request. Tokens are cached and refreshed automatically.
API Endpoint
POST https://api.listrak.com/crosschannel/v1/Event
Authorization: Bearer <access_token>
Content-Type: application/jsonAuthentication token request:
POST https://auth.listrak.com/OAuth2/Token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=<id>&client_secret=<secret>The entire custom event request (including headers) has a maximum size of 1 MB.
Identity Signals
Listrak matches each event to an existing contact by email address. Signal places the email in the identifiers array with identifierType of EmailAddress:
"identifiers": [
{ "identifierType": "EmailAddress", "identifierValue": "user@example.com" }
]The email is trimmed and lowercased before sending. Listrak matches on the raw email address (it is not hashed). Events without a known email are dropped, because the Cross Channel API cannot associate them with a contact journey.
Event Mapping
Signal uses GA4-style snake_case event names. The Default preset maps:
| Signal event | Listrak custom event detail (dataFields.event_name) |
|---|---|
page | page_view |
Signed Up | sign_up |
Product Viewed | view_item |
Product Added | add_to_cart |
Order Completed | purchase |
All event detail is sent inside the dataFields object, which is addressable with Handlebars in your Journey Hub messages. The custom event itself is selected by the eventUid you configured.
Example: Order Completed
Datafly.js call on your site:
datafly.track("Order Completed", {
order_id: "ORD-10428",
revenue: 129.99,
currency: "USD",
tax: 8.50,
shipping: 5.00,
coupon: "WELCOME10"
});Resulting payload Signal sends to Listrak:
{
"eventUid": "00000000-0000-0000-0000-000000000000",
"companyId": 12345,
"events": [
{
"identifiers": [
{ "identifierType": "EmailAddress", "identifierValue": "user@example.com" }
],
"dataFields": {
"event_name": "purchase",
"order_id": "ORD-10428",
"revenue": 129.99,
"currency": "USD",
"tax": 8.50,
"shipping": 5.00,
"coupon": "WELCOME10",
"event_time": "2026-06-06T12:34:56Z"
}
}
]
}Testing
- Trigger a tracked event on a page where the contact’s email is known (e.g. after sign-up or login).
- In Journey Hub, open the custom event and confirm a new event was received for the contact.
- Inspect the
dataFieldsvalues using a Handlebars expression in a test journey message to confirm the detail arrived. - In Signal’s Event Debugger, confirm the delivery returned
200and the payload matches the example above.
Troubleshooting
- 401 Unauthorized — the access token is invalid or expired. Re-check the Client ID and Client Secret; confirm the integration is not paused in Listrak (a paused integration rejects both token requests and event posts).
- 403 Forbidden — the integration lacks Cross Channel access, or API access has been paused on the Integrations page in Listrak.
- 404 Not Found — the
eventUidorcompanyIdis wrong. Confirm both against your Journey Hub custom event and account settings. - 400 Bad Request — the payload is malformed, missing the email identifier, or exceeds the 1 MB request limit.
- No contact match — verify the email is present and correct; Listrak matches on the raw email address and cannot create a journey entry without a resolvable contact.