Request payload
Everything Emailgistics sends to your endpoint when a message triggers a webhook.
Each webhook delivery is an HTTPS POST request with a JSON body.
Headers
User-AgentstringIdentifies the Emailgistics service version. Format: Emailgistics/<version>.
Content-TypestringAlways application/json.
Authorization?stringBearer token containing the secret you set in the webhook definition. Validate this on every request. Omitted when no secret is configured.
Body
Always-present fields:
idstringUnique identifier for this message.
eventstringThe event type that triggered the webhook. Currently always received. Tolerate unknown values — additional events will be added in future.
internetMessageIdstringInternet message ID of the email — the value of the Message-ID header, as supplied by Microsoft Graph.
receivedstring (RFC 3339 / ISO 8601 datetime)When the message was received, as supplied by Microsoft Graph.
mailboxstringEmail address of the shared mailbox the event occurred in.
senderAddressEnvelope sender — { "emailAddress": { "name", "address" } }.
fromAddressHeader From value. Same shape as sender. Differs from sender when the message was sent on behalf of someone else.
toAddress[]Header To recipients. Array of Address.
ccAddress[]Header Cc recipients. Array of Address.
subjectstringMessage subject line.
hasAttachmentsbooleanWhether the message has any attachments.
timestampstring (ISO 8601 datetime)When the webhook event occurred — typically very close to received.
conversationIdstringEmailgistics conversation identifier — for example, "2L8WYB89Z". This is the same ID that appears in the conversation URL in Emailgistics Admin. Use it with Received Message Detail.
Conditional fields — only present when the corresponding option is enabled in the webhook definition:
bodyText?stringPlain-text version of the message body. Present only when Include message text is checked. HTML messages are converted to plain text before delivery; if the resulting text is empty, the field is omitted entirely.
customFields?Record<string, string>Key-value map of custom field values for the conversation. Present only when Include Custom Fields is checked AND the conversation has values set for at least one currently-defined mailbox custom-field key. Values left over from keys since deleted from the mailbox are filtered out.
Address shape
{ "emailAddress": { "name": "Adele Vance", "address": "adelev@contoso.OnMicrosoft.com" } }Example
POST /your-endpoint HTTP/1.1
User-Agent: Emailgistics/2.29.299
Content-Type: application/json
Authorization: Bearer f72jip905bn85.23po0xY1aQ7bL{
"id": "65e0aaef382d2e93ed1ef9bc",
"event": "received",
"internetMessageId": "<YT2189.CANRD01.PROD.OLOOK.COM>",
"received": "2026-02-28T16:03:58Z",
"mailbox": "info@pinnilly.com",
"sender": { "emailAddress": { "name": "Ren Storrie", "address": "rstorrie@pinnilly.com" } },
"from": { "emailAddress": { "name": "Ren Storrie", "address": "rstorrie@pinnilly.com" } },
"to": [{ "emailAddress": { "name": "Pinnilly Insurance", "address": "info@pinnilly.com" } }],
"cc": [],
"subject": "Coverage",
"bodyText": "I'm reaching out to confirm the details of my current coverage...",
"hasAttachments": false,
"timestamp": "2026-02-28T16:03:59Z",
"conversationId": "2L8WYB89Z",
"customFields": {
"claimNumber": "CLM-556677",
"policyNumber": "POL-889900"
}
}Source IP
Requests originate from a stable IP per region — see Regions and base URLs. Whitelist this IP on your endpoint and reject everything else.
Forward compatibility
- New optional fields may be added to this payload at any time. Don’t fail if you see fields you don’t recognize.
- New
eventvalues may be added. Default-handle unknown events (typically by ignoring the request and returning{ "status": "success", "message": "ignored" }).