---
title: "Email thread replied"
method: POST
path: "email.thread_replied"
tags: ["Webhook Events"]
---

# Email thread replied

`POST email.thread_replied` (webhook)

Mail from someone other than the mailbox arrived in the thread of a message sent with `trackReplies: true`. Works on text and html sends. Auto-replies count as replies; bounce reports do not and fire `email.bounced` instead.

`reply.clean.text` is the reply without the quoted history, so an agent can act on it without reading the message. The reply also arrives as `message.received` with its full content.

## Payload

- WebhookPayloadEmailThreadReplied: Webhook payload for email.thread_replied.
  - `id` string, required
  - `profiles` object[]: The profiles this event belongs to, each with the externalId you set on it (null when none is set). Use it to route the event to your tenant without storing Zernio profile ids. Present on every event tied to a profile, absent on events that belong to none. Events spanning several profiles (a post published to accounts of different profiles) list each once.
    - `id` string, required
    - `externalId` string, nullable, required
  - `test` boolean: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
  - `event` 'email.thread_replied', required
  - `account` object, required
    - `accountId` string
    - `profileId` string
    - `platform` string
    - `username` string
    - `displayName` string, nullable
  - `email` WebhookEmailTrackedMessage, required: The tracked message an email.* event is about. `messageId` and `threadId` are the provider ids (read the message with `GET /v1/email/messages/{messageId}`); `metadata` is what you sent with it.
    - `messageId` string
    - `threadId` string
    - `trackingId` string: Also returned as `data.trackingId` by the send.
    - `metadata` object, nullable
  - `reply` object, required
    - `messageId` string: Provider id of the reply.
    - `from` EmailAddress
      - `email` string, email, required
      - `name` string, nullable
    - `receivedAt` string, date-time
    - `count` integer: Replies in the thread so far.
    - `clean` object: The reply without the quoted history, as `clean=true` returns it on a message read. `status: fallback` means nothing could be stripped safely and `text` is the whole body.
      - `text` string
      - `status` 'stripped' | 'unchanged' | 'fallback'
  - `timestamp` string, date-time, required

## Acknowledgement `200`

Webhook received successfully

---

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