mailbox.status_changed🔗 For the shared HTTP contract, headers, signature verification, and retry logic, see the Webhook Integration & Signature Verification page.
password — main mailbox login passwordapp_password — application-specific passwordsecret — secret key for 2FA / secondary authrefresh_token values are intentionally excluded from webhook payloads for security reasons. If you need them, use the authenticated mailbox read API instead.| Scope | Value |
|---|---|
| Providers | All InboxKit-managed mailboxes. data.mailbox.platform is currently one of GOOGLE, MICROSOFT, AZURE, or SMTP. |
| Trigger | Any significant change to mailbox.status. |
| Typical cadence | Delivered to your endpoint within approximately 30 seconds of the status change. |
Forward-compatibility tip. InboxKit may add new platformvalues in the future. When you switch ondata.mailbox.platform, always include adefaultbranch so an unknown platform logs a warning instead of crashing your handler.
POST /your-path HTTP/1.1
Content-Type: application/json
User-Agent: InboxKit-Webhook/1.0
X-InboxKit-Event: mailbox.status_changed
X-InboxKit-Timestamp: 2024-01-10T16:45:30.456Z
X-InboxKit-Signature: sha256=<hex>{
"event": "mailbox.status_changed",
"timestamp": "<ISO 8601 UTC>",
"team_id": "<your team uid>",
"team_name": "<your team name>",
"data": {
"mailbox": { /* see fields below */ },
"metadata": { /* see fields below */ }
}
}data.mailbox fieldsmailbox.status_changed webhook is listed below.| Field | Type | Nullable | Description |
|---|---|---|---|
uid | string | no | Unique, stable identifier for this mailbox. Use this as your idempotency key. |
email | string | no | Full email address (computed as ${username}@${domain_name}). |
username | string | no | Local-part of the email address. |
first_name | string | no (may be empty) | First name on the mailbox. |
last_name | string | no (may be empty) | Last name on the mailbox. |
profile_picture | string | no (may be empty) | URL to profile picture, or "" if not set. |
status | enum | no | New status. See the status reference table below. |
previous_status | string | null | yes | Previous status before this transition, if known. |
platform | enum | no | GOOGLE, MICROSOFT, AZURE, or SMTP. New values may be added in the future. |
renewal_date | ISO 8601 | null | yes | When the mailbox subscription is next due for renewal. |
renewal_status | enum | no | na | pending | completed | failed | cancelled | permanent_failure. |
is_admin | boolean | no | Whether this mailbox has admin privileges on its Workspace tenant. |
password | string | no | 🔴 DECRYPTED main mailbox password. See security section above. |
app_password | string | no | 🔴 DECRYPTED application-specific password (e.g. for SMTP sending). |
secret | string | no | 🔴 DECRYPTED secret key for 2FA or secondary auth. |
is_add_on | boolean | no | Whether this is an add-on mailbox (piggy-backed on an existing Workspace). |
Not included: refresh_tokenis intentionally omitted from the payload. If you need it, fetch it via the authenticated API.
data.metadata fields| Field | Type | Description |
|---|---|---|
updated_at | ISO 8601 | When the mailbox document was last updated in InboxKit's database. |
workspace_id | string | Internal workspace identifier. |
domain_id | string | Internal identifier of the domain the mailbox belongs to. |
domain_name | string | The full domain name the mailbox belongs to (same as the part after @ in email). |
mailbox.status_changed webhook when a mailbox transitions to it.| Status | What it means |
|---|---|
pending | Initial state — mailbox has been requested but provisioning hasn't started. |
processing | Generic "work in progress" state. |
waiting_for_dns_propagation | Mailbox is waiting on DNS records on its domain to propagate. |
waiting_for_activation_email | Waiting for the provider's activation email (Microsoft). |
activation_email_received | Activation email received; moving on to configuration. |
configuring_workspace | Google/Microsoft workspace-level setup in progress. |
configuring_dns | Applying mailbox-specific DNS records (MX/SPF/DKIM). |
configuring_dkim | Generating and publishing DKIM keys. |
configuring_auth | Final authentication setup (OAuth consent, app passwords, etc.). |
finalizing_setup | Last-mile tasks before the mailbox goes active. |
| Status | What it means |
|---|---|
active | Mailbox is live and ready to send/receive. Credentials in this payload are current. |
inactive | Mailbox exists but is currently paused. |
scheduled | Scheduled to become active at a future time. |
| Status | What it means |
|---|---|
suspended | Mailbox has been suspended (admin action or provider-side). |
failed | Provisioning or a state transition failed. Check previous_status for context. |
renewal_failed | The mailbox's subscription renewal (billing) failed. Typically appears alongside renewal_status: "failed". Surface this to your billing flow so the customer can retry payment. |
scheduled_for_cancellation | Customer cancelled; mailbox will be cancelled soon. |
cancelled | Subscription cancelled. |
archived | Mailbox has been archived but retained. |
deleted | Fully removed from InboxKit. Terminal state. |
curl --location --request POST 'https://api.inboxkit.com/webhook' \
--header 'X-InboxKit-Signature: sha256=b0344c61d8db38e0f469e85fc6e8c055e0742e8d9a9c5a9e8e4d3f7c5a8b9c0d' \
--header 'X-InboxKit-Event: domain.status_changed' \
--header 'X-InboxKit-Timestamp: 2024-01-10T15:30:45.123Z' \
--header 'User-Agent: InboxKit-Webhook/1.0' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "mailbox.status_changed",
"timestamp": "2024-01-10T16:45:30.456Z",
"team_id": "ABC-123-DEF-TEAM",
"team_name": "Marketing Team",
"data": {
"mailbox": {
"uid": "ABC-123-DEF-MAILBOX",
"email": "[email protected]",
"username": "jane.doe",
"first_name": "Jane",
"last_name": "Doe",
"profile_picture": "",
"status": "active",
"previous_status": "configuring_auth",
"platform": "GOOGLE",
"renewal_date": "2025-01-10T00:00:00.000Z",
"renewal_status": "na",
"is_admin": false,
"password": "Mb!xyzAB8921",
"app_password": "app-Xy9!pq7M",
"secret": "",
"is_add_on": false
},
"metadata": {
"updated_at": "2024-01-10T16:45:30.456Z",
"workspace_id": "ABC-123-DEF-WORKSPACE",
"domain_id": "ABC-123-DEF-DOMAIN-ID",
"domain_name": "yourdomain.com"
}
}
}'{
"received": true,
"message": "Webhook processed successfully"
}