curl --request POST \
--url https://pub-api.conversion.ai/api/v2/exports/contact-events \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"parentTypes": [
"WORKFLOW"
],
"occurredAt": {
"start": "2026-01-01T00:00:00Z"
},
"limit": 1000
}
'{
"data": {
"events": [
{
"eventId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contactId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"eventType": "EMAIL_SEND",
"parentType": "EMAIL",
"occurredAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"sourceType": "<string>",
"sourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": {
"emailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"emailName": "<string>",
"sentEmailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isBot": true,
"link": "<string>",
"topicIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"bounceType": "<string>",
"errorMessage": "<string>"
},
"pageVisit": {
"pageUrl": "<string>",
"pageVisitType": "<string>",
"sentEmailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trackingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referrer": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"utmExtra": {},
"landingPageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageRouteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageVersionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adKeyword": "<string>"
},
"formSubmission": {
"formId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pageUrl": "<string>",
"fields": {},
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trackingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referrer": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"utmExtra": {},
"landingPageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageRouteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageVersionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adKeyword": "<string>"
},
"campaignMember": {
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignMemberId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignTypeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignCategory": "<string>",
"statusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"oldStatusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isSuccess": true,
"oldIsSuccess": true,
"fieldKey": "<string>",
"oldValue": "<string>",
"newValue": "<string>"
},
"workflow": {
"workflowId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowRunId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowNodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"audience": {
"audienceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"fieldChange": {
"fieldKey": "<string>",
"oldValue": "<string>",
"newValue": "<string>"
},
"leadConversion": {
"oldSalesforceLeadId": "<string>",
"newSalesforceContactId": "<string>"
}
}
]
},
"pagination": {
"nextCursor": "<string>"
}
}Export Contact Events
Bulk, incremental export of contact events: email, page visit, form submission, campaign member, workflow, audience, field change, and Salesforce lead conversion events. Custom events export from POST /v2/exports/custom-events.
Send filters on the first call, then pass pagination.nextCursor back as cursor until it is null. Persist the last non-null cursor between syncs to resume.
Request access. This endpoint is not enabled by default, contact the Conversion team to request access. Calls from accounts without it return
403 export_not_enabled.
curl --request POST \
--url https://pub-api.conversion.ai/api/v2/exports/contact-events \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"parentTypes": [
"WORKFLOW"
],
"occurredAt": {
"start": "2026-01-01T00:00:00Z"
},
"limit": 1000
}
'{
"data": {
"events": [
{
"eventId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contactId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"eventType": "EMAIL_SEND",
"parentType": "EMAIL",
"occurredAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"sourceType": "<string>",
"sourceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"email": {
"emailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"emailName": "<string>",
"sentEmailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isBot": true,
"link": "<string>",
"topicIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"bounceType": "<string>",
"errorMessage": "<string>"
},
"pageVisit": {
"pageUrl": "<string>",
"pageVisitType": "<string>",
"sentEmailId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trackingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referrer": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"utmExtra": {},
"landingPageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageRouteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageVersionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adKeyword": "<string>"
},
"formSubmission": {
"formId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pageUrl": "<string>",
"fields": {},
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trackingId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"referrer": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"utmExtra": {},
"landingPageId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageRouteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageVersionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adKeyword": "<string>"
},
"campaignMember": {
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignMemberId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignTypeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"campaignCategory": "<string>",
"statusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"oldStatusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isSuccess": true,
"oldIsSuccess": true,
"fieldKey": "<string>",
"oldValue": "<string>",
"newValue": "<string>"
},
"workflow": {
"workflowId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowRunId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowNodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"audience": {
"audienceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"fieldChange": {
"fieldKey": "<string>",
"oldValue": "<string>",
"newValue": "<string>"
},
"leadConversion": {
"oldSalesforceLeadId": "<string>",
"newSalesforceContactId": "<string>"
}
}
]
},
"pagination": {
"nextCursor": "<string>"
}
}Authorizations
Your Conversion API key. Found in Settings > Integrations in the dashboard. Format: sk_live_<key_id>_<secret>.
Body
Only these contacts' events. At most 100.
Only these event types.
EMAIL_SEND, EMAIL_DELIVERY, EMAIL_OPEN, EMAIL_CLICK, EMAIL_BOUNCE, EMAIL_SOFT_BOUNCE, EMAIL_COMPLAINT, EMAIL_UNSUBSCRIBE_ALL, EMAIL_TOPIC_UNSUBSCRIBE, PAGE_VISIT, FORM_SUBMISSION, CAMPAIGN_MEMBER_ADDED, CAMPAIGN_MEMBER_REMOVED, CAMPAIGN_MEMBER_STATUS_CHANGED, CAMPAIGN_MEMBER_FIELD_CHANGED, WORKFLOW_ENTERED, WORKFLOW_EXITED, WORKFLOW_ERROR, AUDIENCE_ADDED, AUDIENCE_REMOVED, FIELD_CHANGE, SFDC_LEAD_CONVERTED Only these event families. With types, an event must match both.
EMAIL, PAGE_VISIT, FORM_SUBMISSION, CAMPAIGN_MEMBER, WORKFLOW, AUDIENCE, FIELD_CHANGE, SFDC_LEAD_CONVERTED Only events that occurred in this half-open range.
Show child attributes
Show child attributes
The opaque cursor returned as pagination.nextCursor by a previous call. Omit it on the first page. Send it without filters, because the cursor carries them; sending both returns invalid_filter.
"eyJ2IjoxLCJmIjp7fSwiayI6ImFiYyJ9"
Moves a walk over from the deprecated Export Email Events endpoint without re-reading it. Send that endpoint's last pagination.nextCursor on the first page, with exactly one EMAIL_* type in types (the type that walk exported) and no other filters. The export resumes where the email events walk stopped. Other filters, or a cursor, return invalid_filter.
The maximum number of rows per page. Defaults to 1000. Values are clamped to [1, 5000].
1 <= x <= 5000Was this page helpful?