2026-02-03

Message delivered

Triggered when a sent message has been delivered to the recipient's device. This confirms the message reached the recipient, but does not indicate it was read. Only available for iMessage conversations with delivery receipts.

Timestamps: sent_at and delivered_at are set, read_at is null.

postWebhookmessage.delivered.v2026-02-03

Payload

api_versionstring required

API version for the webhook payload format

webhook_versionstring required

Date-based webhook payload version. Determined by the ?version= query parameter in your webhook subscription URL. If no version parameter is specified, defaults based on subscription creation date.

event_type'message.sent' | 'message.received' | 'message.read' | 'message.delivered' | 'message.failed' | 'message.edited' | 'reaction.added' | 'reaction.removed' | 'poll.received' | 'poll.failed' | 'poll.sent' | 'poll.delivered' | 'poll.read' | 'poll.updated' | 'poll.vote.added' | 'poll.vote.removed' | 'poll.reaction.added' | 'participant.added' | 'participant.removed' | 'chat.created' | 'chat.group_name_updated' | 'chat.group_icon_updated' | 'chat.group_name_update_failed' | 'chat.group_icon_update_failed' | 'chat.background_updated' | 'chat.background_update_failed' | 'chat.typing_indicator.started' | 'chat.typing_indicator.stopped' | 'phone_number.status_updated' | 'phone_number.assigned' | 'phone_number.released' | 'contact_card.received' | 'call.initiated' | 'call.ringing' | 'call.answered' | 'call.ended' | 'call.failed' | 'call.declined' | 'call.no_answer' | 'location.sharing.started' | 'location.sharing.stopped' | 'payment.succeeded' | 'payment.canceled' | 'payment.expired' | 'payment.declined' | 'payment.authorized' | 'connection.created' | 'connection.revoked' | 'zero_day_retention.updated' | 'phone_number.forwarding_updated' | 'environment.line_moved' | 'contact_card.created' | 'contact_card.updated' | 'contact_card.deleted' | 'api_token.created' | 'api_token.renamed' | 'api_token.expiry_scheduled' | 'api_token.expired' | 'api_token.activated' | 'api_token.deleted' | 'environment.created' | 'environment.renamed' | 'environment.deleted' | 'webhook_subscription.created' | 'webhook_subscription.deleted' | 'webhook_subscription.target_url_changed' | 'webhook_subscription.enabled' | 'webhook_subscription.disabled' | 'webhook_subscription.events.updated' | 'webhook_subscription.phone_numbers.updated' | 'webhook_subscription.routing_headers_set' | 'webhook_subscription.routing_headers_cleared' | 'team_member.added' | 'team_member.signed_in' | 'team_member.signed_out' required

Valid webhook event types that can be subscribed to.

Note: message.edited is only delivered to subscriptions using webhook_version: "2026-02-03". Subscribing to this event on a v2025 subscription will not produce any deliveries.

event_idstring uuid required

Unique identifier for this event (for deduplication)

created_atstring date-time required

When the event was created

trace_idstring required

Trace ID for debugging and correlation across systems.

partner_idstring required

Partner identifier. Present on all webhooks for cross-referencing.

Example payload

{
  "api_version": "v3",
  "webhook_version": "2025-01-01",
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "created_at": "2025-11-23T17:30:00Z",
  "trace_id": "abc123def456",
  "partner_id": "partner_abc123",
  "data": {
    "chat": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "is_group": true,
      "owner_handle": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "handle": "+15551234567",
        "service": "iMessage",
        "joined_at": "2025-05-21T15:30:00.000-05:00",
        "line_type": "iMessage"
      },
      "health_status": {
        "status": "AT_RISK",
        "doc_url": "https://docs.linqapp.com/channel/imessage/guides/chats/chat-health#at-risk",
        "updated_at": "2026-05-01T18:28:25Z"
      }
    },
    "id": "550e8400-e29b-41d4-a716-446655440001",
    "idempotency_key": "unique-key",
    "direction": "outbound",
    "sender_handle": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "handle": "+15551234567",
      "service": "iMessage",
      "joined_at": "2025-05-21T15:30:00.000-05:00",
      "line_type": "iMessage"
    },
    "parts": [
      {
        "type": "text",
        "value": "Hello!"
      }
    ],
    "sent_at": "2026-01-30T20:49:19.704Z",
    "delivered_at": "2026-01-30T20:49:20.352Z",
    "reconciled_at": "2026-01-30T22:05:00.000Z",
    "effect": {
      "type": "bubble",
      "name": "gentle"
    },
    "service": "iMessage",
    "preferred_service": "iMessage"
  }
}

Response

Webhook received successfully

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.