Sklik

Datafly Signal delivers events to Seznam Sklik server-to-server using Seznam Event Measurement (SEM), Sklik’s event model that replaced the legacy retargeting and conversion-code scripts. Signal posts events directly to the SEM Server-to-Server (S2S) endpoint, so conversion and retargeting signal keeps flowing even when the browser pixel is blocked, and personal data is SHA-256 hashed before it ever leaves your infrastructure.

Prerequisites

  • A Sklik account with Seznam Event Measurement activated. SEM is required for the S2S endpoint; accounts still on the legacy conversion code must migrate first.
  • A dedicated S2S SEM ID. This is distinct from the SEM ID used by the browser sul.js script. Obtain it from your Sklik account settings or Sklik support.
  • The sul.js SEM script deployed on your website. It sets the first-party sid and udid cookies that Signal reads and forwards with every server-side event so Sklik can match the browser session to the S2S event.
  • (Recommended) Capture of the Sklik click identifier sznaiid from the landing-page URL parameter, used for anonymous conversion modelling.

Configuration

FieldRequiredDescription
S2S SEM IDYesYour Server-to-Server SEM ID. Sent in the event body as event_data.sem_id; Sklik attributes events to your account by this value.

There is no API key or bearer token. Authentication is the S2S SEM ID carried in the request body.

Configure in Signal

  1. In the management UI, open Integrations and add Sklik.
  2. Enter your S2S SEM ID.
  3. Attach the Sklik integration to a pipeline and select the Retail preset (or build your own event mapping).
  4. Save and enable. Signal begins delivering matched events to Sklik immediately.

API Endpoint

POST https://sem.seznam.cz/rtgconv
Content-Type: application/json

Each event is a JSON document using SEM schema_version v2 and event_type rtgconv. Signal sets event_source to web, event_time as a Unix timestamp in milliseconds, and a unique event_id so the server-side event de-duplicates against any browser-side sul.js event for the same action.

Identity Signals

Sklik matches events using a combination of first-party cookies and hashed personal data. Signal populates the following under user_ids.user_data:

FieldSourceHashing
sid, udidFirst-party sul.js cookiesNone (first-party identifiers)
emEmailNormalised + SHA-256
phPhoneE.164 + SHA-256
fn, lnFirst / last nameNormalised + SHA-256
ct, zp, countryCity, postal code, countryNormalised + SHA-256

The Sklik click id sznaiid is sent in event_data for click-based attribution. The visitor IP and user agent are sent in the s2s_headers object as required by the S2S spec. Consent is mapped to Consent Mode v2 (ad_storage, ad_user_data, ad_personalization set to granted or denied) from your canonical marketing consent signal.

Event Mapping

Signal’s GA4-style event names map to the standard SEM events:

Signal eventSEM event
pagePageView
Products SearchedSearch
Product ViewedViewContent
Product AddedAddToCart
Product Added to WishlistAddToWishlist
Checkout StartedInitiateCheckout
Payment Info EnteredAddPaymentInfo
Order CompletedPurchase
Lead GeneratedLead
Signed UpCompleteRegistration
Callback RequestedContact

Example

A purchase tracked with Datafly.js:

datafly.track("Order Completed", {
  order_id: "OBJ-987654",
  revenue: 273.64,
  currency: "CZK",
  tax: 57.46,
  shipping: 1.21,
  payment_type: "karta",
  products: [
    { product_id: "SKU-1", product_name: "Boots", category: "footwear", price: 273.64, quantity: 1 }
  ]
});

is delivered to Sklik as:

{
  "schema_version": "v2",
  "event_type": "rtgconv",
  "event_source": "web",
  "event_name": "Purchase",
  "event_id": "018e4f2a-1234-7abc-9def-0123456789ab",
  "event_time": 1770134113676,
  "event_url": "https://shop.example.cz/dekujeme",
  "user_ids": {
    "user_data": {
      "sid": "a1b2c3...",
      "udid": "d4e5f6...",
      "em": "5e88489...<sha256>",
      "ph": "f1d2d2f...<sha256>"
    }
  },
  "event_data": {
    "sem_id": "100123456",
    "sznaiid": "2627214859780792651",
    "order_id": "OBJ-987654",
    "currency": "CZK",
    "value": 273.64,
    "value_tax": 57.46,
    "delivery_price": 1.21,
    "payment_type": "karta",
    "contents": [
      { "id": "SKU-1", "content_name": "Boots", "content_category": "footwear", "unit_price": 273.64, "quantity": 1 }
    ]
  },
  "consent_mode": {
    "ad_storage": "granted",
    "ad_user_data": "granted",
    "ad_personalization": "granted"
  },
  "s2s_headers": {
    "client_ip_address": "77.75.74.172",
    "user_agent": "Mozilla/5.0 ..."
  }
}

Testing

  1. Trigger a tracked action (for example complete a test order).
  2. In the management UI Event Debugger, confirm the event was delivered to Sklik and the response status is 200.
  3. In your Sklik account, open the SEM / conversion reporting and confirm the event appears (allow for Sklik’s processing delay).
  4. Verify em / ph and other personal fields are present and hashed, and that sid / udid are populated (they are blank if sul.js is not running on the site).

Troubleshooting

  • 401 / 403 — the S2S SEM ID is missing or invalid, or SEM is not activated on the account. Confirm you are using the S2S SEM ID, not the browser sul.js SEM ID.
  • 400 — malformed payload. Check that required purchase fields (order_id, value, currency) are mapped and that event_time is Unix milliseconds.
  • Low match rate / events not attributed — confirm sul.js is deployed so sid and udid are captured, and that sznaiid is being read from the landing-page URL. Without these, Sklik falls back to hashed personal data only.
  • Events not appearing — Sklik reporting has a processing delay; allow time before assuming delivery failed. Confirm in the Event Debugger that Signal received a 200.