Sprinklr
Datafly Signal delivers your first-party events server-to-server to Sprinklr’s Journey Facilitator API, starting a trigger-based journey in Sprinklr Marketing for a known customer profile. Event detail travels with the trigger as contextParams, which the journey reads into variables — so a purchase, checkout start, or sign-up on your site can drive a Sprinklr marketing or care journey without a browser tag.
Alpha (v0.1) — not yet validated against a live tenant. Sprinklr API access is gated behind an Enterprise licence, so this connector was built from Sprinklr’s published documentation and has not been exercised end to end against a real Sprinklr environment. Run a controlled test in your own environment before putting production traffic on it.
Prerequisites
- A Sprinklr Enterprise licence. Sprinklr restricts API access to Enterprise customers.
- An API key and secret registered in the Sprinklr Developer Portal for the environment you are integrating with.
- A deployed trigger-based journey in Journey Facilitator, set to an API-based trigger, and its Journey ID.
- The customer profile must already exist in Sprinklr. See Profile creation below.
Configuration
| Field | Required | Description |
|---|---|---|
| API Base URL | Yes | Your environment-scoped API base, e.g. https://api2.sprinklr.com or https://api2.sprinklr.com/prod2. No trailing slash. |
| API Key | Yes | Sprinklr API key. Used as the OAuth client_id and as the Key request header. |
| API Secret | Yes | Paired secret, exchanged for an access token. |
| Journey ID | Yes | The Journey Facilitator journey to trigger. Sent as journeyId. |
Choosing the API Base URL
Sprinklr API hosts are environment-scoped, and credentials issued for one environment are rejected by another. Map your Sprinklr web address to the API base:
| You log in at | API Base URL |
|---|---|
app.sprinklr.com | https://api2.sprinklr.com |
prod0.sprinklr.com | https://api2.sprinklr.com/prod0 |
prod2.sprinklr.com | https://api2.sprinklr.com/prod2 |
If the environment and the credentials disagree, Sprinklr returns 403.
Configure in Signal
- In the Signal management UI, open Integrations and add Sprinklr.
- Enter your API Base URL, API Key, API Secret, and Journey ID.
- Attach the Sprinklr integration to the pipeline carrying the events you want to forward.
- Select the Default preset (or customise the event mappings) and save.
Signal authenticates using the OAuth 2.0 client_credentials grant, exchanging your key and secret for a short-lived access token at {API Base URL}/oauth/token. Tokens are cached and refreshed automatically. Sprinklr additionally requires the raw API key on every request in its own Key header; Signal sends this for you.
API Endpoint
POST {API Base URL}/api/marketing-journey/trigger
Authorization: Bearer <access_token>
Key: <api_key>
Content-Type: application/jsonBody:
{
"snType": "EMAIL",
"snId": "jane@example.com",
"journeyId": "6512abcdef0123456789abcd",
"contextParams": {
"eventName": "purchase",
"orderId": "ORD-1001",
"revenue": "129.99",
"currency": "GBP"
}
}A successful trigger returns 204 No Content.
Identity Signals
Sprinklr matches the profile on an audience identifier pair: snType names the audience schema, snId carries the value. The Default preset pins snType to EMAIL and maps the identified email to snId. Sprinklr also supports SMS, WHATSAPP_BUSINESS, and the social channel types, which require corresponding channel configuration on the Sprinklr side.
The email is trimmed and lowercased but not hashed. Sprinklr is a customer-experience platform that has to read the address in order to reach the customer, so — as with Zendesk and Kustomer — identifiers are sent in clear text. Consent is enforced upstream at the pipeline, before delivery.
Events without a known email are dropped, because the trigger cannot be associated with a profile.
Profile creation
This connector calls /api/marketing-journey/trigger, which requires the profile to already exist in Sprinklr. If no profile matches the snType/snId pair, Sprinklr returns 404 and the event is discarded as a permanent failure.
Sprinklr also exposes /api/marketing-journey/triggerWithNewProfile, which upserts the profile in the same call via a unifiedProfile object. Signal does not implement it yet: Sprinklr does not publish the unifiedProfile schema (its documentation directs customers to their solution consultant), and we do not ship connector payloads built on guesswork. If you need first-touch traffic to create profiles, talk to us and supply the schema from your Sprinklr solution consultant.
Event Mapping
Signal uses GA4-style snake_case event names. The Default preset maps:
| Signal event | contextParams.eventName | Additional contextParams |
|---|---|---|
page | page | pageTitle, referrer |
sign_up | sign_up | signupMethod |
login | login | loginMethod |
search | search | searchQuery |
view_item | view_item | productId, productName, productCategory, price, currency |
add_to_cart | add_to_cart | productId, productName, quantity, price, currency |
begin_checkout | begin_checkout | cartValue, currency, coupon |
purchase | purchase | orderId, revenue, currency, coupon |
Every event also carries userId, anonymousId, occurredAt, and pageUrl.
Reading contextParams in the journey
contextParams values are available inside Journey Facilitator through a Variable Operation node: select Enter Custom Code on the right-hand side, enter the key name (for example orderId), and bind it to a journey variable on the left.
contextParams must stay flat. Journey Facilitator variables hold scalar values, so nested objects and arrays are not supported. Map product collections to individual scalar keys rather than passing an items array.
Error Handling
| Status | Meaning | Signal behaviour |
|---|---|---|
204 | Journey triggered | Success |
400 | Malformed body or unknown snType | Permanent failure, not retried |
401 | Expired or invalid access token | Permanent failure; token is refreshed on the next delivery |
403 | API key lacks Journey Facilitator scope, or key belongs to a different environment than the API Base URL | Permanent failure, not retried |
404 | Unknown journeyId, or no profile matches snType/snId | Permanent failure, not retried |
429 / 5xx | Rate limited or Sprinklr-side error | Retried with backoff, then dead-lettered |