curl --request POST \
--url https://pub-api.conversion.ai/api/v2/events \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "jane@example.com",
"event": "log_in",
"data": {
"device": "mobile",
"location": "US"
}
}
'{
"data": {
"cnvEventId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"cnvContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}Track Event
Record a custom event for a contact.
curl --request POST \
--url https://pub-api.conversion.ai/api/v2/events \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "jane@example.com",
"event": "log_in",
"data": {
"device": "mobile",
"location": "US"
}
}
'{
"data": {
"cnvEventId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"cnvContactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}Authorizations
Your Conversion API key. Found in Settings > Integrations in the dashboard. Format: sk_live_<key_id>_<secret>.
Body
The name of the custom event to track (e.g. order_completed, log_in). This is a freeform string.
"page_viewed"
An external user identifier for the contact. At least one of userId or email is required. If userId matches a contact, that contact is used. If not, falls back to email. If the email matches a contact that has a different userId, a conflicting_identifier error is returned.
"user_12345"
The contact's email address. At least one of userId or email is required.
"jane@example.com"
An optional client-generated identifier for the event. Use stable identifiers (like order IDs) to make retries idempotent: if an event with this ID already exists, the duplicate is ignored, the existing event is left unchanged, and the response reports success with duplicate: true and the original event's cnvEventId. If omitted, a new event is always created.
"evt_abc123"
An optional map of custom data to attach to the event.
Show child attributes
Show child attributes
{ "product_id": "1234567890", "quantity": 2 }
An optional ISO 8601 timestamp for when the event occurred. Defaults to the current time if omitted.
"2026-03-31T14:30:00Z"
When true, creates the contact if no existing contact matches userId or email. Creating a contact requires an email.
true
Response
Event tracked successfully.
Show child attributes
Show child attributes
Was this page helpful?