Event data model

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNonot used
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
typeenumNoValues: MESSAGE_RECEIVED, REACTION_ADDED, REACTION_REMOVED, BUTTON_CLICK, APP_MENTION, CHANNEL_JOINED, CHANNEL_LEFT, CHANNEL_CREATED, CHANNEL_DELETED, CHANNEL_RENAMED, USER_CREATED, USER_DELETED, USER_UPDATED
channelobjectNo
channel.idstringNo
channel.created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
channel.updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
channel.namestringNo
channel.descriptionstringNo
channel.parent_idstringNo
channel.has_subchannelsbooleanNo
channel.membersMessagingMember[]No
channel.members[].user_idstringNo(reference to HrisEmployee)
channel.members[].emailstringNo
channel.members[].namestringNo
channel.members[].image_urlstringNo
channel.is_activebooleanNo
channel.is_privatebooleanNo
channel.web_urlstringNo
messageobjectNo
message.idstringNo
message.created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
message.updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
message.channelsMessagingReference[]NoRepresents all channels to which the message is sent. Identifies the channels where the message is posted. To send to the "Draft" channel/folder, use a channel ID "DRAFT".
message.channels[].idstringNo
message.channels[].namestringNo
message.parent_idstringNoRepresents the ID of the immediate predecessor message in the thread. Identifies a specific message to which the current message directly replies.
message.message_thread_identifierstringNothe opaque identifier for the first message in a thread
message.author_memberMessagingEvent_message_author_memberNofor email systems, this field represents the From value
message.author_member.user_idstringNo(reference to HrisEmployee)
message.author_member.emailstringNo
message.author_member.namestringNo
message.author_member.image_urlstringNo
message.destination_membersMessagingMember[]Nofor email systems, this field represents the To value
message.destination_members[].user_idstringNo(reference to HrisEmployee)
message.destination_members[].emailstringNo
message.destination_members[].namestringNo
message.destination_members[].image_urlstringNo
message.hidden_membersMessagingMember[]Nofor email systems, this field represents the BCC value
message.hidden_members[].user_idstringNo(reference to HrisEmployee)
message.hidden_members[].emailstringNo
message.hidden_members[].namestringNo
message.hidden_members[].image_urlstringNo
message.mentioned_membersMessagingMember[]Nofor email systems, this field represents the CC value
message.mentioned_members[].user_idstringNo(reference to HrisEmployee)
message.mentioned_members[].emailstringNo
message.mentioned_members[].namestringNo
message.mentioned_members[].image_urlstringNo
message.reactionsMessagingReaction[]No
message.reactions[].reactionstringYes
message.reactions[].memberMessagingReaction_memberYes
message.reactions[].member.user_idstringNo(reference to HrisEmployee)
message.reactions[].member.emailstringNo
message.reactions[].member.namestringNo
message.reactions[].member.image_urlstringNo
message.subjectstringNo
message.messagestringNo
message.message_htmlstringNo
message.message_markdownstringNo
message.attachmentsMessagingAttachment[]No
message.attachments[].filenamestringNo
message.attachments[].sizenumberNo
message.attachments[].content_identifierstringNothe inline attachment's content_id
message.attachments[].content_typestringNo
message.attachments[].download_urlstringNo
message.attachments[].message_idstringNo
message.web_urlstringNo
message.referencestringNoeg. RFC822 MessageID
message.has_childrenbooleanNo
message.is_unreadbooleanNo
message.buttonsMessagingButton[]No
message.buttons[].idstringYes
message.buttons[].textstringNo
message.buttons[].iconstringNo
buttonobjectNo
button.idstringNo
button.textstringNo
button.iconstringNo
userobjectNo
user.idstringNo
user.namestringNo
is_replacing_originalbooleanNo

TypeScript

