1. Webhook
InboxKit
  • Introduction
  • Order
    • Place Order
      POST
  • Webhook
    • Webhook Integration & Signature Verification
      POST
    • Event: Domain Status Changed
      POST
    • Event: Mailbox Status Changed
      POST
    • Events: OAuth Consent & Client ID Changes
      POST
  • Account
    • Get account details
      GET
  • Workspaces
    • List workspaces
      GET
    • Get workspace details
      GET
    • Create workspace
      POST
    • Update workspace
      PUT
    • Delete workspace
      DELETE
    • Update workspace webhook
      POST
  • Domains
    • Domain Renewals
    • Search available domains
      POST
    • Check if domain is banned from registration
      GET
    • Check domain availability
      GET
    • Register domains
      POST
    • List domains
      POST
    • List assignable domains
      GET
    • Remove domains
      POST
    • Set domain forwarding
      POST
    • Set catch-all email
      POST
    • Remove catch-all email
      DELETE
    • Get nameservers for domain connection
      POST
    • Check nameservers propagation
      POST
    • Check Workspace Availability
      POST
    • Set DMARC Configuration
      POST
    • Remove DMARC Configuration
      DELETE
    • Regenerate Domain Nameservers
      POST
    • Request Domain Renewal
      POST
    • Check Renewal Status
      GET
  • Cloudflare Domains
    • Connect Cloudflare Domains
    • List Connected Cloudflare Domains
    • Get Domain Details
    • Disconnect Cloudflare Domains
    • List Cloudflare Zones
  • Mailboxes
    • List mailboxes
    • Add or update signature for mailboxes
    • Delete signature for mailboxes
    • Show mailbox credentials
    • Get mailbox details
    • Buy mailboxes
    • Check mailbox status
    • Cancel mailboxes
    • Update mailbox
    • Update mailbox profile picture
    • Generate TOTP
    • Change username
    • Change password
    • Check mailbox availability
    • Get Failure Reason
    • Uncancel mailboxes
  • DNS
    • Get DNS records
    • Add DNS records
    • Update DNS records
    • Delete DNS records
  • Sequencers
    • Export mailboxes status
    • List sequencer platforms
    • Get sequencer tags
    • List sequencers
    • Export mailboxes
    • Add sequencer
    • Update sequencer
    • Delete sequencers
  • Billing
    • Get pricing plans
    • Get subscription details
    • Change subscription plan
    • Cancel subscription
    • Get wallet details
    • Add credits to wallet
    • Update auto top-up settings
    • Get billing portal link
  • Warmup
    • List Warmup Subscriptions
    • Get Warmup Subscription Details
    • Add Warmup to Mailboxes
    • Pause Warmup for Mailboxes
    • Resume Warmup for Mailboxes
    • Cancel Warmup for Mailboxes
    • Get Warmup Statistics
    • Get Warmup Pricing
  • Client ID Requests
    • Initiate Client ID Request
    • Get Client ID Request Status
    • List Client ID Requests
  • Mailbox Forwarding
    • Setup Email Forwarding
    • Update Email Forwarding
    • Remove Email Forwarding
    • List Forwarding Jobs
  • Consent Request
    • Initiate Consent Request
    • Get Consent Request Status
    • List Consent Requests
  • Tags
    • Assign tags to domains or mailboxes
    • Get all tags
    • Create a new tag
    • Delete a tag
  • Prewarm
    • Search Domains
    • Search Mailboxes
    • Buy Prewarmed Mailboxes
    • Check Order Status
    • Check Availability
  • Inbox Placement
    • Tests
      • Create Test
      • List Tests
      • Get Test Results
    • Scheduled Tests
      • List Scheduled Tests
      • Get Scheduled Test
      • Pause Scheduled Test
      • Resume Scheduled Test
      • Delete Scheduled Test
  • InfraGuard
    • InfraGuard - Subscriptions
      • List protected domains
      • Get subscription details
      • Enable InfraGuard for domains
      • Cancel InfraGuard for domains
      • Get workspace statistics
      • Get pricing info
    • InfraGuard - Monitoring
      • Get blacklist check history
      • Get DNS check history
      • Get current bounce metrics
      • Get bounce check history
    • InfraGuard - Settings
      • Update subscription settings
      • Trigger manual check
    • InfraGuard - Alerts
      • List alerts
      • Acknowledge an alert
      • Resolve an alert
    • InfraGuard - Action Items
      • List action items
      • Get action item statistics
      • Resolve an action item
      • Dismiss an action item
  • Email Insight
    • Email Insights - Workspace
      • Get Workspace Overview
      • Get Mailboxes Health
      • Get High Bounce Mailboxes
      • Get Workspace Activity
    • Email Insights - Mailbox
      • Get Mailbox Stats
      • Get Mailbox Deliverability
      • Get Mailbox Health
      • Get Mailbox Trends
      • Get Mailbox Activity
      • Get Mailbox Bounce Events
      • Get Mailbox Top Recipients
      • Get Mailbox Top Recipient Domains
      • Get Mailbox Message Breakdown
      • Get Mailbox Subject Analysis
  • Domain Renewals
  • Schemas
    • Schemas
      • WebhookPayload
      • DomainStatusWebhook
      • Tag
      • DomainEventData
      • MailboxStatusWebhook
      • MailboxEventData
      • Domain
      • Mailbox
      • ChangeDetails
      • WebhookResponse
      • ErrorResponse
  1. Webhook

