payment_made, a checkout_started, a loan_disbursed. Unlike people and
custom objects (which you upsert to a current state), events are an
append-only log: each one is recorded once and read back later, individually
or as a filtered, paginated stream.
Anatomy of an event
At least one subject is required:
personExternalId, or the
customObjectType + customObjectExternalId pair. You may set both (a
person event about an object).Record an event
{ "created": true, "eventId": "evt_db_1" }.
For historical loads, Record events in bulk accepts up to 1000 per request.
Bulk ingest is treated as backfill — it does not fire journey enrollment,
so use the single endpoint for real-time, journey-triggering events.
Read events back
Fetch one by theexternalId you supplied:
Pagination
Every list endpoint (events, people, custom objects) is cursor-paginated. A response carriesnext_cursor; pass it back as ?cursor= to get the next
page, and loop until next_cursor is null:
limit defaults to 100 (max 1000). The cursor is opaque and stable under
concurrent writes — no skipped or duplicated rows.
Related
Quickstart
Record your first event alongside people and objects.
Relationship types
Model the links between the people and objects your events reference.