Skip to content
WeZend

Customer Data Platform

Sporing af events

Send behavioral events ind i CDP'en med det offentlige, kun-skrivende tracking-endpoint.

POST /v1/events/track er et offentligt, kun-skrivende endpoint bygget til at blive kaldt direkte fra en kundes eget website — det kan modtage events, men kan ikke læse noget tilbage, så det er sikkert at kalde med blot en offentlig nøgle, i modsætning til jeres primære API-nøgle.

Spor en enkelt event

curl -X POST https://api.wezend.com/v1/events/track \
  -H "Content-Type: application/json" \
  -d '{
    "public_key": "wz_pk_...",
    "event": "product_viewed",
    "identifiers": { "email": "anna@example.com" },
    "properties": { "sku": "DK-1180", "price": 499 }
  }'

En enkelt event returnerer 202 { "ok": true }.

Events knyttes til en kontaktprofil via identifiers (email eller telefon) — en event uden identifiers (eller et anonymous_id) accepteres, men kan aldrig knyttes til en kontaktprofil.

Batch af events

{
  "public_key": "wz_pk_...",
  "events": [
    { "event": "product_viewed", "identifiers": { "email": "anna@example.com" }, "properties": { "sku": "DK-1180" } },
    { "event": "add_to_cart", "identifiers": { "email": "anna@example.com" }, "properties": { "sku": "DK-1180", "qty": 1 } }
  ]
}

returnerer 202 { "accepted": 2, "rejected": 0 }.

Origin-begrænsning

I kan sende nøglen som X-ZC-Key i stedet for i body'en. Hver offentlig nøgle kan valgfrit begrænses til en tilladelsesliste af origins, så en lækket nøgle kun kan bruges til at sende events fra jeres eget domæne — en tom liste betyder alle origins. GET /v1/account/tracking-key returnerer den nøgle sammen med et klar-til-indsættelse-<script>-snippet, og PUT /v1/account/tracking-origins sætter tilladelseslisten (fx ["https://shop.eksempel.dk"]).

Identificér en navngiven kontakt

Event-tracking navngiver ingen og kræver derfor ingen signatur: den offentlige nøgle identificerer jeres konto og intet andet. Alt, der taler på en navngiven kontakts vegne, kræver en — in-app-indbakken (POST /v1/inapp/feed, POST /v1/inapp/read) og det at hænge en push-enhed på en kontakt (POST /v1/push/subscribe med en email). Den offentlige nøgle ligger i jeres sidekilde, så den kan aldrig i sig selv bevise, at den besøgende er netop én bestemt af jeres kontakter.

De kald tager en signatur, jeres egen server producerer — user_hash = HMAC-SHA256(lowercase(trim(email)), jeres identitets-secret), hex:

// your backend, when rendering the page — never in browser code
const crypto = require("crypto");
const email = user.email.trim().toLowerCase();
const userHash = crypto.createHmac("sha256", process.env.WEZEND_IDENTITY_SECRET)
                       .update(email).digest("hex");
// hand userHash to the page next to the email, then: wezend.identify(email, userHash)

Sæt adressen til små bogstaver og trim den før hashen. Vi gør det samme, så Anna@Firma.dk og anna@firma.dk verificerer som samme kontakt — opslaget bag signaturen er også case-insensitivt. Signerer I den rå streng, får en bruger der skrev et stort bogstav en 403, der ser ud som vores fejl.

Secreten hentes fra GET /v1/account/tracking-identity (dashboard: Indstillinger → Tracking) og er ikke den offentlige nøgle — hold den på jeres server. POST /v1/account/tracking-identity/rotate udsteder en ny og ugyldiggør hver hash, der allerede er beregnet, så udrul den nye secret før I roterer. Et kald, der kræver en signatur og kommer uden, afvises med 403 og identity_required: true. Push-registrering kan springe det over ved at udelade email — enheden er så anonym. Slår I kravet helt fra (PUT /v1/account/tracking-identity med { "require_identity": false }), kan enhver, der læser jeres sidekilde, hente enhver kontakts beskeder ved at oplyse adressen, så gør det kun, hvis I ikke har identificeret trafik.

Hvad sker der bagefter

Når events ankommer, genberegnes beregnede traits, og segment-medlemskab opdateres i realtid — enhver journey, der overvåger den trigger eller det segment, kan udløses øjeblikkeligt, uden et batch-job involveret.

Én platform. Hver eneste kundeinteraktion.

Erstat dit kludetæppe af messaging-API'er, CDP og automatiseringsværktøjer med én engagement-platform bygget til skala.

Intet kreditkort · EU-datalagring · 99,99 % oppetids-SLA