- The endpoints exist when your account has Customer data; otherwise they answer
404 module_off. Your plan must include the OMNI API too. - Their scopes start with
cdp.:cdp.events:write,cdp.audiences:read,cdp.audiences:write,cdp.contacts:read,cdp.contacts:write.
Sending events from your server
Events from your server go to the same addresses as always, with an OMNI API key that has thecdp.events:write scope.
- Each answers
202 {"accepted": n}: the events are taken, and applied in the background. One that can’t be applied is dropped without stopping the rest, and shows with its reason under Live events on Settings → Data sources. - A request is at most 256 KB (
413 too_large), and a batch at most 100 events. - An event never creates a contact on its own, and
identifycreates one only with aphone. People without a phone are kept as visitors, and what they did joins the contact once a phone is known. - Event names FireFlo writes itself — starting
message.,deal.,audience.,consent.and the like — are refused.
Moving from source keys
The addresses, the bodies and the answers are unchanged — only the key is different.1
Make an OMNI API key
In Developer Tools → API keys, make a key with the scope
cdp.events:write (“Send events: identify, track and
batch”). Copy it: it is shown once. See
Keys and scopes.2
Swap the key
On your server, change the
Authorization header from Bearer sk_live_… to
Bearer ff_live_…. Nothing else changes.3
Check it arrives
Send an event, and look for it under Live events on Settings → Data sources.
- An OMNI API key works only with the OMNI API in your plan.
- An OMNI API key can be limited to the addresses your server sends from, like any other key.
- Website keys (
pk_live_…) and the website snippet are unchanged: keep them as they are.
Audiences
An audience is a group of people described by rules; people join and leave as they match. Rules are{"match": "all" | "any", "conditions": [...]} — the condition types are
in POST /v1/cdp/audiences.
An audience can be the recipients of a broadcast.
Traits
Traits are facts worked out for every contact — built-in ones from messages, visits and deals, and your own from an event: how many times, when last, or a total, over a window of days. Use a trait’s key in audience rules and its{{trait.key}} merge tag in messages.
Consent
Consent is kept per channel and per purpose: marketing (campaigns, offers) and transactional (replies, order and appointment updates). Every change is recorded with its proof.Duplicates and merging
Webhook events
Add these to a webhook endpoint to hear about them as they happen.audience in these events is shortened here; it is the audience as
GET /v1/cdp/audiences lists it.