server-track-labby Marc Stevens

server-track-lab API reference

Base URL https://server-track-lab.pages.dev. Machine-readable: OpenAPI 3.1 · llms.txt. Pricing: free 1,000 events/month, then CA$2 per 1,000. Status: Meta CAPI live; Google Enhanced Conversions coming soon (preview only); LinkedIn on the roadmap.

Authentication

Get a key at /signup. Send Authorization: Bearer sst_live_… (or X-API-Key). Missing or wrong key: 401 unauthorized.

POST /api/v1/track

JSON body, max 32 KB, Content-Type: application/json.

FieldRules
event_name (required)1-64 chars [a-z0-9_] (lowercased). Alias: event.
event_id (required)≤128 chars [A-Za-z0-9._:-]. Repeats within 72h return deduplicated and are not re-sent. Forwarded to Meta unchanged.
timestamp (required)ISO 8601 with Z or offset; ≤5 min in the future. Meta drops events older than 7 days.
user (required)At least one of email, phone, external_id, fbp, fbc, fbclid, gclid, gbraid, wbraid. Also first_name, last_name, country (2-letter), ip, user_agent. Raw values are normalized + SHA-256 hashed for you; 64-char hex is treated as pre-hashed. Phone needs a country code (or a workspace default).
value, currencyvalue ≥0, max 2 decimals; currency [A-Z]{3}, required when value > 0 and for closed_won.
event_source_urlhttp(s) URL.
action_sourcewebsite, system_generated, crm (sent as system_generated), phone_call, email, chat, other. Default: website if user_agent + event_source_url present, else system_generated.
consent{ad_user_data, ad_personalization}: granted | denied.
destinations["meta"], ["google"] (preview) or both.
testboolean; sends to Meta Test Events with your test_event_code.
properties≤20 scalar keys, ≤2 KB; merged into Meta custom_data.

Event name mapping (Meta)

You sendMeta event_name
signupCompleteRegistration
leadLead
trial_startedStartTrial
demo_bookedSchedule
contactContact
qualifiedLead + custom_data.event_stage=qualified
opportunityqualified_opportunity
subscribedSubscribe
closed_wonPurchase (value + currency required)
anything elsepassed through
curl -X POST https://server-track-lab.pages.dev/api/v1/track \
  -H 'Authorization: Bearer sst_live_YOUR_KEY' -H 'Content-Type: application/json' \
  -d '{"event_name":"demo_booked","event_id":"demo_booked:8f3a2c71","timestamp":"2026-10-14T15:04:05Z","user":{"email":"jane@example.com"}}'

Response 200: {"status":"accepted"|"deduplicated","event_id":…,"destinations":{"meta":{"status":"sent"|"skipped"|"failed",…}},"usage":{…}}. Errors: {"error":{"code","message","fields"?}} with 400 invalid_json, 401 unauthorized, 402 quota_exceeded, 405, 413 payload_too_large, 415 unsupported_media_type, 422 validation_error.

GET /api/v1/health

No auth. {"ok":true,"service":"server-track-lab","version":"0.1.0","google_adapter":"stub"}

POST /api/v1/playground

No API key. Body {"event":{…same as /track…},"turnstile_token":"…"}; Turnstile-protected, 20 runs/hour per IP. Stores nothing, no quota. Returns validation, the exact Meta CAPI body, a Google preview and dedup notes; Meta delivery is a dry run. Easiest via the playground page.

Related

Hashing tool · event_id generator · CAPI payload validator · Dedup guide · Form & CRM guide

Ready? Get a free API key (1,000 events/month free).