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-keysin 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.viewedon loadsearch.performedwhen the URL has?q=,?s=,?search=or?query=result.clicked(and any other event) on any element you mark withdata-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
- Pixel reference — every option + advanced patterns
- Server API — batch ingest from any backend
- Event reference — complete taxonomy
- Deduplication — the why + how of pixel + server combos
- Privacy — what's tracked without consent