# Webhook events

> Every webhook event type the BloomText API sends, with its signed envelope, payload fields, and an example.

Source: https://www.bloomtext.com/developers/api/reference/webhook-events/

Every delivery shares one envelope. The `payload` changes with the event `type` and carries IDs, not message content, so fetch the resource with the API when you need more. See [Webhooks](https://www.bloomtext.com/developers/api/webhooks/) to set up an endpoint and verify signatures.

### The event envelope

- `id` (UUID, required): Stable event UUID used for consumer deduplication.

- `type` (conversation.message.created, message.reaction.created, message.reaction.deleted, conversation.participant.added, conversation.participant.removed, export.ready, required): 

- `occurred_at` (timestamp, required): 

- `organization_id` (UUID, required): 

- `delivery_attempt` (integer, required): 

- `payload` (object, required): Event-specific fields. See Webhooks for each event's payload.

## `conversation.message.created`

A message was sent in a conversation your app user participates in, including messages your app user sent.

### Payload

- `conversation_id` (UUID, required): 
- `message_id` (UUID, required): 
- `sender_id` (UUID, required): 

```json filename="conversation.message.created"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "conversation.message.created",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "message_id": "4cbfdb50-6b7d-45d4-94b3-05a52ce3f4d1",
    "sender_id": "8b9c2d2f-6b1a-44f4-a7b1-0d6d3f2d6f55"
  }
}
```

## `message.reaction.created`

Someone added an emoji reaction to a message in one of your conversations.

### Payload

- `conversation_id` (UUID, required): 
- `message_id` (UUID, required): 
- `user_id` (UUID, required): 
- `emoji` (string, required): 

```json filename="message.reaction.created"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "message.reaction.created",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "message_id": "4cbfdb50-6b7d-45d4-94b3-05a52ce3f4d1",
    "user_id": "8b9c2d2f-6b1a-44f4-a7b1-0d6d3f2d6f55",
    "emoji": "👍"
  }
}
```

## `message.reaction.deleted`

Someone removed their reaction from a message.

### Payload

- `conversation_id` (UUID, required): 
- `message_id` (UUID, required): 
- `user_id` (UUID, required): 
- `emoji` (string, required): 

```json filename="message.reaction.deleted"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "message.reaction.deleted",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "message_id": "4cbfdb50-6b7d-45d4-94b3-05a52ce3f4d1",
    "user_id": "8b9c2d2f-6b1a-44f4-a7b1-0d6d3f2d6f55",
    "emoji": "👍"
  }
}
```

## `conversation.participant.added`

A user joined one of your conversations.

### Payload

- `conversation_id` (UUID, required): 
- `user_id` (UUID, required): 

```json filename="conversation.participant.added"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "conversation.participant.added",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "user_id": "8b9c2d2f-6b1a-44f4-a7b1-0d6d3f2d6f55"
  }
}
```

## `conversation.participant.removed`

A user left or was removed from one of your conversations. If it was your app user, you receive no further events for that conversation.

### Payload

- `conversation_id` (UUID, required): 
- `user_id` (UUID, required): 

```json filename="conversation.participant.removed"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "conversation.participant.removed",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "user_id": "8b9c2d2f-6b1a-44f4-a7b1-0d6d3f2d6f55"
  }
}
```

## `export.ready`

An export you started has finished. Fetch the export to get its short-lived `download_url`.

### Payload

- `export_id` (UUID, required): 
- `conversation_id` (UUID, required): 
- `status` (string, required): 

```json filename="export.ready"
{
  "id": "2d8f1b0b-7b27-4b3b-bf2c-4d05d89d2f4d",
  "type": "export.ready",
  "occurred_at": "2026-09-21T12:00:00Z",
  "organization_id": "6db1e3f5-9b7f-4f2b-8be1-0f1e1d7d7d8c",
  "delivery_attempt": 1,
  "payload": {
    "export_id": "7a2e4c6b-9d1f-4b3a-8e5c-2f0d1b3a5c7e",
    "conversation_id": "e5c3b7b8-8f08-4d5a-9af1-0d11b0f4b7a0",
    "status": "ready"
  }
}
```
