---
title: "Read Receipts Webhook"
method: POST
path: "read-receipts"
tags: ["Webhooks"]
---

# Read Receipts Webhook

`POST read-receipts` (webhook)

Signed webhook sent on every delivery-status change (sent, delivered, read, failed) of a WhatsApp message you send

[Docs](https://docs.famulor.io/api-v1/webhooks/read-receipts)

## Payload

- object
  - `event` string: The event type. Value: `message_status`
  - `whatsapp_message_id` integer: Numeric identifier of the message — the same `whatsapp_message_id` returned when you sent the message. Use this to correlate the status update with the original send.
  - `message_sid` string: Provider message identifier for messages sent over Twilio, or `null`
  - `meta_message_id` string, nullable: Provider message identifier (WhatsApp `wamid`) for messages sent over the Meta Cloud API, or `null`
  - `conversation_id` string: Unique identifier (UUID) of the conversation the message belongs to, or `null`
  - `assistant_id` string: Unique identifier (UUID) of the assistant connected to the sender, or `null`
  - `sender` object: The WhatsApp sender the message was sent from
    - `id` integer: Numeric identifier of the sender
    - `phone_number` string: The sender's WhatsApp phone number
    - `display_name` string: The sender's display name
  - `to` string: The recipient phone number
  - `from` string: The sender phone number
  - `direction` string: Message direction. Value: `outbound`
  - `status` 'sent' | 'delivered' | 'read' | 'failed' | 'undelivered': The new delivery status. Possible values: `sent`, `delivered`, `read`, `failed`, `undelivered`
  - `error_code` integer, nullable: Provider error code when `status` is `failed` or `undelivered`, otherwise `null`
  - `error_message` string, nullable: Raw provider error message when the message failed, otherwise `null`
  - `error_description` string, nullable: Human-readable description of the error, otherwise `null`
  - `timestamp` string: ISO 8601 timestamp of when the platform recorded the status change, in the WhatsApp number owner's configured timezone
  - `provider_timestamp` string: ISO 8601 timestamp of the carrier's own event time, in the owner's configured timezone. Present for messages sent over the Meta Cloud API; `null` over Twilio (Twilio's status callback does not include an event time). Prefer this when present — it is the carrier's authoritative time.

## Acknowledgement `200`

Bestätige den Empfang mit 2xx. Antwortet dein Endpunkt nicht mit 2xx, wiederholt Famulor die Zustellung.

---

[API](https://skmtc.dev/famulor/apis/famulor-api.md) · [All operations](https://skmtc.dev/famulor/apis/famulor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/famulor/apis/famulor-api/revisions/3b938c370721?raw)
