Skai (Kenshoo)
Datafly Signal delivers conversions to Skai (formerly Kenshoo) server-to-server using the Infinity Tag conversion endpoint. This reports purchases and leads to Skai for omnichannel ad measurement and optimisation across the walled gardens, without a client-side Skai pixel that can be blocked by ad blockers or browser tracking prevention.
Skai’s Infinity Tag conversion endpoint is a conversion-tracking surface, not a full analytics stream. Only conversion events (purchases, leads, refunds) should be sent to Skai. Page views and intermediate funnel events are dropped automatically.
Prerequisites
Before configuring Skai in Signal you need an active Skai account with a conversion configuration set up, and your Skai-managed ad URLs must carry the Skai click identifier so conversions can be attributed.
Step 1: Get your Skai tracking server and conversion token
- In Skai, open your conversion configuration (Infinity Tag setup).
- Note your tracking server / subdomain — the
SERVER_IDprefix of your*.xg4ken.comendpoint (for example the00inhttps://00.xg4ken.com/trk/v1). - Note your conversion config token — the long alphanumeric value Skai applies to the conversion tag’s
id(cid) parameter.
If you cannot find these, ask your Skai account team for your tracking subdomain and conversion configuration token.
Step 2: Add the Skai click-id macro to your ad URLs
Skai attributes a conversion to a click using a click identifier captured when the visitor lands on your site. Your Skai-managed ad URLs must include the Skai click macro:
https://www.example.com/?k_clickid=_kenshoo_clickid_Skai replaces _kenshoo_clickid_ with the real click id at click time. Datafly.js captures this value on landing and Signal sends it back with each conversion as the kenshoo_id cookie.
Step 3: Confirm your conversion types
Skai conversions carry a conversion type (type, default conv). Confirm the conversion-type strings configured in your Skai account (for example conv for purchases, lead for leads, refund for refunds) so they match the blueprint event mapping.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
subdomain | Yes | Your Skai tracking server / subdomain — the SERVER_ID prefix of your *.xg4ken.com endpoint (e.g. 00). |
token | Yes | Your Skai conversion config token, sent as the id parameter. |
Management UI Setup
Open the integration
Go to Integrations > Add Integration > Skai.
Choose a preset
- Default — purchases and leads.
- Retail — purchases and refunds.
Enter your credentials
Enter your subdomain and token.
Select consent
Select the consent categories that apply (typically advertising or marketing).
Save
Click Save.
API Endpoint
GET https://{subdomain}.xg4ken.com/trk/v1?id={token}&type={conversionType}&track=1&val={revenue}&valueCurrency={currency}&orderId={orderId}&promoCode={promoCode}
Cookie: kenshoo_id={click_id}Skai’s conversion endpoint accepts all fields on the URL query string (there is no request body). The account is identified by the id (token) parameter; the click is attributed by the kenshoo_id cookie.
The endpoint returns HTTP 200 even for hits it cannot attribute. Always confirm delivery in the Skai conversion report, not by HTTP status alone.
Identity Signals
Skai matches a conversion to a click using the Skai click id captured at landing.
| Signal | Field | Description |
|---|---|---|
| Skai click id | kenshoo_id (cookie) | The value of the k_clickid / _kenshoo_clickid_ macro on your Skai-managed ad URLs, captured by Datafly.js and sent back as the kenshoo_id cookie. Required for attribution. |
Skai’s real-time conversion endpoint matches on the click id, not on hashed PII. If you also use Skai’s offline conversion upload (SFTP CSV) for hashed first-party data, that is a separate path and is not configured here.
Event Mapping
Default preset
| Signal event | Skai conversion type (type) |
|---|---|
Order Completed | conv |
Lead Generated | lead |
Retail preset
| Signal event | Skai conversion type (type) |
|---|---|
Order Completed | conv |
Order Refunded | refund |
Parameter mapping
| Signal property | Skai parameter | Notes |
|---|---|---|
properties.order_id | orderId | Unique order/transaction id |
properties.revenue | val | Conversion value |
properties.currency | valueCurrency | ISO-4217 currency code |
properties.coupon | promoCode | Promo/voucher code |
| captured click id | kenshoo_id (cookie) | Attribution |
Example: Purchase conversion
Datafly.js call:
datafly.track("Order Completed", {
order_id: "ORD-001",
revenue: 129.99,
currency: "USD",
coupon: "EASTER"
});Skai request sent by Signal:
GET https://00.xg4ken.com/trk/v1?id=YOUR_TOKEN&type=conv&track=1&val=129.99&valueCurrency=USD&orderId=ORD-001&promoCode=EASTER
Cookie: kenshoo_id=abc123def456To customise, edit the integration’s Field Mappings in the Management UI.
Testing Your Integration
Generate a tracked click
Visit your site through a Skai-managed ad URL (or append ?k_clickid=test123 to a landing URL) so Datafly.js captures a click id.
Trigger a conversion
Complete a purchase (or fire datafly.track("Order Completed", ...)).
Confirm in Signal
Open the Signal Event Debugger and confirm the outbound Skai request carries id, type, val, valueCurrency, orderId, and a kenshoo_id cookie.
Confirm in Skai
Check your Skai conversion report for the conversion against the matching click.
Troubleshooting
| Problem | Solution |
|---|---|
| Conversions not appearing in Skai | Confirm the kenshoo_id cookie is present on the request. If it is empty, the click id was not captured — check that your ad URLs carry k_clickid=_kenshoo_clickid_. |
| Wrong account / no data | Verify subdomain (the *.xg4ken.com prefix) and token (id) match your Skai conversion configuration. |
| Conversion recorded under the wrong type | Confirm the type value (conv / lead / refund) matches a conversion type configured in your Skai account; edit the blueprint event mapping if not. |
| HTTP 200 but nothing in reports | The endpoint returns 200 even for unattributed hits. Verify the click id and token, then check the Skai conversion report rather than the HTTP status. |