Skip to main content
Says who someone is: your customer id for them, their phone, their email or the website visitor id, with traits. The contact it matches gains any of those identifiers it didn’t have, and any trait that is one of your contact fields. With no match, a phone creates the contact; without a phone, nothing is created — the ids are remembered, and what they did joins the contact once a phone is known. Server events need the OMNI API and Customer data in your plan. They take an OMNI API key — not a Customer data source key (sk_live_…), which is now refused.
Needs the cdp.events:write scope.

Body

Send at least one identifier. Send an Idempotency-Key header to take it once however often the request is retried. Events are applied in the background, so the answer only says how many were taken. One that can’t be applied — no one named, a reserved event name, properties too large — is dropped without stopping the rest, and shows with its reason under Live events on Settings → Data sources in the panel.

Request

Response

202 Accepted — taken, to be applied in the background.

Errors

Every refusal is {"error": {"code", "message", "field"}}; field is there when one input is at fault. Any request can also be refused for its key, its account or its rate (key_required, invalid_key, account_suspended, plan_excludes_api, address_not_allowed, rate_limited); see the overview.