This feature is in private preview
This feature is in private preview and therefore is subject to change. If you would like to preview this feature please contact your customer representative or our support team
The export events functionality is designed to allow integrators to call a single service to retrieve events for activity across the whole of Dotdigital instead of having to retrieve data from multiple services. This greatly simplifies getting data out of Dotdigital.
How it works
The Events API allows you to define one or more subscriptions, to a maximum of five, that specify which events you would like capturing for retrieval to facilitate data synchronization with one or more systems.
Once subscriptions are made active, we start capturing and storing the specified events, so that you can then retrieve these events by calling the Retrieve events call on a regular basis to sync the captured events to your platform(s).
We cannot sync historic eventsWe can only capture events that occur after a subscription is made
active. It may take up to 5 minutes before we start capturing events.
Subscriptions
To get started, you must register a subscription using the Create subscription call. Each subscription must have a unique name and by default is created as inactive if you don't specify otherwise.
Event subscriptions
You must specify which event types you want to capture for the subscription, and optional filters to narrow these events down further.
Only subscribe to what you needTo minimize processing overheads on all platforms involved, ensure that you only subscribe to those events you require, and, where possible, further refine the selection using filters.
Subscription status
The status of a subscription is returned and set using the status field. The field can have the following values and subsequent affects on the subscription:
| Status value | Affect |
|---|---|
inactive | Events are not captured for this subscription whilst inactive; this can result in data loss. |
active | Events are captured; may take up to 5 minutes for capture to start after setting this status. |
We suspend inactive subscriptions after 30 daysWe monitor the calls to Retrieve events for each subscription to establish if they are still being used or not. If we don't see any calls to Retrieve events for a subscription within 30 days then we automatically set the status to
inactivefor that subscription.This means events capture stops and data loss will likely occur.
Event filters
When subscribing to events you can and should use filters to further refine the selectivity of what events are captured for your subscription.
You can add up to 5 filters per event.
Filters are comprised of:
-
fieldwhich is a JSON path to the field you want to match the value for, where$.is theeventDatafield in the event. -
matchPatternthe literal value or pattern to match against the value of thefield. You use the following syntax to define the match pattern:*matches any number of any characters including none?matches any single character[abc]matches one character given in the brackets[a-z]matches one character from the range given in the bracket[!abc]matches one character that is not given in the brackets[!a-z]matches one character that is not from the range given in the bracket
Filters use the Unicode character set and ranges must be from lower to higher code points to be valid. e.g.
[a-z]is valid but[z-a]is invalid
All filters must match (logical AND) for the event to be captured.
If you want to match the same event type on multiple different sets of filters (logical OR) then add the event type multiple times to the subscription with differing filters.
The following are examples of creating a subscription by calling Create subscription with filters applied:
{
"status": "active",
"subscribedEventTypes": [
{
"filters": [
{
"caseSensitive": false,
"field": "$.status",
"matchPattern": "read"
},
{
"caseSensitive": true,
"field": "$.campaignDetails.name",
"matchPattern": "new_customer*"
}
],
"eventType": "message.status"
}
],
"alertsConfiguration": {
"alertChannels": "none"
},
"name": "SMS and email"
}{
"status": "active",
"subscribedEventTypes": [
{
"filters": [
{
"caseSensitive": false,
"field": "$.channel",
"matchPattern": "sms"
}
],
"eventType": "message.sent"
},
{
"filters": [
{
"caseSensitive": false,
"field": "$.channel",
"matchPattern": "email"
}
],
"eventType": "message.sent"
}
],
"alertsConfiguration": {
"alertChannels": "none"
},
"name": "SMS and email"
}Retrieving events
Periodically you must call Retrieve events for each active subscription.
The system uses checkpoints to track when events have been synced.
- For a subscription, initially call Retrieve events without the
checkPointparameter. This retrieves the earliest events captured for the subscription and returns acheckPointwhich you must store. - Store the retrieved events for processing later.
- On subsequent calls to Retrieve events, you must pass the previous
checkPointvalue so we know to retrieve events since the last successful call.
Passing a checkPoint value clears dataOnce you have sent the
checkPointfor a page of events they are removed from the queue, so you must not try to retrieve the next page of events using thecheckPointvalue until you have successfully stored the retrieved page of events.
If we return no events in the events array then you have received all the currently queued events. Store the checkPoint and back off for a period of time. Use the stored checkPoint next time you want to sync to resume from where you left off.
Retrieving files and other large content
Our events are limited to 900KB in size to ensure they remain a manageable size for processing and handling. If the content of a field such as an attached file or a large message can exceed this limit then instead of passing the data in the event itself we will instead pass a LOB Id (Large OBject Identifier). This LOB Id can be used in with the Retrieve large object call to retrieve the actual data.
Events
Event families
The following families of events exist:
- Contacts
- Messages
- Interactions
- Insight data
The event envelope
Each event will be placed in a standardized envelope to make handling the event simple by providing common attributes for events such as id, type, account and event date.
The envelope schema is:
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Unique identifier for the event. |
| accountId | integer | Yes | Dotdigital account id |
| processedDate | string | Yes | Date time in ISO 8601 format based on UTC when the event was processed by the Events API. |
| eventDate | string | Yes | Date time in ISO 8601 format based on UTC when the event occurred. |
| type | string | Yes | The type of event contained with the data field. |
| data | object | Yes | The events data as a object. |
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.created",
"data": {
<< Event data here >>
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.created",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channelProperties": {
"email": {
"emailType": "Html",
"optInType": "Double",
"status": "notSubscribed"
},
"sms/mms/rcs": {
"countryCode": "GB",
"status": "notSubscribed"
},
"whatsApp": {
"status": "notSubscribed"
}
},
"dataFields": {
"firstName": "John",
"lastName": "Doe",
"gender": "male",
"brandFan": true,
"age": 21,
"lastPurchasedDate": null
}
}
}Contact events
Contact events inform you about all activity relating to contacts within Dotdigital. This includes creations, updates, deletes, channel status updates, preference updates and consent.
contact.created
Contact Created
Triggered when a new contact is created / added to the account.
Note
- All identifiers are sent to allow correlation.
- All data fields are included.
- All channel properties are included.
nullvalues are sent for fields that have no value.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers |
channelProperties | Yes | object, see below: | Current channel statuses |
No | object, see below: | Email channel properties | |
| Yes | string, enum: | Channel opt-in type for the contact |
| Yes | string, enum: | Current marketing status of the channel for the contact |
| No | object, see below: | SMS channel properties |
| Yes | string | ISO 3166-1 alpha-2 country code the contacts |
| Yes | string, enum: | Current marketing status of the channel for the contact |
No | object, see below: | WhatsApp channel properties | |
| Yes | string, enum: | Current marketing status of the channel for the contact |
dataFields | Yes | object | The data fields for the contact. |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.created",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channelProperties": {
"email": {
"emailType": "Html",
"optInType": "Double",
"status": "notSubscribed"
},
"sms/mms/rcs": {
"countryCode": "GB",
"status": "notSubscribed"
},
"whatsApp": {
"status": "notSubscribed"
}
},
"dataFields": {
"firstName": "John",
"lastName": "Doe",
"gender": "male",
"brandFan": true,
"age": 21,
"lastPurchasedDate": null
}
}
}contact.removed
Contact Removed
Triggered when a contact is removed from the account, when an API or manual action deletes a contact.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
| Fields | Required | Data type | Description |
|---|---|---|---|
| contactId | Yes | integer | The immutable identifier for the contact |
| identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.removed",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
}
}contact.updated
Contact Updated
Triggered when a contact is updated; changes covered are with identifiers, data fields and channel properties.
Note
- All identifiers are sent to allow correlation.
- All data fields are included.
- All channel properties are included.
nullvalues are sent for fields that have no value.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers |
channelProperties | Yes | object, see below: | Current channel statuses |
No | object, see below: | Email channel properties | |
| Yes | string, enum: | The format the contact expects emails in. |
| Yes | string, enum: | Channel opt-in type for the contact |
| Yes | string, enum: | Current marketing status of the channel for the contact |
| No | object, see below: | SMS channel properties |
| Yes | string | ISO 3166-1 alpha-2 country code the contacts mobileNumber |
| Yes | string, enum: | Current marketing status of the channel for the contact |
No | object, see below: | WhatsApp channel properties | |
| Yes | string, enum: | Current marketing status of the channel for the contact |
dataFields | Yes | object | The data fields for the contact. |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.updated",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channelProperties": {
"email": {
"emailType": "Html",
"optInType": "Double",
"status": "notSubscribed"
},
"sms/mms/rcs": {
"countryCode": "GB",
"status": "notSubscribed"
},
"whatsApp": {
"status": "notSubscribed"
}
},
"dataFields": {
"firstName": "John",
"lastName": "Doe",
"gender": "male",
"brandFan": true,
"age": 21,
"lastPurchasedDate": null
}
}
}contact.membershipUpdated
Contact list / segment membership changed
Triggered when a contact is added, removed, subscribed or unsubscribed to a list or segment; for simplicity the actions _added _and _subscribed _are amalgamated to subscribed, and _removed _and _unsubscribed _to unsubscribed.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
| contactId | Yes | integer | The immutable identifier for the contact |
|---|---|---|---|
| identifiers | Yes | object | Any identifiers for the contact |
| id | Yes | integer | The identifier for the list or segment |
| type | Yes | string enum: - list - segment | The type of membership change. |
| name | Yes | string | The name of the list / segment |
| action | Yes | string enum: - added - removed | Whether the contact is being added or removed |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.membershipUpdated",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"id": 1234,
"type": "list",
"name": "VIP customers",
"action": "subscribed"
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.membershipUpdated",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"id": 4321,
"type": "segment",
"name": "Big spenders",
"action": "unsubscribed"
}
}contact.consentAdded
Contact consent added
Triggered when a contact has a consent record added.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers |
record | Yes | object (see below) | The consent record |
| Yes | string | Consent text displayed to the contact |
| Yes | string | ISO 8601 UTC timestamp for when the consent was obtained |
| Yes | string | URL the consent was obtained with |
| Yes | string | IP v4/v6 address of the contact the consent was obtained for |
| Yes | string | User agent header of the browser used by the contact the consent was obtained for |
| Yes | string | ISO 8601 UTC timestamp for when the consent record was created |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.consentAdded",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"record": {
"text": "Yes, I would like to receive a monthly newsletter",
"consented": "2025-04-29T15:32:43.300Z",
"url": "http://www.example.com/signup",
"ipAddress": "129.168.0.2",
"userAgent": "Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36",
"created": "2025-04-29T15:32:43.300Z"
}
}
}contact.preferenceUpdated
Contact preference updated
Triggered when a contact has changed a preference.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
preference | Yes | object (see below) | The changed preferences |
| Yes | integer | ID of the preference |
| Yes | boolean | Indicates whether the contact is opted into this preference |
| Yes | string | Public name of the preference |
| Yes | string | Private name of the preference |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "contact.preferenceUpdated",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"preference": {
"id": 1,
"isOptedIn": true,
"publicName": "Mens fashion",
"privateName": "mensFashion01"
}
}
}Interaction events
Interaction events inform you when a contact has performed a specific interaction such as clicking a button or link, unsubscribing opening a push message etc...
interaction.unsubscribe
Unsubscribe from a channel
Triggered when a contact tries to unsubscribe regardless of if this actually changes the status for the channel. Only events that can be directly attributed to a end user action like clicking a link, tapping a button etc… would trigger this event. For example this would be raised when:
- Clicking an email unsubscribe link
- Clicking a link to open a preference center
- Replying “STOP” to an sms/mms/rcs
- Click on the SMS unsubscribe link
- WhatsApp user unsubscribe, replying “STOP”
Note
- All identifiers are sent to allow correlation.
- Only channel properties sent for those that have changed.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
channel | Yes | string enum: | Channel affected |
status | Yes | string enum: | Current status for the channel |
reason | Yes | string enum: | Reason for channel update (if available) |
messageId | No | string | The message id related to this unsubscribe if applicable. |
campaignDetails | No | object (see below) | Details of the campaign the unsubscribe is associated with if applicable |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign |
additionalData | No | object | Any additional event data |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.unsubscribe",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channel": "email",
"status": "unsubscribed",
"reason": "unsubscribeClick",
"messageId": "12G8G3_A3PWN_4H35TY",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.unsubscribe",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channel": "email",
"status": "unsubscribed",
"reason": "ispComplaint",
"messageId": "12G8G3_A3PWN_4H35TY"
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.unsubscribe",
"data": {
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"channel": "sms",
"status": "unsubscribed",
"reason": "response",
"campaignDetails": {
"id": 434232,
"name": "Deal of the day",
"type": "standard"
}
}
}interaction.click
Click interaction
Triggered when a page is viewed and tracked.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
url | Yes | string | The URL viewed |
linkType | Yes | string enum: | The type of link being viewed |
shorteningDetails | No | object see below: | Link shortening details if shortened. |
| Yes | string | URL prior to shortening |
page | No | string | The pages title, or landing pages name |
pageId | No | integer | The landing page id if known |
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
usedCookie | No | boolean | Indicates whether tracking cookie was used or not. |
ipAddress | No | string | IP address of viewer, if known |
userAgent | No | string | The user agent string of the browser. |
messageId | No | string | The message id related to this interaction if applicable. |
campaignDetails | No | object (see below) | Details of the campaign if applicable |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign |
program | No | object see below: | Automation program details if applicable |
| Yes | int | Automation program id if applicable |
| Yes | string | Automation program name |
productRecommendation | No | object see below: | Details of the product recommendation that referred to this page if applicable |
| Yes | integer | Product rec id |
| Yes | string | Product rec name |
| Yes | string | Product rec type |
roiMarkers | No | array of object see below: | ROI tracking if applicable |
| Yes | string | Name of ROI marker |
| Yes | string enum: | Data type of maker |
| Yes | string | Value of marker |
| Yes | boolean | Overridable indicator |
additionalData | No | object | Any additional event data that is specific to the linkType |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.click",
"data": {
"url": "https://somebrand.com/offers/123",
"linkType": "link",
"page": "Weeks best deals",
"usedCookie": false,
"by": {
"contactId": 12345,
"identifiers": {
"email": "[email protected]"
}
},
"ipAddress": "192.168.1.2",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"roiMarkers": [
{
"name": "marker1",
"type": "string",
"value": "7557da5e-a28b-4870-b270-f0ba973a28eb",
"isOverridable": false
}
]
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.click",
"data": {
"url": "https://r1.dotdigital-pages.com/p/57GV-CLE",
"linkType": "landingPage",
"page": "test",
"by": {
"contactId": 12345,
"identifiers": {
"email": "[email protected]"
}
},
"ipAddress": "192.168.1.2",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.click",
"data": {
"url": "https://r1.dotdigital-pages.com/p/57GV-CLE",
"linkType": "smsLink",
"shorteningDetails": {
"originalUrl": "https://www.dotdigital.com/"
},
"page": "Dotdigital",
"by": {
"contactId": 12345,
"identifiers": {
"email": "[email protected]"
}
},
"ipAddress": "192.168.1.2",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}interaction.pushClick
Push click interaction
Triggered when a push notification with a link / deep link is clicked.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
messageId | Yes | string | Unique id for message |
sent | Yes | string | ISO 8601 UTC time of the push send |
program | No | object see below: | Automation program details if applicable |
| Yes | int | Automation program id if applicable |
| Yes | string | Automation program name |
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
additionalData | No | object | Any additional event data |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.pushClick",
"data": {
"messageId": "20762495-2c44-4409-b301-31b66e5cc89c",
"sent": "2025-05-01T11:23:00.000Z",
"program": {
"id": 4321,
"name": "welcome_2025"
},
"contactId": 12345,
"identifiers": {
"email": "[email protected]"
}
}
}interaction.socialShare
Social Share interaction
Triggered when a link in an email campaign is shared to a social network.
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
contactId | Yes | integer | The immutable identifier for the contact |
identifiers | Yes | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
messageId | No | string | The message id related to this interaction if applicable. |
campaignDetails | No | object (see below) | Details of the campaign if applicable |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign |
ipAddress | Yes | string | IP address of clicker |
bookmarkName | Yes | string | Bookmark name clicked |
viewType | Yes | string enum: | The type of link being viewed |
additionalData | No | object | Any additional event data |
Example
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "interaction.socialShare",
"data": {
"contactId": 12345,
"identifiers": {
"email": "[email protected]"
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"ipAddress": "192.168.0.1",
"bookmarkName": "xyz",
"viewType": "share"
}
}Message events
Message events inform you of all messaging activity across all channels.
We recommend using event filters to limit the events to only those channels you want events for.
message.sent
Message sent
Triggered when a message is sent on any channel.
The messages content can be found in the message field, but depending on the type of content and size of content the way we make it available in the event can vary. We support passing the message content as:
text - Where the message can be represented by text and is less than 800KB is size.
lobId - If the message content is over 800KB it will be stored as a LOB (Large OBject) and the id to retrieve that passed back to you. You need to call the Retrieve large object call with the id to retrieve the message contents.
object - Some channels we cannot give you the exact message sent to the contact but rather a object describing what message was sent. For instance with WhatsApp template based message we will pass you the details of what template was sent with what personalization.
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
messageId | Yes | string | Unique id for message |
channel | Yes | string enum: | The channel the message was sent on. |
to | Yes | object (see below) | Any identifiers for the recipient |
| No | integer | The immutable identifier for the contact |
| Yes | string | The recipients identifier, so email, phone number, etc… |
| No | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
from | Yes | string | Any identifiers for the sender email, phone number etc… for push the app id from the push profile |
campaignDetails | No | object (see below) | Details of the campaign that sent it if applicable |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign. |
program | No | object see below: | Automation program details if applicable |
| Yes | int | Automation program id if applicable |
| Yes | string | Automation program name |
message | No | object | The message content, if available |
| No | string | The message content as a string if it can fit in the event and be converted to a string. |
| No | string | If the message content is too large to fit in the event, then this field will have a LOB (Large Object) ID where the contents can be downloaded using the Retrieve large object call. |
| No | object | For channels that have structured messages such as WhatsApp templates we will return a JSON object describing the content of the message. |
attachments | No | Array of objects (see below) | Any attachments to the message |
| Yes | string | The name/filename of the attachment |
| Yes | string | MIME type of the attachment |
| Yes | string | The files contents can be retrieved using this ID and the Retrieve Lob call. |
channelData | No | object | Any additional channel data we want to pass back to the customer |
metaData | No | object | Any customer metadata associated with the send, used for correlation etc… |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "12G8G3_A3PWN_4H35TY",
"channel": "email",
"to": {
"contactId": 12345,
"recipient": "[email protected]",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"from": "[email protected]",
"campaignDetails": {
"id": 245334,
"name": "Special offer promo",
"type": "standard"
},
"message": {
"text": "<Email body>"
},
"channelData": {
"sendId": 47474874,
"subject": "Don't miss out of this great offer!",
"sendStatus": "sent",
"sendStatusReason": ""
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "3343556",
"channel": "sms",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"from": "60006",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"message": {
"text": "Don't miss out on the deal of the day, https://brand.com/deal"
},
"channelData": {
"splitTestVariant": "A"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "3343556",
"channel": "transactionalEmail",
"to": {
"recipient": "[email protected]"
},
"from": "[email protected]",
"message": {
"lobId": "<LOB Id>"
},
"metaData": {
"myCorrelationId": "gh485858"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "20762495-2c44-4409-b301-31b66e5cc89c",
"channel": "push",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"from": "com.dotdigital.demopush",
"message": {
"text": "Don't miss out on the deal of the day"
},
"program": {
"id": 1233,
"name": "Welcome"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "3343556",
"channel": "whatsapp",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"from": "447321321321",
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"message": {
"object": {
"templateName": "deal_of_day",
"languageCode": "en",
"parameters": [
{
"type": "text",
"text": "1234"
}
]
}
},
"channelData": {
"virtualDeviceNumber": "447860003600",
"originatorPhoneNumber": "447860003600",
"isTemplateMessage": true,
"templateCategory": "UTILITY",
"isWithinConversationWindow": true,
"phoneNumberCountryCode": "GB",
"isCloudOriginator": true
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.sent",
"data": {
"messageId": "3343556",
"channel": "whatsapp",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"from": "447321321321",
"message": {
"text": "Can you please provide some more details"
},
"channelData": {
"virtualDeviceNumber": "447860003600",
"originatorPhoneNumber": "447860003600",
"isTemplateMessage": false,
"isWithinConversationWindow": true,
"phoneNumberCountryCode": "GB",
"isCloudOriginator": true
}
}
}message.status
Message status update
Triggered when a message status is updated, such as delivered, read, failed etc…
Note
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
messageId | Yes | string | Unique id for message, used to correlate all message events together on a per send basis. |
channel | Yes | string enum: | The channel the message was sent on. |
status | Yes | string enum: | Status of message |
subStatus | No | string | Additional sub-status information if relavent |
to | Yes | object (see below) | Any identifiers for the recipient |
| No | integer | The immutable identifier for the contact |
| Yes | string | The recipients identifier, so email, phone number, etc… |
| No | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
campaignDetails | No | object (see below) | Details of the campaign if a reply to a campaign message |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign |
program | No | object see below: | Automation program details if applicable |
| Yes | int | Automation program id if applicable |
| Yes | string | Automation program name |
channelData | No | object | Any additional channel data we want to pass back to the customer |
metaData | No | object | Any customer metadata associated with the original send, used for correlation etc… |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.status",
"data": {
"messageId": "12G8G3_A3PWN_4H35TY",
"channel": "email",
"status": "read",
"to": {
"contactId": 12345,
"recipient": "[email protected]",
"identifiers": {
"email": "[email protected]"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"channelData": {
"emailType": "html",
"ipAddress": "192.168.1.1",
"userAgent": "Mozila/5.0 (Linux; Android 14; SM-S928W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.230 Mobile Safari/537.36",
"mailClient": "Outlook",
"mailClientVersion": "v1.03",
"isBot": false
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.status",
"data": {
"messageId": "12G8G3_A3PWN_4H35TY",
"channel": "email",
"status": "failed",
"subStatus": "HardBounce",
"to": {
"contactId": 12345,
"recipient": "[email protected]",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"myCustomId": "djdj434x32"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.status",
"data": {
"messageId": "45685514",
"channel": "sms",
"status": "delivered",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"mobileNumber": "447123123123"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.status",
"data": {
"messageId": "45685514",
"channel": "sms",
"status": "failed",
"subStatus": "RejectedSmsc",
"to": {
"contactId": 12345,
"recipient": "447123123123",
"identifiers": {
"mobileNumber": "447123123123"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.status",
"data": {
"messageId": "20762495-2c44-4409-b301-31b66e5cc89c",
"channel": "push",
"status": "failed",
"subStatus": "fcmFailure",
"to": {
"contactId": 12345,
"recipient": "[email protected]",
"identifiers": {
"mobileNumber": "[email protected]"
}
},
"channelData": {
"externalMessageId": "f76bf2c9-f8d2-46c6-b13b-cfe3477aa92a",
"system": "fcm",
"deviceId": "0618efd2-c56a-4599-b5c5-833aca805d56",
"errorCode": 33,
"errorDateTime": "2025-05-01T13:44:12.000Z"
}
}
}message.received
Inbound message received
Triggered when a message is received.
The messages content can be found in the message field, but depending on the type of content and size of content the way we make it available in the event can vary. We support passing the message content as:
text - Where the message can be represented by text and is less than 800KB is size.
lobId - If the message content is over 800KB it will be stored as a LOB (Large OBject) and the id to retrieve that passed back to you. You need to call the Retrieve large object call with the id to retrieve the message contents.
object - Some channels we cannot give you the exact message sent to the contact but rather a object describing what message was sent. For instance with WhatsApp template based message we will pass you the details of what template was sent with what personalization.
- All identifiers are sent to allow correlation.
Event data fields
These are the fields in the data field of the event envelope
Fields | Required | Data type | Description |
|---|---|---|---|
messageId | Yes | string | Unique id for message |
channel | Yes | string enum: | The channel the message was sent on. |
from | Yes | object (see below) | Any identifiers for the sender of the message |
| No | integer | The immutable identifier for the contact |
| Yes | string | The senders identifier, so email, phone number, etc… |
| No | object | Any identifiers for the contact. we include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
to | Yes | string | Any identifiers for the email, phone number etc… that the message was sent to |
campaignDetails | No | object (see below) | Details of the campaign if a reply to a campaign message |
| Yes | integer | The campaign identifier |
| Yes | string | The campaigns name |
| No | string enum: | The type of campaign. |
program | No | object see below: | Automation program details if applicable |
| Yes | int | Automation program id if applicable |
| Yes | string | Automation program name |
message | No | object | The message content, if available |
| No | string | The message content as a string if it can fit in the event and be converted to a string. |
| No | string | If the message content is too large to fit in the event, then this field will have a LOB (Large Object) ID where the contents can be downloaded using the Retrieve large object call. |
| No | object | For channels that have structured messages such as WhatsApp templates we will return a JSON object describing the content of the message. |
attachments | No | Array of objects (see below) | Any attachments to the message |
| Yes | string | The name/filename of the attachment |
| Yes | string | MIME type of the attachment |
| Yes | string | The files contents can be retrieved using this ID and the Retrieve large object call. |
channelData | No | object | Any additional channel data we want to pass back to the customer, such as keywords and other channel specific data |
metaData | No | object | Any customer metadata associated with the original send, used for correlation etc… |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.received",
"data": {
"messageId": "3343556",
"channel": "email",
"to": "[email protected]",
"from": {
"contactId": 12345,
"sender": "[email protected]",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"message": {
"text": "I already unsubscribed!"
},
"channelData": {
"isHtml": true,
"replyType": "REPLY",
"subject": "Latest special offers",
"forwardedAddress": null,
"ccAddresses": null,
"customReplyToAddress": null
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.received",
"data": {
"messageId": "3343556",
"channel": "sms",
"to": "60006",
"from": {
"contactId": 12345,
"sender": "447123123123",
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
}
},
"campaignDetails": {
"id": 553355,
"name": "Deal of the day",
"type": "standard"
},
"message": {
"text": "STOP"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "message.received",
"data": {
"messageId": "45685514",
"channel": "sms",
"to": "60006",
"from": {
"contactId": 12345,
"sender": "447123123123",
"identifiers": {
"mobileNumber": "447123123123"
}
},
"message": {
"text": "OPTIN"
},
"channelData": {
"keyword": "OFFERS"
}
}
}Insight Data events
Insight Data events allow you track all activity across an accounts Insight data collections. Insight Data collections can be scoped at account level or contact level. If they are contact level scoped then the contactid and identifiers fields will be populated.
The volume of Insight Data changes can be extensive, so we strongly recommend using event filters to limit events to just the
collectionTypeyou are interested in, or bycollectionName
insightData.collectionCreated
Insight Data collection created
Triggered when an Insight Data collection is created.
Event data fields
These are the fields in the data field of the event envelope
| Fields | Required | Data type | Description |
|---|---|---|---|
| collectionName | Yes | string | Insight data collection name |
| collectionType | Yes | string enum: - cartInsight - catalog - consentInsight - custom - easyEditorExtensions - nostoEmailCampaigns - orders - productCategories - signal - webInsight - wishList | The type of collection |
| collectionScope | Yes | string enum: - account - contact | The collections scope |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.collectionCreated",
"data": {
"collectionName": "Catalog-1",
"collectionType": "catalog",
"collectionScope": "account"
}
}insightData.collectionRemoved
Insight Data collection removed
Triggered when an Insight Data collection is removed.
Event data fields
These are the fields in the data field of the event envelope
| Fields | Required | Data type | Description |
|---|---|---|---|
| collectionName | Yes | string | Insight data collection name |
| collectionType | Yes | string enum: - cartInsight - catalog - consentInsight - custom - easyEditorExtensions - nostoEmailCampaigns - orders - productCategories - signal - webInsight - wishList | The type of collection |
| collectionScope | Yes | string enum: - account - contact | The collections scope |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.collectionRemoved",
"data": {
"collectionName": "Catalog-1",
"collectionType": "catalog",
"collectionScope": "account"
}
}insightData.set
Insight Data record set
Triggered when an Insight Data records value is set, so created or updated.
The volume of Insight Data changes can be extensive, so we strongly recommend using event filters to limit events to just the
collectionTypeyou are interested in, or bycollectionName
Note
- If the Insight Data collection the change occurred in is contact level scoped then the
contactidandidentifiersfields will be populated, otherwise not. - All identifiers are sent to allow correlation when related to a contact scoped collection.
- Depending on the byte size of the records JSON (<= 800KB) it will be either be put directly into the event in the
jsonfield, or if too large it will be stored as a LOB and to retrieve it you use thejsonLobIdwith the Retrieve large object call.
Event data fields
These are the fields in the data field of the event envelope
| Fields | Required | Data type | Description |
|---|---|---|---|
| collectionName | Yes | string | Insight data collection name |
| collectionType | Yes | string enum: - cartInsight - catalog - consentInsight - custom - easyEditorExtensions - event - nostoEmailCampaigns - orders - productCategories - signal - webInsight - wishList | The type of collection |
| collectionScope | Yes | string enum: - account - contact | The collections scope |
| contactId | No | integer | The immutable identifier for the contact if contact scoped collection |
| identifiers | No | object | Any identifiers for the contact if contact scoped collection. We include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
| recordId | Yes | string | The unique recordId for the record. |
| json | No | object | The records data if less than 800KB |
| jsonLobId | No | string | If the message content is too large to fit in the event, then this field will have a LOB (Large Object) ID where the contents can be downloaded using the Retrieve large object call. |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.set",
"data": {
"collectionName": "Catalog-1",
"collectionType": "catalog",
"collectionScope": "account",
"recordId": "CD001",
"json": {
"id": "898989",
"name": "Greatest 80s hits",
"price": 9.99,
"url": "https://fakeshop.com/cd001",
"image_path": "https://fakeshop.com/cd001/img",
"sku": "CD001"
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.set",
"data": {
"collectionName": "orders",
"collectionType": "orders",
"collectionScope": "contact",
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"recordId": "GB123464-90",
"json": {
"order_total": 9.99,
"order_subtotal": 9.99,
"currency": "USD",
"purchase_date": "2025-05-01T09:01:01Z",
"products": [
{
"name": "Greatest 80s hits",
"price": 9.99,
"sku": "CD001",
"qty": 1
}
]
}
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.set",
"data": {
"collectionName": "orders",
"collectionType": "orders",
"collectionScope": "contact",
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"recordId": "GB123464-90",
"jsonLobId": "d4699dd5-c7fb-4313-a62e-a81998180da0"
}
}insightData.removed
Insight Data record removed
Triggered when an Insight Data records is removed.
The volume of Insight Data changes can be extensive, so we strongly recommend using event filters to limit events to just the
collectionTypeyou are interested in, or bycollectionName
Note
- If the Insight Data collection the change occurred in is contact level scoped then the
contactidandidentifiersfields will be populated, otherwise not. - All identifiers are sent to allow correlation when related to a contact scoped collection.
Event data fields
These are the fields in the data field of the event envelope
| Fields | Required | Data type | Description |
|---|---|---|---|
| collectionName | Yes | string | Insight data collection name |
| collectionType | Yes | string enum: - cartInsight - catalog - consentInsight - custom - easyEditorExtensions - nostoEmailCampaigns - orders - productCategories - signal - webInsight - wishList | The type of collection |
| collectionScope | Yes | string enum: - account - contact | The collections scope |
| contactId | No | integer | The immutable identifier for the contact if contact scoped collection |
| identifiers | No | object | Any identifiers for the contact if contact scoped collection. We include all the standard identifiers email and mobileNumber as well as any defined custom ids. If an identifier is not set then a null is returned. |
| recordId | Yes | string | The unique recordId for the record. |
Examples
{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.removed",
"data": {
"collectionName": "Catalog-1",
"collectionType": "catalog",
"collectionScope": "account",
"recordId": "CD001"
}
}{
"id": "701180ae-c6ef-4cf5-8ed1-d1007e38298c",
"accountId": 12345,
"processedDate": "2025-11-06T15:29:49Z",
"eventDate": "2025-11-06T15:29:48Z",
"type": "insightData.removed",
"data": {
"collectionName": "orders",
"collectionType": "orders",
"collectionScope": "contact",
"contactId": 321332,
"identifiers": {
"email": "[email protected]",
"mobileNumber": "447123123123",
"customId1": "1234dcf"
},
"recordId": "GB123464-90"
}
}