---
title: "Email Delayed"
method: POST
path: "MessageDelayed"
tags: ["Email Events"]
---

# Email Delayed

`POST MessageDelayed` (webhook)

Triggered when an email delivery is temporarily delayed (soft fail).

This typically occurs due to temporary issues like:
- Recipient server temporarily unavailable
- Rate limiting by recipient server
- Greylisting

Ark will automatically retry delivery. You'll receive a `MessageSent` or
`MessageDeliveryFailed` event when the final outcome is determined.

## Payload

- WebhookPayload — Webhook event payload sent to your configured endpoint
  - `event` 'MessageSent' | 'MessageDelayed' | 'MessageDeliveryFailed' | 'MessageBounced' | 'MessageHeld' | 'MessageLoaded' | 'MessageLinkClicked' | 'DomainDNSError' | 'SendLimitApproaching' | 'SendLimitExceeded', required — The type of event that occurred
  - `timestamp` number, float, required — Unix timestamp when the event occurred (with microsecond precision)
  - `uuid` string — Unique identifier for this webhook delivery (use for idempotency)
  - `payload` WebhookEventData, required — Event-specific data. The structure varies by event type: - **Delivery events** (MessageSent, MessageDelayed, MessageDeliveryFailed, MessageHeld): Include `message`, `status`, `details`, `output`, `sent_with_ssl`, `timestamp`, `time` - **MessageBounced**: Includes `original_message` and `bounce` (both are message objects) - **Engagement events** (MessageLoaded, MessageLinkClicked): Include `message`, `ip_address`, `user_agent` - **DomainDNSError**: Includes `server`, `domain`, `uuid`, `dns_checked_at`, and DNS status fields - **SendLimit events**: Include `server`, `volume`, `limit`
    - `message` WebhookMessageData — Email message information included in webhook payloads
      - `id` integer — Internal message ID
      - `token` string — Message token for identification
      - `direction` 'outgoing' | 'incoming' — Direction of the email
      - `message_id` string — RFC 5322 Message-ID header
      - `to` string, email — Recipient email address
      - `from` string, email — Sender email address
      - `subject` string — Email subject line
      - `timestamp` number, float — Unix timestamp when the message was created (with microsecond precision)
      - `spam_status` 'NotChecked' | 'Spam' | 'NotSpam' — Spam check status
      - `tag` string, nullable — Tag applied to the email (null if not set)
      - `metadata` object, nullable — Custom metadata attached when the email was sent. Use this to correlate webhook events with your internal systems. Returns null if no metadata was provided.
    - `original_message` WebhookMessageData — Email message information included in webhook payloads
      - `id` integer — Internal message ID
      - `token` string — Message token for identification
      - `direction` 'outgoing' | 'incoming' — Direction of the email
      - `message_id` string — RFC 5322 Message-ID header
      - `to` string, email — Recipient email address
      - `from` string, email — Sender email address
      - `subject` string — Email subject line
      - `timestamp` number, float — Unix timestamp when the message was created (with microsecond precision)
      - `spam_status` 'NotChecked' | 'Spam' | 'NotSpam' — Spam check status
      - `tag` string, nullable — Tag applied to the email (null if not set)
      - `metadata` object, nullable — Custom metadata attached when the email was sent. Use this to correlate webhook events with your internal systems. Returns null if no metadata was provided.
    - `bounce` WebhookMessageData — Email message information included in webhook payloads
      - `id` integer — Internal message ID
      - `token` string — Message token for identification
      - `direction` 'outgoing' | 'incoming' — Direction of the email
      - `message_id` string — RFC 5322 Message-ID header
      - `to` string, email — Recipient email address
      - `from` string, email — Sender email address
      - `subject` string — Email subject line
      - `timestamp` number, float — Unix timestamp when the message was created (with microsecond precision)
      - `spam_status` 'NotChecked' | 'Spam' | 'NotSpam' — Spam check status
      - `tag` string, nullable — Tag applied to the email (null if not set)
      - `metadata` object, nullable — Custom metadata attached when the email was sent. Use this to correlate webhook events with your internal systems. Returns null if no metadata was provided.
    - `status` 'Sent' | 'SoftFail' | 'HardFail' | 'Held' — Delivery status. Values correspond to event types: - `Sent` (MessageSent) - `SoftFail` (MessageDelayed) - `HardFail` (MessageDeliveryFailed) - `Held` (MessageHeld)
    - `details` string — Human-readable details about the delivery attempt
    - `output` string — Raw SMTP response from the receiving server (truncated to 512 chars)
    - `sent_with_ssl` boolean — Whether the message was delivered over a TLS connection
    - `time` number, float — Time taken to deliver in seconds
    - `timestamp` number, float — Unix timestamp of the delivery attempt (with microsecond precision)
    - `url` string — The URL that was clicked (for MessageLinkClicked events)
    - `token` string — Unique token for the clicked link (for MessageLinkClicked events)
    - `ip_address` string — IP address of the recipient (for MessageLoaded and MessageLinkClicked events)
    - `user_agent` string — User agent of the recipient's email client (for MessageLoaded and MessageLinkClicked events)
    - `server` WebhookServerData — Server information included in some webhook payloads
      - `uuid` string — Server UUID
      - `name` string — Server name
      - `permalink` string — Server permalink/slug
      - `organization` string — Organization permalink
    - `domain` string — Domain name with DNS issues (for DomainDNSError events)
    - `uuid` string — Unique identifier for the domain (for DomainDNSError events)
    - `dns_checked_at` number, float — Unix timestamp when DNS was checked (for DomainDNSError events)
    - `spf_status` 'OK' | 'Missing' | 'Invalid' — SPF record status (for DomainDNSError events)
    - `spf_error` string, nullable — SPF error message if status is not OK
    - `dkim_status` 'OK' | 'Missing' | 'Invalid' — DKIM record status (for DomainDNSError events)
    - `dkim_error` string, nullable — DKIM error message if status is not OK
    - `mx_status` 'OK' | 'Missing' | 'Invalid' — MX record status (for DomainDNSError events)
    - `mx_error` string, nullable — MX error message if status is not OK
    - `return_path_status` 'OK' | 'Missing' | 'Invalid' — Return path record status (for DomainDNSError events)
    - `return_path_error` string, nullable — Return path error message if status is not OK
    - `volume` integer — Current send volume in the last hour (for SendLimit events)
    - `limit` integer — Configured send limit per hour (for SendLimit events)

## Acknowledgement `200`

Webhook received successfully

---

[API](https://skmtc.dev/arkhq-io/apis/ark-email-api.md) · [All operations](https://skmtc.dev/arkhq-io/apis/ark-email-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/arkhq-io/ark-email-api/revisions/b8e976f80ad3/schema)
