Ingest Events
Ingest API
Ingest Events
Send tracking events to Outlit
POST
Ingest Events
Endpoint
Path Parameters
string
required
Your organization’s public key. Starts with
pk_.Request Body
Body Parameters
string
Unique identifier for the visitor (UUID format). Required for browser (
client) tracking. For server-side tracking (server source), this can be omitted; identity or attribution is derived from email, userId, fingerprint, or customerId in the events.string
default:"client"
Event source. One of:
client (browser), server, integration.array
required
Array of event objects to ingest (max 100 per request).
object
Optional user identity for immediate resolution. Used by browser SDK when user is logged in (via
setUser()). Allows direct identity resolution instead of anonymous visitor flow.object
Optional customer/account attribution for the whole batch. Used by browser SDK when the current user carries account/workspace context.
Event Types
All events share these common fields:UTM Parameters
Pageview Event
Track a page view.string
required
Must be
"pageview".string
Page title.
Custom Event
Track any custom event.string
required
Must be
"custom".string
required
Name of the custom event.
object
Key-value pairs of event properties. Values can be string, number, boolean, or null.
Form Event
Track a form submission.string
required
Must be
"form".string
Identifier for the form (ID attribute or name).
object
Key-value pairs of form field values.
Identify Event
Identify the visitor with their email/userId.string
required
Must be
"identify".string
User’s email address. At least one of
email or userId required.string
Your system-owned user/contact ID.
object
Properties to set on the user profile.
string
Your system-owned customer/account/workspace ID. Send it with an identify event when you want that external account/workspace to link to the contact resolved from email or userId.
object
Properties to set on the customer profile.
Engagement Event
Track active time on a page. Automatically sent by the browser SDK.string
required
Must be
"engagement".number
required
Time in milliseconds the user was actively engaged (visible tab + user interactions).
number
required
Total wall-clock time in milliseconds on the page.
string
required
Session ID (UUID) for grouping engagement events. Resets after 30 min of inactivity or tab close.
Calendar Event
Track calendar booking from embedded widgets (Cal.com, Calendly).string
required
Must be
"calendar".string
required
Calendar provider:
"cal.com", "calendly", or "unknown".string
Meeting type name (e.g., “30 Minute Demo”).
string
Scheduled start time (ISO 8601 format).
string
Scheduled end time (ISO 8601 format).
number
Duration in minutes.
boolean
Whether this is a recurring meeting.
string
Invitee’s email (only available via server-side webhooks).
string
Invitee’s name (only available via server-side webhooks).
Response
Success Response
boolean
Whether the request was successful.
number
Number of events successfully processed.
array
Array of processing errors (only present if some events failed).
Partial Success Response (HTTP 207)
When some events succeed and others fail:Error Response
Examples
cURL - Browser Events
cURL - Server Events
JavaScript (fetch)
Python
Server-Side Events
For server-side tracking, thevisitorId field can be omitted. Identity is resolved from the event data, including customer-only attribution when customerId is provided:
- Identify events: Use
emailand/oruserIdfields, plus optional customer context - Custom events: Include top-level
email,userId,fingerprint, and/orcustomerIdfields
Batching Best Practices
For high-volume tracking:- Batch events - Send multiple events per request (up to 100)
- Use background queue - Don’t block user actions
- Retry with backoff - Handle temporary failures
- Flush on shutdown - Send remaining events before exit