Session AI

Session AI (formerly ZineOne) is an in-session marketing platform that models each visitor’s real-time context and intent to deliver personalised experiences and messaging within the live session. Datafly Signal forwards your first-party events server-to-server into a Session AI REST channel, so the behavioural signal Session AI needs is delivered from your own infrastructure without an additional browser SDK.

Why route Session AI through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Session AI even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • Delivery is batched, rate-limited, and retried. Signal buffers to Kafka, respects the Session AI rate limit, and retries on 429 or transient failure rather than dropping the event.
  • One consent decision governs every destination. Session AI is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

  • A Session AI account with access to the server-side / console tools.
  • A REST (webhook) channel created in the Session AI console. Note its channel name — events are routed by channel and events sent to an unknown channel are dropped.
  • An API key generated for that channel. It is sent on every request in the apikey header.
  • Your Session AI cloud host. Most tenants are on cloud.zineone.com; some regional tenants are on a different host. Confirm yours in the console.
  • A Datafly Signal pipeline with the Datafly.js collector installed and emitting events.

Configuration

FieldRequiredDescription
API KeyYesSent in the apikey header. Generate it from the Session AI server-side tools for your channel.
Channel NameYesThe REST/webhook channel that receives these events (passed as the channel query parameter).
API HostYesYour tenant’s cloud host, usually cloud.zineone.com; a regional tenant has its own. There is no fallback: without it no event is delivered.

Configure in Signal

  1. In the management UI, open your pipeline and add a destination.
  2. Choose Session AI from the Personalisation category.
  3. Enter your API Key, Channel Name and API Host (cloud.zineone.com unless your tenant is regional).
  4. Select the Default preset, review the event mappings, and save.
  5. Enable the destination. Signal begins delivering mapped events immediately.

API Endpoint

Signal delivers each event with an HTTP POST to:

POST https://{api_host}/c3/public/api/v1/event?channel={channel}

Authentication is the apikey request header. Session AI returns 202 Accepted when an event is queued for processing. A successful event then appears in the customer activity stream for the supplied customer id.

Identity Signals

Session AI stitches behaviour to a profile using the identifiers at the root of the request body. Only events is required, so anonymous visitors are sent too.

Signal sourceSession AI fieldNotes
app device ID, else anonymous_iddevice_idSent on every event.
user_idcidThe known-customer identifier, sent once the visitor is identified.
device OSosThe app’s OS for app events, web otherwise.

No email or name is sent. Session AI predicts intent and personalises within the session; it does not message the visitor, so under Signal’s rule for personal data it receives none, and its API documents no hashed email to send instead (see Personal data by integration).

Event Mapping

Signal’s GA4-style event names are mapped to Session AI event names. Event attributes are sent as flat key/value pairs inside each object in the events array. Session AI stamps the receive time server-side, so no timestamp is sent.

Signal eventSession AI event
pagePageView
searchSearch
view_itemProductPageView
add_to_cartAddToCart
remove_from_cartRemoveFromCart
view_cartCartView
begin_checkoutCheckoutStart
purchasePurchase
sign_upSignUp
loginLogin

Example

A product view captured by Datafly.js from an anonymous visitor:

datafly.track("view_item", {
  currency: "gbp",
  value: 129.99,
  items: [{ item_id: "SKU-1", item_name: "Parka Jacket", item_category: "Jackets", price: 129.99 }]
});

is delivered to Session AI as:

{
  "device_id": "df_anon_p2_0001",
  "os": "web",
  "events": [
    {
      "event": "ProductPageView",
      "productId": "SKU-1",
      "productName": "Parka Jacket",
      "category": "Jackets",
      "price": "129.99",
      "currency": "GBP"
    }
  ]
}

Once the visitor is identified, cid (the user ID) is added at the root. Session AI treats attribute values as strings.

Testing

  1. Trigger a mapped event on your site (e.g. view a product).
  2. In Signal’s Event Debugger, confirm the event was delivered to Session AI and the response was 202 Accepted.
  3. In the Session AI console, use Retrieve Customer Activity for the test customer id (cid) to confirm the event landed and carries the expected attributes.

Troubleshooting

SymptomLikely causeFix
401 / 403 responseInvalid or unscoped API keyRegenerate the API key for the channel and confirm it is authorised for inbound events.
404 responseUnknown channelCheck the Channel Name matches a REST/webhook channel that exists in the console.
400 responseMissing event name or malformed bodyConfirm the Signal event is mapped to a Session AI event name in the preset.
202 but nothing in the activity streamWrong customer id or wrong tenant hostVerify cid is being sent and that API Host matches your tenant’s region.
Events for the wrong regionDefault host used for a regional tenantSet API Host to your tenant’s cloud host.