TypeScript
export type MessagingEvent = {
	id?: string; // not used
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	type?: 'MESSAGE_RECEIVED' | 'REACTION_ADDED' | 'REACTION_REMOVED' | 'BUTTON_CLICK' | 'APP_MENTION' | 'CHANNEL_JOINED' | 'CHANNEL_LEFT' | 'CHANNEL_CREATED' | 'CHANNEL_DELETED' | 'CHANNEL_RENAMED' | 'USER_CREATED' | 'USER_DELETED' | 'USER_UPDATED';
	channel?: {
		id?: string; 
		created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		name?: string; 
		description?: string; 
		parent_id?: string; 
		has_subchannels?: boolean; 
		members?: []; 
		is_active?: boolean; 
		is_private?: boolean; 
		web_url?: string; 
		raw?: any; 
	};
	message?: {
		id?: string; 
		created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format) 
		channels?: []; // Represents all channels to which the message is sent. Identifies the channels where the message is posted.  To send to the "Draft" channel/folder, use a channel ID "DRAFT". 
		parent_id?: string; // Represents the ID of the immediate predecessor message in the thread. Identifies a specific message to which the current message directly replies. 
		message_thread_identifier?: string; // the opaque identifier for the first message in a thread   
		author_member?: any; // for email systems, this field represents the From value 
		destination_members?: []; // for email systems, this field represents the To value 
		hidden_members?: []; // for email systems, this field represents the BCC value 
		mentioned_members?: []; // for email systems, this field represents the CC value 
		reactions?: []; 
		subject?: string; 
		message?: string; 
		message_html?: string; 
		message_markdown?: string; 
		attachments?: []; 
		web_url?: string; 
		reference?: string; // eg. RFC822 MessageID 
		has_children?: boolean; 
		is_unread?: boolean; 
		buttons?: []; 
		raw?: any; 
	};
	button?: {
		id?: string; 
		text?: string; 
		icon?: string; 
	};
	user?: {
		id?: string; 
		name?: string; 
	};
	raw?: any;
	is_replacing_original?: boolean;
} 

Zod

Zod
import { z } from 'zod';

export const ZodMessagingEvent = z.object({
	id: z.string().optional().describe("not used"),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	type: z.enum("MESSAGE_RECEIVED", "REACTION_ADDED", "REACTION_REMOVED", "BUTTON_CLICK", "APP_MENTION", "CHANNEL_JOINED", "CHANNEL_LEFT", "CHANNEL_CREATED", "CHANNEL_DELETED", "CHANNEL_RENAMED", "USER_CREATED", "USER_DELETED", "USER_UPDATED").optional(),
	channel: z.object({
			id: z.string().optional(),
			created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			name: z.string().optional(),
			description: z.string().optional(),
			parent_id: z.string().optional(),
			has_subchannels: z.boolean().optional(),
			members: z.array().optional(),
			is_active: z.boolean().optional(),
			is_private: z.boolean().optional(),
			web_url: z.string().optional(),
	
}).optional(),
	message: z.object({
			id: z.string().optional(),
			created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
			channels: z.array().optional().describe("Represents all channels to which the message is sent. Identifies the channels where the message is posted.  To send to the "Draft" channel/folder, use a channel ID "DRAFT"."),
			parent_id: z.string().optional().describe("Represents the ID of the immediate predecessor message in the thread. Identifies a specific message to which the current message directly replies."),
			message_thread_identifier: z.string().optional().describe("the opaque identifier for the first message in a thread  "),
			author_member: z.unknown().optional().describe("for email systems, this field represents the From value"),
			destination_members: z.array().optional().describe("for email systems, this field represents the To value"),
			hidden_members: z.array().optional().describe("for email systems, this field represents the BCC value"),
			mentioned_members: z.array().optional().describe("for email systems, this field represents the CC value"),
			reactions: z.array().optional(),
			subject: z.string().optional(),
			message: z.string().optional(),
			message_html: z.string().optional(),
			message_markdown: z.string().optional(),
			attachments: z.array().optional(),
			web_url: z.string().optional(),
			reference: z.string().optional().describe("eg. RFC822 MessageID"),
			has_children: z.boolean().optional(),
			is_unread: z.boolean().optional(),
			buttons: z.array().optional(),
	
}).optional(),
	button: z.object({
			id: z.string().optional(),
			text: z.string().optional(),
			icon: z.string().optional()
}).optional(),
	user: z.object({
			id: z.string().optional(),
			name: z.string().optional()
}).optional(),
,
	is_replacing_original: z.boolean().optional()
});

