Documentation
Documentation
Everything needed to install Track, send server events, integrate consent and configure destinations. The dashboard assistant links here for each step.
Three steps to a working setup
Install once, send your events, connect the platforms you use. Each step can be verified in the dashboard before you move on.
Install the snippet
Add one asynchronous script tag to your pages. It loads the signed configuration for your tracking ID and respects consent from the first page view.
You can verifyPage views appear in the event debugger.
Send your events
Use the standard events from the browser, a shop plugin or your server. Purchases carry an order id so the browser and server copies are deduplicated.
You can verifyEvery event shows its consent state and the reason it was delivered or held.
Connect a destination
The guided wizard validates credentials, maps events, sends a real test event and publishes only after your approval.
You can verifyDelivery health and the last successful delivery are shown per destination.
How an event travels
Every event takes the same route, whether it comes from the browser, a shop plugin or your server: Track validates and deduplicates it, evaluates the consent policy and routes it to the destinations you configured.
On this page
Guides
Install the snippet
Add the asynchronous script to every page, ideally in the head. It loads the signed configuration for your tracking ID, respects consent and never blocks rendering. Replace TRACKING_ID with the six-character ID from your dashboard.
<script async src="https://cdn.track.site/v1/tracker.js" data-site-id="TRACKING_ID"></script>Send browser events
Standard events (page_view, view_item, add_to_cart, begin_checkout, purchase, generate_lead, sign_up, subscribe, start_trial, contact, book_appointment, download, search, login) carry validated parameters; custom events use lowercase snake_case names.
window.tsq = window.tsq || [];
tsq.push(["track", "purchase", { order_id: "A1001", currency: "EUR", value: 129.9, items: [{ item_id: "SKU-1", price: 99.9, quantity: 1 }] }]);
tsq.push(["identify", { user_id: "u_42", email: "customer@example.com" }]); // hashed client-side before transportServer API and offline conversions
Create a source key in Settings → Server source keys and send events from your backend, CRM or POS. Provide the same order id as the browser event for deduplication; add props.offline for offline conversions.
curl -X POST https://api.track.site/v1/s \
-H "Authorization: Bearer tsk_..." -H "Content-Type: application/json" \
-d '{"events":[{"name":"purchase","ts":1767225600000,"props":{"offline":true},"commerce":{"order_id":"A1001","currency":"EUR","value":129.9},"user_data":{"email":"customer@example.com"},"click_ids":{"gclid":"Cj0K..."},"consent":{"granted":["necessary","marketing"],"source":"crm"}}]}'Consent integration
Use a supported CMP (TCF 2.2, GPP/GPC, Cookiebot, OneTrust, Usercentrics) — the tracker reads it automatically — or call the consent API from your own banner. Purposes: necessary, analytics, marketing, personalization. Withdrawal stops everything immediately.
tsq.push(["consent", { granted: ["necessary", "analytics", "marketing"], source: "api", policy_version: "2026-09" }]);Destinations
Every destination has a guided wizard: identifiers, vault credentials or OAuth, vendor validation, event mapping with verified defaults, a real test event, lint, diff and approval-gated publish. Browser and server share one event id; purchases add the order id.
- Meta, Google Ads/YouTube, GA4, TikTok, Microsoft, LinkedIn, Reddit, Pinterest, Snapchat
- X, Taboola, Outbrain, Amazon Ads, Spotify, Quora
- Yahoo DSP, The Trade Desk, Google Marketing Platform, AdRoll, Criteo, affiliate postbacks (13 presets), webhooks
Shop platforms
Shopify (app with order webhooks and web pixel), WooCommerce (plugin with signed order webhooks) and Shopware 6 (app with storefront script and order webhooks) send verified purchase and refund events with order ids. Install the plugin, paste the tracking ID and source key, done.
- Verified source: events are marked source_verified and used as the authoritative conversion
- Refunds create negative-value events for vendors that support them
- Browser purchases from the theme are deduplicated by order id
Privacy center and DSAR
Retention windows per data kind, consent policy versions per site and data subject requests (export, delete, restrict, rectify, object, portability) are handled in Consent & Privacy. Requests use hashed identifiers only and produce an audited report.
Endpoints at a glance
All responses are JSON; 202 means the batch is durably queued.
| Endpoint | Purpose | Notes |
|---|---|---|
POST /v1/e | Browser batches | ≤ 50 events per batch |
POST /v1/s | Server batches | ≤ 100 events per batch, Bearer source key |
POST /v1/affiliate/in/{trackingId}/{preset} | Inbound affiliate network postbacks | 13 network presets |
GET /c/{trackingId}/manifest.json | Configuration manifest and signed bundle | Ed25519-signed, verified by the browser SDK |