Webhooks let you receive HTTP POST callbacks whenever something happens in your workspace — a new ticket is created, a chat requests human handover, a scheduled task fails. Point a webhook at any HTTPS endpoint you control and InboxMate will deliver signed JSON payloads as events occur.Documentation Index
Fetch the complete documentation index at: https://docs.inboxmate.psquared.dev/llms.txt
Use this file to discover all available pages before exploring further.
Setting up a webhook
- Open Settings > Webhooks.
- Click Add webhook.
- Enter a name, the URL of your endpoint, and select the events you want to receive.
- Save. InboxMate generates a signing secret — copy it immediately, it is shown only once.
Delivery format
Every event is delivered as an HTTP POST with a JSON body:| Header | Value |
|---|---|
Content-Type | application/json |
User-Agent | AgentHub-Notifications/1.0 |
X-AgentHub-Event | Event type, e.g. ticket.created |
X-AgentHub-Event-Id | Unique event ID — use this for idempotency |
X-AgentHub-Signature | sha256=<hex> — HMAC-SHA256 of the raw body with your secret |
Verifying the signature
Compute HMAC-SHA256 over the raw request body using your webhook secret, prefix withsha256=, and compare against the X-AgentHub-Signature header in constant time.
Supported events
| Event | When it fires |
|---|---|
ticket.created | A new ticket is created |
ticket.assigned | A ticket is assigned to a user |
ticket.commented | A comment is added to a ticket |
ticket.status_changed | A ticket status transitions |
ticket.deadline_approaching | A ticket deadline is within 7, 3, or 1 day |
chat.started | A new chat is started with one of your agents |
chat.human_handover_requested | A chat requests human handover |
email.received | A new inbound email arrives |
scheduled_task.completed | A scheduled task finishes successfully |
scheduled_task.failed | A scheduled task fails |
contact.created | A new contact was added (see payload.source: widget, inbound_email, or manual) |
Retries and dead-lettering
- Responses in the 2xx range are treated as success.
- 4xx responses are treated as permanent failures (no retry) — fix your endpoint and replay from the UI.
- 5xx, timeouts, and network errors are retried with exponential backoff. After 3 failed attempts the event is moved to dead letter.
- Request timeout is 10 seconds.
200 as soon as you have accepted the payload.
Delivery log and replay
Every attempt — successful or not — is recorded in the webhook’s delivery log for 30 days. For each row you see the event type, HTTP status code, duration, response excerpt, and attempt number. If a delivery fails permanently or dead-letters, click Replay on the failed row to re-queue the event. The dispatcher picks it up within 10 seconds and a new log entry appears when the retry lands.Idempotency
Replays and retries send the same event ID (X-AgentHub-Event-Id). Keep a short-lived cache of processed IDs on your side so repeated deliveries are safe.