There are two Ids connected to a message: their id connected to the campaign or story and when it is send out the dispatch id, which is a unique id for a specific dispatch for this user.
Example:
messageId = 453951
messageDispatchId = 245a7cd0-bf0f-11f0-9d76-4dbc5a1220e5
Both of these ids are connected to the mail.send-event, but unfortunately they are named differently in different places, which can be confusing.
Examples
Story Message Node
messageId = Message ID
User Event History
messageId = channelConfigId
messageDispatchId = messageId
Segmentation
messageId = channelConfigId
Export API
messageId = messageId
messageDispatchId = messageDispatchId
{
"companyId": 135,
"sessionId": "7a6bc916-ebf0-4154-8894-d0df7e0e0c2e",
"eventId": "c2d03620-af38-11f0-9fb5-0501fa8aeeff",
"eventTime": "2025-10-22T11:17:56.994Z",
"userId": "85336676-b3d8-4962-9765-81bba2c74a38",
"eventClass": "message.sent",
"eventType": "SYSTEM",
"data": {
"storyId": "5513",
"campaignRunId": "320519",
"provider": "sendgrid",
"channel": "mail",
"messageId": "450043",
"journeyExtId": "092ab388-93a1-482f-a1d8-8866ab9d95e1",
"messageDispatchId": "c2948cb0-af38-11f0-9fb5-0501fa8aeeff"
}}
Practical Example: Handlebars
Apart from obvious confusion that things are named the same but different, this also leads to some other curious ways our system works with it. One example is using the messageId in a handlebar.
Example:
- Story starts with “mail.send”-event and since the UI shows the messageId as “channelConfigId” it is reasonable to think that it is used like this:
{{story.blocks.[48371762853549413].[channelConfigId]}}But the handlebar to insert the id of the message is actually:
{{story.blocks.[48371762853549413].[messageId]}} - similar when a campaign message is sent with links that include a UTM-parameter with the messageId:
?utm_medium=email&utm_source=crossengage&utm_campaign={{campaignId}}_{{messageId}}