Webhook Event Field Details
This document provides detailed information about the final push fields for each Event type.
1. request (Request Event)
Event Type: request
Description: Request event, may contain multiple emailIds, will generate one message for each emailId
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "request" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "request" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | - | ❌ |
| RecipientEmail | - | ❌ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "request",
"ReceiptTime": 1234567890,
"ReceiptResult": "request",
"ReceiptCode": "0",
"ReceiptDesc": "Message content"
}
]
}
2. deliver (Delivery Event)
Event Type: deliver
Description: Email successfully delivered event
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "deliver" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "deliver" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | Outbound IP address | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "deliver",
"ReceiptTime": 1234567890,
"ReceiptResult": "deliver",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com"
}
]
}
3. open (Open Event)
Event Type: open
Description: Email opened event, includes browser and operating system information
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "open" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "open" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | IP address where email was opened | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | Browser name | ✅ |
| ExplorerVer | Browser version | ✅ |
| OSName | Operating system name | ✅ |
| OSVer | Operating system version | ✅ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "open",
"ReceiptTime": 1234567890,
"ReceiptResult": "open",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10"
}
]
}
4. click (Click Event)
Event Type: click
Description: Link clicked event in email, includes the clicked URL
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "click" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "click" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | IP address where link was clicked | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | Browser name | ✅ |
| ExplorerVer | Browser version | ✅ |
| OSName | Operating system name | ✅ |
| OSVer | Operating system version | ✅ |
| ClickedURL | Clicked link URL | ✅ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "click",
"ReceiptTime": 1234567890,
"ReceiptResult": "click",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10",
"ClickedURL": "https://example.com/link"
}
]
}
5. unsubscribe (Unsubscribe Event)
Event Type: unsubscribe
Description: User unsubscribe event
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "unsubscribe" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "unsubscribe" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | IP address | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | Browser name | ✅ |
| ExplorerVer | Browser version | ✅ |
| OSName | Operating system name | ✅ |
| OSVer | Operating system version | ✅ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "unsubscribe",
"ReceiptTime": 1234567890,
"ReceiptResult": "unsubscribe",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com",
"ExplorerName": "Chrome",
"ExplorerVer": "100.0",
"OSName": "Windows",
"OSVer": "10"
}
]
}
6. report_spam (Spam Report Event)
Event Type: report_spam
Description: Email reported as spam event
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "report_spam" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, fixed value: "report_spam" | ✅ |
| ReceiptCode | Receipt status code | ✅ |
| ReceiptDesc | Receipt description | ✅ |
| ClientIp | - | ❌ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "report_spam",
"ReceiptTime": 1234567890,
"ReceiptResult": "report_spam",
"ReceiptCode": "0",
"ReceiptDesc": "Message content",
"RecipientEmail": "user@example.com"
}
]
}
7. invalid (Invalid Email Event)
Event Type: invalid
Description: Invalid email event, failure event, includes sub-status code
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "invalid" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, format: "invalid_{SubStat}", e.g.: "invalid_405" | ✅ |
| ReceiptCode | Receipt status code (may include sub-status code) | ✅ |
| ReceiptDesc | Invalid sub-category description | ✅ |
| ClientIp | Outbound IP address | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "invalid",
"ReceiptTime": 1234567890,
"ReceiptResult": "invalid_405",
"ReceiptCode": "405",
"ReceiptDesc": "Invalid sub-category description",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com"
}
]
}
8. soft_bounce (Soft Bounce Event)
Event Type: soft_bounce
Description: Soft bounce event, failure event, includes sub-status code
Final Push Fields
| Field | Description | Pushed |
|---|---|---|
| SessionNo | Batch ID | ✅ |
| MsgId | Email unique ID | ✅ |
| Event | Event type, fixed value: "soft_bounce" | ✅ |
| ReceiptTime | Event timestamp | ✅ |
| ReceiptResult | Receipt status, format: "softbounce{SubStat}", e.g.: "soft_bounce_409" | ✅ |
| ReceiptCode | Receipt status code (may include sub-status code) | ✅ |
| ReceiptDesc | Soft bounce sub-category description | ✅ |
| ClientIp | Outbound IP address | ✅ |
| RecipientEmail | Recipient email address | ✅ |
| ExplorerName | - | ❌ |
| ExplorerVer | - | ❌ |
| OSName | - | ❌ |
| OSVer | - | ❌ |
| ClickedURL | - | ❌ |
Final Push JSON Example
{
"MsgType": 2,
"Data": [
{
"SessionNo": "task_123",
"MsgId": "email_id_1",
"Event": "soft_bounce",
"ReceiptTime": 1234567890,
"ReceiptResult": "soft_bounce_409",
"ReceiptCode": "409",
"ReceiptDesc": "Soft bounce sub-category description",
"ClientIp": "192.168.1.1",
"RecipientEmail": "user@example.com"
}
]
}
Field Push Rules Summary
| Field | request | deliver | open | click | unsubscribe | report_spam | invalid | soft_bounce |
|---|---|---|---|---|---|---|---|---|
| SessionNo | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| MsgId | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Event | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptTime | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptResult | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptCode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ReceiptDesc | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ClientIp | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
| RecipientEmail | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ExplorerName | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| ExplorerVer | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| OSName | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| OSVer | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| ClickedURL | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
Legend:
- ✅ Indicates the field will be pushed (field will appear in JSON)
- ❌ Indicates the field will not be pushed (field value is empty string, will not appear in JSON)
Push Mechanism
Push Configuration
- Push Method: HTTP POST
- Content-Type: application/json
- Retry Mechanism: Each callback address will retry up to 3 times
- Batch Push: Supports batch push of multiple messages
- Timeout Setting: Configurable request timeout (default 30 seconds)
Response Format
The client needs to return a JSON response in the following format:
{
"code": 0,
"message": "success"
}
code = 0indicates successcode != 0indicates failure, will trigger retry mechanism