Listrak
Listrak is a retail email and SMS marketing platform. Datafly Signal triggers a Journey Hub custom event through the Cross Channel REST API (POST /crosschannel/v1/eventConfigurations/{eventUID}/events).
Why route Listrak through Datafly Signal
- Events come from your server, not the browser. They reach Listrak even when a tracker blocker or a failed page unload would have dropped a client-side call.
- Delivery is queued and retried. Signal buffers to Kafka and retries on 429 or a transient failure rather than dropping the event; a permanent rejection goes to the dead-letter queue with the vendor’s reason.
- One consent decision governs every destination. Listrak is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Get your Listrak credentials
Create a Cross Channel integration
In Listrak go to Integrations > Integration Management > New Integration, choose Cross Channel API, and store the Client ID and Client Secret (the secret cannot be retrieved later).
Create the custom event
Create the custom event in Journey Hub with the fields you want (for example order_id, value, currency), and note its Event UID.
Configuration
| Field | Required | Description |
|---|---|---|
client_id | Yes | OAuth Client ID for your Listrak integration. Found under Integrations > Integration Management when you create an integration. |
client_secret | Yes | OAuth Client Secret paired with the Client ID. Shown only once at integration creation and cannot be retrieved later — store it securely. |
event_uid | Yes | The Event UID of the Journey Hub custom event to trigger (Integrations > Integration Management > your Cross Channel integration > Custom Events, or GET /crosschannel/v1/eventConfigurations). One integration triggers one custom event. |
Management UI setup
- Go to Integrations in the sidebar and open the Integration Library tab.
- Find Listrak under Marketing Automation and click Install.
- Choose a preset, enter the fields above and click Install Integration.
Management API setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/listrak/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Listrak",
"variant": "default",
"config": {
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"event_uid": "your_event_uid"
},
"delivery_mode": "server_side"
}'What Signal sends
An example request, rendered from the ecommerce preset for purchase:
POST https://api.listrak.com/crosschannel/v1/eventConfigurations/00000000-0000-0000-0000-000000000001/events
events=%7B%27dataFields%27%3A+%7B%27coupon%27%3A+%27AUTUMN10%27%2C+%27currency%27%3A+%27GBP%27%2C+%27event_name%27%3A+%27purchase%27%2C+%27event_time%27%3A+%272025-09-22T00%3A13%3A20Z%27%2C+%27item_count%27%3A+%272%27%2C+%27item_id%27%3A+%27SKU-1%27%2C+%27item_name%27%3A+%27Parka+Jacket%27%2C+%27item_price%27%3A+%27129.99%27%2C+%27order_id%27%3A+%27ORD-1001%27%2C+%27shipping%27%3A+%274.99%27%2C+%27tax%27%3A+%2746.66%27%2C+%27user_id%27%3A+%27crm-user-7%27%2C+%27value%27%3A+%27279.98%27%7D%2C+%27identifiers%27%3A+%5B%7B%27identifierType%27%3A+%27EmailAddress%27%2C+%27identifierValue%27%3A+%27neill%40example.com%27%7D%5D%7D| Field | Source |
|---|---|
events[0].identifiers | EmailAddress with the contact’s email from identify() traits, trimmed and lower-cased. Required. |
events[0].dataFields | The event name, time, user ID and the event’s properties, all as strings (Listrak parses them to the schema’s types). Only fields in the custom event’s schema are kept. |
Listrak looks the contact up by email and accepts no hashed identifier, so the email is sent in plain text. An event without an email is not sent. The contact must be subscribed to your email or SMS list to enter the journey.
Presets
| Preset | Signal event → vendor event |
|---|---|
| Default | sign_up, newsletter_subscribed (disabled), generate_lead (disabled), purchase (disabled) |
| Retail | purchase, add_to_wishlist (disabled), product_reviewed (disabled), order_shipped (disabled), refund (disabled) |
Events not listed are not sent. Each preset is a starting point: add, rename or remove mappings on the installed integration.
Notes and limits
- One integration triggers one custom event (the Event UID). Each preset enables the one event that should start the journey and lists alternatives disabled; to trigger several journeys, install the integration once per custom event.
Consent
Marketing-automation integrations have no consent category by default. Assign the marketing category when you install Listrak, so an event is delivered only when the visitor has granted it. Cookie-banner consent is not email or SMS opt-in: keep messaging opt-in in Listrak.
Verify it’s working
- Open the integration in the Signal Management UI and watch Live Events while you trigger a mapped event.
- Confirm a 2xx response from Listrak.
- Find the contact in Listrak and check the event or record arrived.
Troubleshooting
| Symptom | Resolution |
|---|---|
401 | Client credentials wrong, or API access paused on the Integrations page. |
404 | The Event UID does not exist. |
| Journey not entered | The contact is not subscribed, or the data field names do not match the custom event’s schema. |