Events
| Event | Description |
|---|---|
message.received | A new inbound email was delivered to an inbox |
inbox.suspended | An inbox was suspended (sending blocked) by the reputation engine or an admin |
inbox.reactivated | A previously suspended inbox was reactivated |
pod.suspended | A pod was suspended — every inbox in it is blocked from sending |
pod.reactivated | A previously suspended pod was reactivated |
inbox.* and pod.* are reputation lifecycle events: they let you react when one of your end-users is cut off (for example, pause that agent) without your whole account being affected. We handle suspension automatically; these events tell you when it happens. They are delivered to your HTTP webhook only (not over WebSockets).
Use cases
- Agent routing - Use
inbox_idto route inbound email to the right user or container. - Real-time replies - Trigger your agent to process and reply within seconds of receipt.
- Multi-tenant - Each inbox maps to an agent;
inbox_idin the payload tells you which one.
Payload structure
Field descriptions
| Field | Description |
|---|---|
event | Event type — e.g. message.received (see Events) |
event_id | Unique ID for this delivery. Use for deduplication - we may retry. |
occurred_at | When the event happened. Use to sort if events arrive out of order. |
inbox_id | The inbox that received the message |
thread_id | Conversation thread. Use with the API to fetch or send messages. |
message.id | Unique message ID |
message.from | Sender email address |
message.subject | Email subject line |
message.body_text | Plain-text body |
message.attachments | Array of attachments with url, parsedText (extracted content), and extractionMethod. See Attachments. |
Reputation lifecycle payload
inbox.suspended, inbox.reactivated, pod.suspended, and pod.reactivated share the structure below. They carry a reason instead of a message. For pod.* events, inbox_id and inbox_address are null.
| Field | Description |
|---|---|
inbox_id | The affected inbox, or null for pod.* events |
inbox_address | The affected inbox’s email address, or null for pod.* events |
pod_id | The affected pod (or the suspended inbox’s pod), if any |
reason | Why it was suspended (see below); null on *.reactivated events |
Reason codes
| Code | Meaning |
|---|---|
high_bounce_rate | Too many of the inbox’s recipients bounced |
high_complaint_rate | Too many recipients marked messages as spam |
abuse | Phishing or abusive sending was detected |
pod_degraded | The pod’s overall sending health fell too far |
manual_review | Suspended by OpenMail staff pending review |
other | Suspended for another reason |
*.reactivated event fires.
Headers
| Header | Description |
|---|---|
Content-Type | application/json |
X-Timestamp | Unix timestamp (seconds) used in signature |
X-Signature | HMAC-SHA256 signature |
X-Event-Id | Unique event ID for deduplication |
Verification
HMAC signature verification.
Setup
Full implementation guide.