Skip to main content

The activity envelope

One activity as it travels to POST /v1/activities. Its features are checked against the activity's catalogue entry; the envelope is the same for every activity.

{
"activity_id": "0192f1a4-7c3e-7b21-9d0a-5e3f8c2a1b45",
"activity": "completed_order",
"ts": "2026-10-17T20:00:00+02:00",
"owner_ref": "evx:ee69a000-d48d-11ec-8515-8b933281c556",
"identifiers": [
{ "type": "email", "value": "ana@example.com", "role": "buyer" },
{ "type": "phone", "value": "06 24681357", "role": "buyer" }
],
"anonymous_customer_id": "evx_web_8f21c0",
"revenue": { "amount": "45.00", "currency": "EUR" },
"features": { "order_id": "…", "ticket_count": 2, "touch": { "utm": { "source": "newsletter" } } },
"geo": [{ "kind": "home", "role": "buyer", "city": "Amsterdam", "postal_code": "1012 AB", "country": "NL" }],
"link": "https://dashboard.eventix.io/orders/…",
"_source": "platform:weeztix@order-v10"
}
FieldRequiredMeaning
activity_idyesA UUID. The idempotency key: the same id twice stores one activity. Derive it from what the activity is, so a retry can never double-count.
activityyesThe name in the catalogue: a core name such as issued_ticket, or an organiser's own custom.….
tsyesWhen it happened, RFC 3339 with an offset. The payment's move to paid, not the moment of sending.
owner_refwith a platform or group keyThe organiser the activity belongs to, as <type>:<value>: evx: an Eventix company id, wzt: a Weeztix id, own: an owner id. With a single-owner key it is optional and must match.
ownernoWith a platform key: { "name", "country" } registers an organiser on first mention.
identifiersnoWho the activity is about: a list of { type, value, role, namespace, confidence }. See identifiers.
anonymous_customer_idnoThe visitor's anonymous id (evx_web_…), when the activity happened in a browser the SDK knows. It becomes a device identifier.
revenueonly on revenue-bearing activities{ "amount": "45.00", "currency": "EUR" }: a decimal string, never a number. See revenue.
featuresdepends on the activityThe activity's own fields, as its page lists them, with the touch block where the activity carries one.
geonoWhere the people on the activity live or were. See the geo block.
linknoA deep link to the record in the sending system, for support.
_sourcenoA platform sender's provenance, e.g. platform:weeztix@order-v10. Other senders get it from their key class.

Anything the processor moves out of features (identifier and attribute fields) is not stored with them; what it stores is the features the catalogue declares, plus the touch block where the activity carries one.

A batch​

The request body is { "batch": [ …activities… ] }, up to 500 KB, with optional writeKey (a browser key), traceparent (W3C trace context, when the header cannot be set) and debug (return the verdicts). The batch is accepted or refused as a whole; refusals concern the key, the owner, the limits or an activity that is not one. See sending activities.