Event: Domain Status Changed

POST
https://api.inboxkit.com/webhook
Maintainer:Not configured

Event: domain.status_changed#

Fires whenever a domain in your InboxKit account transitions to a new lifecycle status.
🔗 This page documents one of the four events delivered to your webhook URL. For the shared HTTP contract, headers, signature verification, and retry logic, see the Webhook Integration & Signature Verification page.

Applies to#

ScopeValue
ProvidersAll — domains are provider-agnostic.
TriggerAny significant change to domain.status.
Typical cadenceDelivered to your endpoint within approximately 30 seconds of the status change.

Headers (reminder)#

POST /your-path HTTP/1.1
Content-Type: application/json
User-Agent: InboxKit-Webhook/1.0
X-InboxKit-Event: domain.status_changed
X-InboxKit-Timestamp: 2024-01-10T15:30:45.123Z
X-InboxKit-Signature: sha256=<hex>

Payload envelope#

{
  "event": "domain.status_changed",
  "timestamp": "<ISO 8601 UTC>",
  "team_id": "<your team uid>",
  "team_name": "<your team name>",
  "data": {
    "domain": { /* see fields below */ },
    "metadata": { /* see fields below */ }
  }
}

data.domain fields#

Every field InboxKit sends in a domain.status_changed webhook is listed below.
FieldTypeNullableDescription
uidstringnoUnique, stable identifier for this domain. Use this as your idempotency key.
namestringnoFully qualified domain name (e.g. yourdomain.com).
tldstringno (may be empty)Top-level domain, lowercased (e.g. "com"). Empty string if not set.
statusenumnoNew status. See the status reference table below.
previous_statusstring | nullyesPrevious status before this transition, if known.
dns_propagation_statusenumnopending | waiting | propagated | failed | errored.
nameserversstring[]noList of nameservers assigned to the domain. Empty array if none. For purchased domains this is typically InboxKit-managed; for connected domains it's whatever the customer set at their registrar.
renewal_dateISO 8601 | nullyesWhen the domain is next due for renewal.
renewal_statusenumnona | pending | completed | failed.
registration_yearsintegernoHow many years the domain was registered for.
registration_dateISO 8601 | nullyesWhen the domain was first registered with InboxKit.
pricenumbernoPrice paid in the team's billing currency. 0 if not applicable.
connection_typeenumnopurchased | connected | "" (empty when not yet set).
forwarding_urlstringno (may be empty)URL-level forwarding target, if configured.
forwarding_emailstringno (may be empty)Email-level forwarding target, if configured.
forwarding_statusenumno (may be empty)"" | pending | processing | completed | failed | retrying.
enable_mask_forwardingbooleannoWhether forwarding uses masking.
dmarc_emailstringno (may be empty)DMARC report recipient.
catch_all_emailstringno (may be empty)Catch-all mailbox address.
assigned_mailboxesintegernoNumber of mailboxes currently using this domain.
available_mailboxesintegernoRemaining mailbox capacity on this domain.
tagsstring[]noFree-form tags you've applied to the domain.

