Splio

Splio is an AI-first CRM combining marketing automation, a customer data platform (CDP) and loyalty programs. Datafly Signal creates contacts in the Splio Customer Platform (SCP) Data API from first-party sign-up and identify events, without any client-side Splio tags.

This integration writes to the Data API contacts endpoint (POST /data/contacts): email, name, phone and language.

Why route Splio through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Splio even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • One consent decision governs every destination. Splio is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
⚠️

Two limits make this integration unreliable today. The Data API token is a JWT that expires after 24 hours, and Signal cannot renew it yet (#1489): deliveries fail with 401 until you paste a new one. And POST /data/contacts only creates: an event for a contact that already exists is rejected with 400 and not retried (#1490).

Prerequisites

  • A Splio universe with the Customer Platform Data API enabled.
  • An API key created in the API users section of your universe, to mint the Data API token.

Configuration

FieldRequiredDescription
API Bearer Token (JWT)YesA Data API token from POST /authenticate. Valid for 24 hours; Signal does not renew it yet.
Splio API KeyNoYour universe API key, used to mint the token. Not used by Signal until automatic renewal exists.
Default List IDNoNot used by the current blueprint (see Consent).
Default LanguageNoTwo-letter language code (en, fr, it, es, …) for new contacts when the event has no locale.

Configure in Signal

  1. In your Signal management UI, go to Integrations and add Splio.
  2. Paste your Data API token and, optionally, the default language.
  3. The default preset creates a contact on sign_up and identify. Every other event is dropped.
  4. Save and enable the integration.

API Endpoint

POST https://api.splio.com/data/contacts
Authorization: Bearer <token>
Content-Type: application/json

Mint the token by exchanging your universe API key (dev-scp.splio.com, Authentication):

POST https://api.splio.com/authenticate
Content-Type: application/json

{ "api_key": "<your api key>" }

The response {"token": "..."} is valid for 24 hours.

Identity Signals

Splio is a messaging platform, so identity values are sent in clear (not hashed): Splio needs a deliverable email address and phone number.

Datafly sourceSplio fieldHandling
email traitemailRequired (the usual universe key). Trimmed and lower-cased.
phone traitcellphoneNormalised to E.164.
first_name / last_name traitsfirstname / lastnameAs sent.
context.localelanguageThe two-letter language (en-GB becomes en), else Default Language.
event time (sign_up)creation_dateSplio’s YYYY-MM-DD HH:MM:SS.

List subscriptions are not sent. Subscribing someone to a mailing list is a communications permission, and cookie consent must never grant it. Custom fields are not sent either: Splio addresses them by names or ids specific to your universe, and an unknown one fails the whole request. Add either to the installed integration if you need them.

Event Mapping

Signal eventSplio action
sign_upCreate contact, with creation_date
identifyCreate contact

Example: sign_up

datafly.identify("u-123", {
  email: "jane@example.com",
  first_name: "Jane",
  last_name: "Doe",
  phone: "+33612345678"
});
 
datafly.track("sign_up", { method: "email" });

Signal delivers:

{
  "email": "jane@example.com",
  "firstname": "Jane",
  "lastname": "Doe",
  "cellphone": "+33612345678",
  "language": "fr",
  "creation_date": "2026-09-23 10:30:00"
}

Testing

  1. Mint a fresh token from POST /authenticate and set it as the integration’s API token.
  2. Fire a sign_up event for a new email from a test page with datafly.identify populated.
  3. Confirm a 201 response from /data/contacts in the Signal Event Debugger.
  4. In Splio, open the contact by email and verify name, phone and language.

Troubleshooting

  • 400 contact already exists: POST /data/contacts only creates (#1490).
  • 400 Bad Request otherwise: the contact has no email, or the body is malformed.
  • 401 / 403: the token has expired (24 hours) or the API key lacks Data API permissions. Mint a fresh token.
  • 404: wrong host or path; confirm your universe is served from api.splio.com.