Webhooks Overview
Get real-time notifications for email events.
Webhooks are the best way to get real-time information about what’s happening with your emails. Instead of constantly asking the AgentMail API if there’s a new email (a process called polling), you can register a URL, and we will send you a POST
request with the details as soon as an event happens.
This event-driven approach is more efficient and allows you to build fast, responsive agents that can react instantly to incoming messages.
Why Use Webhooks?
- Real-Time Speed: Build conversational agents that can reply to incoming emails in seconds.
- Efficiency: Eliminates the need for constant polling, which saves you computational resources and simplifies your application logic.
The Webhook Workflow
The process is straightforward:
1. Create a Webhook Endpoint
This is a public URL on your server that can accept POST
requests. For local development, a tool like ngrok
is perfect for creating a secure, public URL that tunnels to your local machine. Your endpoint should immediately return a 200 OK
response to acknowledge receipt and process the payload in the background to avoid timeouts.
Payload Structure
When AgentMail sends a webhook, the payload will have the following structure.
Field Descriptions
event_type
(string
): The name of the event. Currently, this will always bemessage.received
.event_id
(string
): A unique identifier for this specific event delivery.message
(object
): A dictionary containing the full details of the received email message.from_
(array<string>
): The sender’s email address. Note the trailing underscore to avoid conflict with the Python keyword.organization_id
(string
): The ID of your organization.inbox_id
(string
): The ID of the inbox that received the message.thread_id
(string
): The ID of the conversation thread.message_id
(string
): The unique ID of this specific message.labels
(array<string>
): Labels associated with the message (e.g.,received
,sent
).subject
(string
): The subject line of the email.preview
(string
): A short plain-text preview of the email body.text
(string
): The full plain-text body of the email.html
(string
): The full HTML body of the email, if present.attachments
(array<object>
): A list of attachments, each with its ownattachment_id
,filename
,content_type
,size
, andinline
status.in_reply_to
(string
): Themessage_id
of the email this message is a reply to, if applicable.