data.metadata fields#

FieldTypeDescription
updated_atISO 8601When the domain document was last updated in InboxKit's database. Useful for ordering / deduping.
workspace_idstringInternal workspace identifier the domain belongs to.

Status values that emit webhooks#

The following domain status values do trigger a domain.status_changed webhook when a domain transitions to them:
StatusWhat it means
cartDomain is in the shopping cart.
registration_in_progressRegistrar is processing the new domain registration.
dns_setup_pendingDomain is registered; DNS records still need to be applied.
waiting_for_dns_propagationDNS records are published; waiting for global propagation.
activeFully operational — DNS is propagated, domain is ready to host mailboxes.
inactiveDomain is configured but not currently serving traffic.
payment_failedPayment (usually a renewal) failed; the customer needs to retry billing.
cancelledSubscription cancelled.
deletedFully removed from InboxKit. Terminal state.

Status values that exist but do NOT emit webhooks#

The following statuses exist in InboxKit but do not emit a webhook when a domain transitions to them. You will never receive an event for one of these transitions:
pending_payment, payment_processing, refunded, refunded_due_to_banned_keywords, not_connected, no_longer_available, scheduled_for_deletion, expired_propagation, pending_activation.
You may still see them as the previous_status of an event that transitions out of them (e.g. pending_payment → active fires because the new status is active).

Example receiver (Node.js)#

Examples#

Use the selector on the right-hand side to see different realistic transitions. All six examples below are transitions to statuses that actually emit webhooks in production.

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Header Params

Body Params application/json

Examples

Responses

🟢200OK
application/json
Webhook received successfully. InboxKit will mark the delivery as complete and will not retry.
Body

🟠400Bad Request
🟠401Unauthorized
🔴500Server Error
Request Request Example
Shell
JavaScript
Java
Swift
cURL
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": "domain.status_changed",
    "timestamp": "2024-01-10T15:30:45.123Z",
    "team_id": "ABC-123-DEF-TEAM",
    "team_name": "Marketing Team",
    "data": {
        "domain": {
            "uid": "ABC-123-DEF-DOMAIN",
            "name": "yourdomain.com",
            "tld": "com",
            "status": "active",
            "previous_status": "pending_payment",
            "dns_propagation_status": "propagated",
            "nameservers": [
                "ns1.inboxkit.com",
                "ns2.inboxkit.com"
            ],
            "renewal_date": "2025-01-10T00:00:00.000Z",
            "renewal_status": "na",
            "registration_years": 1,
            "registration_date": "2024-01-10T00:00:00.000Z",
            "price": 12.99,
            "connection_type": "purchased",
            "forwarding_url": "",
            "forwarding_email": "",
            "forwarding_status": "",
            "enable_mask_forwarding": false,
            "dmarc_email": "",
            "catch_all_email": "",
            "assigned_mailboxes": 0,
            "available_mailboxes": 50,
            "tags": [
                "production",
                "primary"
            ]
        },
        "metadata": {
            "updated_at": "2024-01-10T15:30:45.123Z",
            "workspace_id": "ABC-123-DEF-WORKSPACE"
        }
    }
}'
Response Response Example
200 - Success
A minimal 200 response body is enough. The body content is not inspected by InboxKit — any 2xx status code counts as success.
{
  "received": true,
  "message": "Webhook processed successfully"
}
Modified at 2026-04-11 14:36:35
Previous
Webhook Integration & Signature Verification
Next
Event: Mailbox Status Changed
Built with