---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/flex/developer/copilot-webhooks#article
headline: "Agent Copilot: wrap-up notes webhook (public beta)"
description: Configure a wrap-up notes webhook to send Agent Copilot notes from Flex to your CRM or database, and learn the note_created and note_updated event payloads.
url: https://www.twilio.com/docs/flex/developer/copilot-webhooks
inLanguage: en
dateModified: 2026-08-13T17:02:08.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Agent Copilot: wrap-up notes webhook (public beta)

> \[!IMPORTANT]
>
> Agent Copilot is currently available as a Public Beta product and the information contained in this document is subject to change. This means that some features are not yet implemented and others may be changed before the product is declared as Generally Available. Public Beta products are not covered by a SLA.

> \[!WARNING]
>
> Agent Copilot is not a HIPAA Eligible Service or PCI compliant and should not be used in Flex workflows that are subject to HIPAA or PCI. However, we offer mitigation tools such as PII redaction. To learn more, see [AI data use](/docs/flex/admin-guide/setup/copilot#ai-data-use).

## Overview

You can use a [webhook](/docs/glossary/what-is-a-webhook) so that notes flow from Flex to your own system, like a CRM or database. When a note is created and an agent clicks **Complete**, Twilio sends your web application an HTTP request to the URL you specify.

To learn more about Agent Copilot, see [Agent Copilot for administrators](/docs/flex/admin-guide/setup/copilot).

## Add a webhook URL

1. In [Twilio Console](https://console.twilio.com/), go to **Flex** > **AI features** > **Agent Copilot**.
2. Under **Wrap-up notes**, click **Manage auto-generation service**.
3. Under **Wrap-up notes webhook URL**, enter your URL where you'd like data sent.
4. Select your preferred method: `HTTP POST` or `HTTP GET`. Regardless of the request method, Twilio sends the same request headers and payload to your webhook URL.
5. Click **Save**.
6. To receive data, make sure to [validate the request against the signature](/docs/usage/webhooks/webhooks-security#understand-parameters-in-signature-validation).

To learn more about testing your configuration, see [Getting Started with Twilio Webhooks](/docs/usage/webhooks/getting-started-twilio-webhooks).

## Note events

The webhook will trigger when either of the following events occurs:

| Event          | Description                                                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `note_created` | Triggers when you create a note. This includes when the note is auto-generated, or if an agent chooses to enter a note instead. |
| `note_updated` | Triggers when an agent clicks **Complete**. The event payload includes any updates or edits to the auto-generated note.         |

### `note_created` event

When you create a note in Flex, Flex sends this payload.

```json title="Example note created event response"
{
    "sid": "KQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "event_type": "note_created",
    "instance_sid": "GOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "interaction_sid": "KDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "channel_sid": "UOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "participant_sid": "UTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "profile_connect_sid": "YIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "summary": null,
    "sentiment": null,
    "disposition_code_sid": null,
    "generated_summary": "The customer requested a return for a shoe.",
    "detected_language": "en-US",
    "generated_sentiment": "neutral",
    "generated_disposition_code_sid": null,
    "codes": {
      "generated": [
        {
          "disposition_code": "DC Name",
          "topic_path": "Topic 1|Sub Topic 2"
        }
      ],
      "selected": [
        {
          "disposition_code": "DC Name",
          "topic_path": "Topic 1|Sub Topic 2"
        }
      ]
    },
    "type": "wrapup",
    "date_created": "2024-01-17T21:09:00Z",
    "date_updated": "2024-01-17T21:09:00Z",
    "version": 1,
    "context": {
        "task_sid": "WTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
}
```

### `note_updated` event

When an agent edits or updates a note in Flex, Flex sends this payload.

```json title="Example note updated event response"
{
    "sid": "KQxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "event_type": "note_updated",
    "instance_sid": "GOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "interaction_sid": "KDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "channel_sid": "UOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "participant_sid": "UTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "profile_connect_sid": "YIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "summary": "test1",
    "sentiment": "positive",
    "disposition_code_sid": null,
    "generated_summary": "The customer requested a return for a shoe.",
    "detected_language": "en-US",
    "generated_sentiment": "neutral",
    "generated_disposition_code_sid": null,
    "codes": {
      "generated": [
        {
          "disposition_code": "DC Name",
          "topic_path": "Topic 1|Sub Topic 2"
        }
      ],
      "selected": [
        {
          "disposition_code": "DC Name",
          "topic_path": "Topic 1|Sub Topic 1"
        }
      ]
    },
    "type": "wrapup",
    "date_created": "2024-01-17T21:09:42Z",
    "date_updated": "2024-01-17T21:09:00Z",
    "version": 2,
    "context": {
        "task_sid": "WTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
}
```

### Properties

| Property                           | Necessity | Description                                                                                                                | Accepted values                 | Char Limit |
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------- |
| `sid`                              | Required  | The unique identifier applied to the note.                                                                                 |                                 |            |
| `event_type`                       | Required  | The type of action that triggered this webhook event.                                                                      | `note_created`,`note_updated`   |            |
| `instance_sid`                     | Required  | The unique identifier applied to the Flex instance.                                                                        |                                 |            |
| `channel_sid`                      | Required  | The unique identifier applied to the interaction channel.                                                                  |                                 |            |
| `participant_sid`                  | Optional  | The unique identifier applied to the agent who creates the note.                                                           |                                 |            |
| `profile_connect_sid`              | Optional  | The unique identifier applied to the customer profile.                                                                     |                                 |            |
| `summary`                          | Optional  | A summary generated of the note content.                                                                                   |                                 | 3000       |
| `sentiment`                        | Optional  | The customer sentiment generated and associated with the channel.                                                          | `Positive`,`Neutral`,`Negative` |            |
| `disposition_code_sid`             | Optional  | The unique identifier of the disposition code resource generated and associated with the outcome of a channel.             |                                 |            |
| `generated_summary`                | Required  | The summary that the large language model (LLM) generated.                                                                 |                                 |            |
| `detected_language`                | Required  | The supported language that the LLM detected.                                                                              | `en-US`,`es-MX`,`pt-BR`         |            |
| `generated_sentiment`              | Required  | The customer sentiment that the LLM generated then associated with the channel.                                            | `Positive`,`Neutral`,`Negative` |            |
| `generated_disposition_code_sid`   | Required  | The unique identifier of a disposition code resource that the LLM generated then associated with the outcome of a channel. |                                 |            |
| `codes.generated.disposition_code` | Required  | The generated disposition codesapplied to the note.                                                                        |                                 |            |
| `codes.generated.topic_path`       | Required  | The topic path for the note represented as a combined string of topic and subtopic separated with a pipe character (`\|`). |                                 |            |
| `codes.selected.disposition_code`  | Required  | The chosen disposition code applied to the note.                                                                           |                                 |            |
| `codes.selected.topic_path`        | Required  | The topic path for the note represented as a combined string of topic and subtopic separated with a pipe character (`\|`). |                                 |            |
| `type`                             | Required  | The type defined for the note.                                                                                             | `wrapup`                        |            |
| `date_created`                     | Required  | Timestamp when the note got created in the ISO8601 format.                                                                 |                                 |            |
| `date_updated`                     | Required  | Timestamp when the note got modified in the ISO8601 format.                                                                |                                 |            |
| `version`                          | Required  | The version of the wrap-up note resource.                                                                                  |                                 |            |
| `context.task_sid`                 | Required  | The unique identifier applied to the task.                                                                                 |                                 |            |

## Notes rate limit

Agent Copilot can generate 20 notes per second. If you hit the rate limit, you'll see a 429 error.

## Errors

If the webhook fails, the default behavior is to retry once. You can override this behavior as instructed in [Webhooks (HTTP callbacks): Connection Overrides](/docs/usage/webhooks/webhooks-connection-overrides).

In Console Debugger, you can configure an optional webhook to receive data about errors in real-time. [The debugger event](https://console.twilio.com/us1/monitor/logs/debugger/webhook) generated contains all necessary information to retry wrap-up notes. To learn more, see [Debugging Webhook Events](/docs/usage/troubleshooting/debugging-event-webhooks).

Frontend errors return the [45600 - Flex UI error][error45600]. The error cases include:

| Error case               | Agent action                                                    |
| ------------------------ | --------------------------------------------------------------- |
| Notes failed to generate | Add notes manually then complete task                           |
| Notes submission failed  | Click **complete without notes** or dismiss error and try again |

[error45600]: /docs/api/errors/45600