Python

Python
import dataclasses

@dataclasses.dataclass
class MessagingEventType(str, Enum):
	MESSAGE_RECEIVED = 'MESSAGE_RECEIVED'
	REACTION_ADDED = 'REACTION_ADDED'
	REACTION_REMOVED = 'REACTION_REMOVED'
	BUTTON_CLICK = 'BUTTON_CLICK'
	APP_MENTION = 'APP_MENTION'
	CHANNEL_JOINED = 'CHANNEL_JOINED'
	CHANNEL_LEFT = 'CHANNEL_LEFT'
	CHANNEL_CREATED = 'CHANNEL_CREATED'
	CHANNEL_DELETED = 'CHANNEL_DELETED'
	CHANNEL_RENAMED = 'CHANNEL_RENAMED'
	USER_CREATED = 'USER_CREATED'
	USER_DELETED = 'USER_DELETED'
	USER_UPDATED = 'USER_UPDATED'

@dataclasses.dataclass
class PropertyMessagingEventChannel:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	name: Optional[str]
	description: Optional[str]
	parent_id: Optional[str]
	has_subchannels: Optional[bool]
	members: Optional[PropertyMessagingEventMembers]
	is_active: Optional[bool]
	is_private: Optional[bool]
	web_url: Optional[str]


@dataclasses.dataclass
class PropertyMessagingEventMessage:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""Represents all channels to which the message is sent. Identifies the channels where the message is posted.  To send to the "Draft" channel/folder, use a channel ID "DRAFT"."""
	channels: Optional[PropertyMessagingEventChannels]
	"""Represents the ID of the immediate predecessor message in the thread. Identifies a specific message to which the current message directly replies."""
	parent_id: Optional[str]
	"""the opaque identifier for the first message in a thread  """
	message_thread_identifier: Optional[str]
	"""for email systems, this field represents the From value"""
	author_member: Optional[PropertyMessagingEventAuthor_member]
	"""for email systems, this field represents the To value"""
	destination_members: Optional[PropertyMessagingEventDestination_members]
	"""for email systems, this field represents the BCC value"""
	hidden_members: Optional[PropertyMessagingEventHidden_members]
	"""for email systems, this field represents the CC value"""
	mentioned_members: Optional[PropertyMessagingEventMentioned_members]
	reactions: Optional[PropertyMessagingEventReactions]
	subject: Optional[str]
	message: Optional[str]
	message_html: Optional[str]
	message_markdown: Optional[str]
	attachments: Optional[PropertyMessagingEventAttachments]
	web_url: Optional[str]
	"""eg. RFC822 MessageID"""
	reference: Optional[str]
	has_children: Optional[bool]
	is_unread: Optional[bool]
	buttons: Optional[PropertyMessagingEventButtons]


@dataclasses.dataclass
class PropertyMessagingEventButton:
	id: Optional[str]
	text: Optional[str]
	icon: Optional[str]

@dataclasses.dataclass
class PropertyMessagingEventUser:
	id: Optional[str]
	name: Optional[str]

@dataclasses.dataclass
class MessagingEvent:
	"""not used"""
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	type: Optional[MessagingEventType]
	channel: Optional[PropertyMessagingEventChannel]
	message: Optional[PropertyMessagingEventMessage]
	button: Optional[PropertyMessagingEventButton]
	user: Optional[PropertyMessagingEventUser]

	is_replacing_original: Optional[bool]
Are we missing anything? Let us know
Was this page helpful?