Mixmax Webhook is available on all Mixmax plans except the Free plan. Please check our pricing page for more information.
With Mixmax Webhooks, the Webhook payload is sent in JSON format. Each type of event that is sent by Mixmax will have a different structure.
Mixmax sends each webhook as an HTTP POST request. If the Webhook action has a signing secret, the request also includes the X-Mixmax-Signature, X-Mixmax-Timestamp, and X-Mixmax-Webhook-Id headers, so the system receiving it can confirm it came from Mixmax. The payload is the same either way. See Verifying Mixmax Webhooks with a signing secret for details.
You can also add your own headers, such as an API key your receiving system requires, in the Webhook action's HTTP Headers (optional) section. Mixmax sends them with every request. If you add a Content-Type header, Mixmax sends your value instead of application/json, but the payload is still JSON.
Example events are as follows:
Sent
{
"userId": "T3STUS3R1D",
"to": [
{
"email": "[email protected]",
"name": "Test User3"
}
],
"cc": [],
"bcc": [],
"from": {
"email": "[email protected]",
"name": "Test User2"
},
"subject": "Please join me ",
"sent": 1481745125403,
"id": "16ac8cc837d1b304",
"threadId": "16008541212e8a32",
"rfc822Id": "<CAHfzPxo09WCKrtyPRM9g+60za4+0cHffwyT0vf867Pp=ehrfQ@mail.gmail.com>",
"receivedBy": {
"email": "[email protected]",
"name": "Test User2"
},
"plaintextBody": "Please join me for a meeting. \n--\nEngineering Test",
"eventName": "message:sent"
}
Received
{
"userId": "T3STUS3R1D",
"to": [
{
"email": "[email protected]",
"name": "Test User2"
}
],
"cc": [],
"bcc": [],
"from": {
"email": "[email protected]",
"name": "Test User3"
},
"subject": "Re: Please join me ",
"sent": 1481745135403,
"id": "16ac8cc837d1b304",
"threadId": "16008541212e8a32",
"rfc822Id": "<CAHfzPxo09WCKrtyPRM9g+60z9d+0cHffwyT0vf867Pp=ehrfQ@mail.gmail.com>",
"receivedBy": {
"email": "[email protected]",
"name": "Test User2"
},
"plaintextBody": "this is the body of a received email\r\n",
"eventName": "message:received"
}
Opened
{
"message": {
"to": [
{
"name": "Test User3",
"email": "[email protected]"
}
],
"cc": [],
"bcc": [],
"subject": "Please join me "
},
"userId": "T3STUS3R1D",
"messageId": "VyfSqbL195O0z8VK6L",
"recipientEmail": "[email protected]",
"recipientName": "Test User3",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko)",
"timestamp": 1481746916300,
"ipAddress": "::ffff:127.0.0.1",
"eventName": "opened"
}
Bounced
{
"userId": "5bedd41b3303c50f616e2b49",
"to": [
{
"email": "[email protected]",
"name": ""
}
],
"cc": [],
"bcc": [],
"from": {
"email": "[email protected]",
"name": "Mail Delivery Subsystem"
},
"subject": "Delivery Status Notification (Failure)",
"sent": 1641998748000,
"id": "17e4ec08ca9e2b33",
"threadId": "17e4ec074dbd085e",
"rfc822Id": "<[email protected]>",
"receivedBy": {
"email": "[email protected]",
"name": "papamax papamaxtest"
},
"plaintextBody": "\r\n** Address not found **\r\n\r\nYour message wasn't delivered to [email protected] because the address couldn't be found, or is unable to receive mail.\r\n\r\n\r\n\r\nThe response from the remote server was:\r\n550 Requested action not taken: mailbox unavailable\r\n",
"bouncedRecipientEmails": [
"[email protected]"
],
"inReplyTo": {
"_id": "UZ77frNRHBCwjTwti"
},
"eventName": "message:received"
}
Clicked
{
"message": {
"to": [
{
"name": "Test User2",
"email": "[email protected]"
}
],
"cc": [],
"bcc": [],
"subject": "A link for you"
},
"userId": "T3STUS3R1D",
"messageId": "OsQNJX4bY95SauarLt",
"recipientEmail": "[email protected]",
"recipientName": "Test User2",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko)",
"timestamp": 1481747320985,
"linkUrl": "http://www.nytimes.com/",
"linkText": "Breaking News, World News & Multimedia",
"eventName": "clicked"
}
Downloaded
{
"message": {
"to": [
{
"name": "Test User2",
"email": "[email protected]"
}
],
"cc": [],
"bcc": [],
"subject": "A file for you"
},
"userId": "T3STUS3R1D",
"messageId": "OsQNJX4bY95SauarLt",
"recipientEmail": "[email protected]",
"recipientName": "Test User2",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko)",
"timestamp": 1481747490272,
"fileName": "flame (3) (2) (1).svg",
"eventName": "downloaded"
}
Poll voted on
{
"poll": {
"_id": "1ce32901cb476823f3296db6",
"pollId": "feCgCLIPsQQxwiXV",
"createdAt": 1481747277844,
"userId": "T3STUS3R1D",
"question": "Example poll",
"options": [
{
"text": "Option 1"
},
{
"text": "Option 2"
}
]
},
"respondent": {
"name": "Test User2",
"email": "[email protected]",
"ipAddress": "::ffff:127.0.0.1",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko)",
"respondedAt": 1481747716249
},
"vote": "Option 1",
"timestamp": 1481747716249,
"eventName": "poll:voted"
}
Unsubscribe link clicked
{
"name": "tekhemix2 Mix2",
"email": "[email protected]",
"messageId": "hFxGDzm2A7aP3Tfnd",
"sequenceId": "5e3c49bc061f27001a3511be",
"eventName": "unsubscribe:created"
}
Meeting invitation confirmed
{
"invite": {
"title": "Test & Eng: Meeting",
"timeslots": [{
"start": "2016-12-14T22:00:00.000Z",
"end": "2016-12-14T22:30:00.000Z"
}, {
"start": "2016-12-14T22:30:00.000Z",
"end": "2016-12-14T23:00:00.000Z"
}, {
"start": "2016-12-14T23:00:00.000Z",
"end": "2016-12-14T23:30:00.000Z"
}],
"timezone": "America/Detroit",
"calendarId": "[email protected]"
},
"organizer": {
"email": "[email protected]",
"name":"Eng Test User 9"
},
"guest": {
"name": "Test User2",
"email": "[email protected]"
},
"selectedTimeslot": "2",
"timestamp": 1481747910753,
"eventName": "meetinginvites:confirmed"
}
FAQ
Why was my webhook Rule paused?
Mixmax pauses (turns off) a Rule when it can't deliver a webhook to the Webhook URL. This can happen when:
The Webhook URL returns a 404 error, usually because it no longer exists. Mixmax pauses the Rule right away in this case.
The receiving system rejects the request, for example with a 401 or 403 error because the action's HTTP headers are missing an API key or the key is incorrect, or because the signature check failed.
The receiving system returns another error, can't be reached, or doesn't respond within 30 seconds.
For errors other than a 404, Mixmax retries the webhook first and pauses the Rule only if it keeps failing.
When this happens, Mixmax emails the Rule's owner (or the workspace admins, for a Workspace rule) with the reason. You can also see the error in the Rule's Activity Log.
To get the Rule running again, fix the problem with the receiving system or the Webhook action, then turn the Rule back on with its toggle on your Rules page (or Workspace rules in the Admin center). To avoid this, make sure the receiving system responds with a 2xx status code within 30 seconds.
