Tracking quickstart

From zero to events flowing in 5 minutes — pixel snippet, server-side example, dedup tip.

Tracking quickstart

Skryx tracking is dual-channel: a browser pixel + a server-side API. Both feed into the same event store. Same event_id from both channels gets counted once (deduplication). Pick the pixel for ease, add server- side events for accuracy on conversions / orders.

# 1 · Create a public key

The pixel runs in the browser, so it ships a public key (pk_live_…) that's safe to expose. Different prefix from sk_live_… so leaks are visually obvious in code reviews.

  • Open /settings/api-keys in your dashboard
  • Click Create API Key
  • Pick Type = Public
  • Copy the key — you'll only see it once

# 2 · Drop the pixel snippet into your site

Paste this into your site's <head> (or anywhere; defer keeps it off the critical path):

<script src="https://cdn.skryx.io/pixel.js"
        data-key="pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        defer></script>

That's it. The pixel auto-fires:

  • page.viewed on load
  • search.performed when the URL has ?q=, ?s=, ?search= or ?query=
  • result.clicked (and any other event) on any element you mark with data-skryx-track="event.name" (more below)

# 3 · Watch it work

Open /tracking in the dashboard. Within 30 seconds of the first event you should see:

  • Pixel · Receiving in the integration status card
  • The event in the Live feed panel
  • The counter incrementing in Top events · 24h

# 4 · Mark up click targets

For events you want on specific elements (product cards, "Add to cart" buttons, pagination links), add data-skryx-* attributes. The pixel auto-instruments them — no per-element JS:

<a href="/product/SKU-123"
   data-skryx-track="result.clicked"
   data-skryx-result-id="SKU-123"
   data-skryx-position="3"
   data-skryx-query="wireless headphones">
   Sony WH-1000XM5
</a>

Every data-skryx-* attribute except data-skryx-track becomes a property on the event (snake-case). Numbers are auto-coerced from strings: data-skryx-position="3" becomes position: 3, not "3".

# 5 · Add server-side events for orders

The pixel can miss the order.completed event if the user closes the tab on the thank-you page. Send it from your backend too — same event_id to dedupe:

curl -X POST https://api.skryx.io/v1/events \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "events": [{
      "event_id": "ord_42",
      "event_name": "order.completed",
      "occurred_at": "2026-05-26T14:42:00Z",
      "session_id": "sess_…",
      "source": "server",
      "properties": {
        "order_id": "42",
        "total": 199.99,
        "products": [{"id":"SKU-123","quantity":1,"price":199.99}]
      }
    }]
  }'

If you also send the same event_id from the pixel (evt_… doesn't matter — what matters is matching what the server sends), Skryx deduplicates server-side and counts the order once. Pixel + server combo is how Meta's Conversion API works; same shape here.

# Next

esc