> ## Documentation Index
> Fetch the complete documentation index at: https://help.withallo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Catalogue d'evenements

> Reference complete de tous les types d'evenements webhook et leurs payloads

Les evenements suivent la convention de nommage `entite.action`. Allo livre les evenements au moins une fois -- votre endpoint peut recevoir le meme evenement plusieurs fois. Utilisez l'en-tete `webhook-id` pour dedupliquer. Voir [Bonnes pratiques](/fr/v2/api-reference/webhooks/best-practices) pour plus de details.

## Resume des evenements

| Evenement                   | Description                                                                 |
| --------------------------- | --------------------------------------------------------------------------- |
| `call.received`             | Un appel entrant commence a sonner                                          |
| `call.triggered`            | Un appel sortant est initie                                                 |
| `call.answered`             | Un appel est decroche de l'autre cote                                       |
| `call.completed`            | Un appel est termine avec toutes les donnees                                |
| `tag.added`                 | Un tag est ajoute a un appel                                                |
| `tag.removed`               | Un tag est supprime d'un appel                                              |
| `sms.received`              | Un SMS entrant est recu                                                     |
| `sms.sent`                  | Un SMS sortant est envoye                                                   |
| `contact.created`           | Un contact est cree                                                         |
| `contact.updated`           | Un contact est mis a jour                                                   |
| `conversation_note.created` | Une note interne est ajoutée à une conversation                             |
| `conversation_note.updated` | Une note de conversation est modifiée                                       |
| `conversation_note.deleted` | Une note de conversation est supprimée                                      |
| `contact_note.created`      | Une note est ajoutée au profil CRM d'une personne                           |
| `contact_note.updated`      | Une note de personne est modifiée                                           |
| `contact_note.deleted`      | Une note de personne est supprimée                                          |
| `thread.created`            | Un fil de discussion est démarré sur un élément de conversation             |
| `thread.comment.created`    | Un commentaire est ajouté à un fil                                          |
| `thread.comment.updated`    | Un commentaire de fil est modifié                                           |
| `thread.resolved`           | Un fil est marqué comme résolu                                              |
| `thread.unresolved`         | Un fil est rouvert                                                          |
| `partner.account.login`     | Un compte provisionne par un revendeur s'est connecte pour la premiere fois |

***

## call.received

Declenche lorsqu'un appel entrant commence a sonner, avant que l'appel ne soit decroche. Lorsqu'un contact correspondant est trouve, l'evenement inclut les objets `person`, `company` et `deals` avec le contexte du contact.

```json theme={null}
{
  "topic": "call.received",
  "version": "2.0",
  "timestamp": "2025-03-15T14:30:00.000Z",
  "data": {
    "from_number": "+33612345678",
    "to_number": "+33112345678",
    "started_at": "2025-03-15T14:30:00.000Z",
    "user_email": "john@acme.com",
    "person": {
      "id": "con_5MiGNHp2vI1AN6sTu4Cw",
      "name": "Marie",
      "last_name": "Dupont",
      "email": "marie.dupont@acme.com",
      "emails": ["marie.dupont@acme.com"],
      "numbers": ["+33612345678"],
      "job_title": "Head of Sales",
      "linkedin_url": "https://linkedin.com/in/mariedupont",
      "lead_source": "Inbound"
    },
    "company": {
      "id": "com-a1b2c3d4e5f6",
      "name": "Acme Corp"
    },
    "deals": [
      {
        "id": "dea-x1y2z3w4v5u6",
        "name": "Enterprise Plan",
        "status": "qualified",
        "value": 25000.00,
        "currency": "EUR",
        "close_date": "2025-06-15T00:00:00"
      }
    ]
  }
}
```

| Champ         | Type           | Description                                                                           |
| ------------- | -------------- | ------------------------------------------------------------------------------------- |
| `from_number` | string         | Numero de telephone de l'appelant                                                     |
| `to_number`   | string         | Votre numero de telephone Allo                                                        |
| `started_at`  | string         | Horodatage ISO 8601 du debut de la sonnerie                                           |
| `user_email`  | string         | Email de l'utilisateur Allo assigne au numero                                         |
| `person`      | object ou null | Contact correspondant. Absent si aucun contact ne correspond au numero de l'appelant. |
| `company`     | object ou null | Entreprise liee au contact. `null` si aucune.                                         |
| `deals`       | array ou null  | Deals lies au contact. `null` si aucun.                                               |

### Objet Person

| Champ        | Type             | Description                                                                                                                                                                       |
| ------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`         | string           | Identifiant unique du contact                                                                                                                                                     |
| `name`       | string ou null   | Prenom                                                                                                                                                                            |
| `last_name`  | string ou null   | Nom de famille                                                                                                                                                                    |
| `email`      | string ou null   | Adresse email principale                                                                                                                                                          |
| `emails`     | array of strings | Toutes les adresses email                                                                                                                                                         |
| `numbers`    | array of strings | Tous les numeros de telephone                                                                                                                                                     |
| `job_title`  | string ou null   | Intitule du poste                                                                                                                                                                 |
| `<property>` | any              | Chaque propriete de contact que vous avez definie apparait comme une cle de premier niveau (par ex., `linkedin_url`, `lead_source`). Seules les valeurs non nulles sont incluses. |

### Objet Company

| Champ  | Type           | Description                        |
| ------ | -------------- | ---------------------------------- |
| `id`   | string         | Identifiant unique de l'entreprise |
| `name` | string ou null | Nom de l'entreprise                |

### Objet Deal

| Champ        | Type           | Description                               |
| ------------ | -------------- | ----------------------------------------- |
| `id`         | string         | Identifiant unique du deal                |
| `name`       | string ou null | Nom du deal                               |
| `status`     | string ou null | Etape ou statut du deal                   |
| `value`      | number ou null | Valeur monetaire du deal                  |
| `currency`   | string ou null | Code de la devise (par ex., `EUR`, `USD`) |
| `close_date` | string ou null | Date de cloture prevue (ISO 8601)         |

***

## call.triggered

Declenche lorsqu'un appel sortant est initie. Lorsqu'un contact correspondant est trouve, l'evenement inclut les objets `person`, `company` et `deals` avec le contexte du contact.

```json theme={null}
{
  "topic": "call.triggered",
  "version": "2.0",
  "timestamp": "2025-03-15T14:35:00.000Z",
  "data": {
    "from_number": "+33112345678",
    "to_number": "+33612345678",
    "started_at": "2025-03-15T14:35:00.000Z",
    "user_email": "john@acme.com",
    "person": {
      "id": "con_5MiGNHp2vI1AN6sTu4Cw",
      "name": "Marie",
      "last_name": "Dupont",
      "email": "marie.dupont@acme.com",
      "emails": ["marie.dupont@acme.com"],
      "numbers": ["+33612345678"],
      "job_title": "Head of Sales"
    },
    "company": {
      "id": "com-a1b2c3d4e5f6",
      "name": "Acme Corp"
    },
    "deals": null
  }
}
```

| Champ         | Type           | Description                                                                             |
| ------------- | -------------- | --------------------------------------------------------------------------------------- |
| `from_number` | string         | Votre numero de telephone Allo                                                          |
| `to_number`   | string         | Numero de telephone du destinataire                                                     |
| `started_at`  | string         | Horodatage ISO 8601 du lancement de l'appel                                             |
| `user_email`  | string         | Email de l'utilisateur Allo qui a passe l'appel                                         |
| `person`      | object ou null | Contact correspondant. Absent si aucun contact ne correspond au numero du destinataire. |
| `company`     | object ou null | Entreprise liee au contact. `null` si aucune.                                           |
| `deals`       | array ou null  | Deals lies au contact. `null` si aucun.                                                 |

Les objets `person`, `company` et `deals` utilisent le meme schema que [`call.received`](#callreceived).

***

## call.answered

Declenche au moment ou un appel est decroche de l'autre cote, pour les appels entrants comme sortants -- apres `call.received` / `call.triggered` (sonnerie) et avant `call.completed` (raccrochage). Utilisez-le pour reagir en temps reel lorsque le prospect decroche. Lorsqu'un contact correspondant est trouve, l'evenement inclut les objets `person`, `company` et `deals` avec le contexte du contact.

```json theme={null}
{
  "topic": "call.answered",
  "version": "2.0",
  "timestamp": "2025-03-15T14:30:08.000Z",
  "data": {
    "from_number": "+33612345678",
    "to_number": "+33112345678",
    "direction": "OUTBOUND",
    "started_at": "2025-03-15T14:30:00.000Z",
    "answered_at": "2025-03-15T14:30:08.000Z",
    "user_email": "john@acme.com",
    "person": {
      "id": "con_5MiGNHp2vI1AN6sTu4Cw",
      "name": "Marie",
      "last_name": "Dupont",
      "email": "marie.dupont@acme.com",
      "emails": ["marie.dupont@acme.com"],
      "numbers": ["+33612345678"],
      "job_title": "Head of Sales"
    },
    "company": {
      "id": "com-a1b2c3d4e5f6",
      "name": "Acme Corp"
    },
    "deals": null
  }
}
```

| Champ         | Type           | Description                                                                               |
| ------------- | -------------- | ----------------------------------------------------------------------------------------- |
| `from_number` | string         | Numero de telephone de l'appelant                                                         |
| `to_number`   | string         | Numero de telephone du destinataire                                                       |
| `direction`   | string         | `INBOUND` ou `OUTBOUND`                                                                   |
| `started_at`  | string         | Horodatage ISO 8601 du debut de la sonnerie                                               |
| `answered_at` | string         | Horodatage ISO 8601 du decrochage                                                         |
| `user_email`  | string         | Email de l'utilisateur Allo sur l'appel                                                   |
| `person`      | object ou null | Contact correspondant. Absent si aucun contact ne correspond au numero de l'autre partie. |
| `company`     | object ou null | Entreprise liee au contact. `null` si aucune.                                             |
| `deals`       | array ou null  | Deals lies au contact. `null` si aucun.                                                   |

Les objets `person`, `company` et `deals` utilisent le meme schema que [`call.received`](#callreceived).

***

## call.completed

Declenche apres la fin d'un appel. Inclut toutes les donnees de l'appel : enregistrement, transcription, resume, tags et details de transfert. Cet evenement est generalement envoye environ 30 secondes apres la fin de l'appel.

```json theme={null}
{
  "topic": "call.completed",
  "version": "2.0",
  "timestamp": "2025-03-15T14:45:00.000Z",
  "data": {
    "id": "cll_2NfDKEm9sF8xK3pQr1Zt",
    "start_date": "2025-03-15T14:30:00.000Z",
    "recording_url": "https://storage.withallo.com/recordings/abc123.mp3",
    "from_number": "+33612345678",
    "from_name": "Marie Dupont",
    "to": "+33112345678",
    "to_name": "Support Acme",
    "length_in_minutes": 5.5,
    "length": "5m 30s",
    "tag": "support",
    "tags": ["support", "urgent"],
    "summary": "The customer called about a billing issue with their last invoice. The agent confirmed the charge was correct and explained the new pricing plan.",
    "transcriptions": [
      {
        "source": "EXTERNAL",
        "time": "2025-03-15T14:30:05.000Z",
        "text": "Hi, I have a question about my last invoice."
      },
      {
        "source": "USER",
        "time": "2025-03-15T14:30:12.000Z",
        "text": "Of course, let me pull up your account."
      }
    ],
    "concatenated_transcript": "Hi, I have a question about my last invoice.\nOf course, let me pull up your account.",
    "data_collected": {
      "account_number": "12345"
    },
    "type": "INBOUND",
    "result": "ANSWERED",
    "integration_id": null,
    "transfer_from": {
      "number": null,
      "user_email": null,
      "user_name": null
    },
    "transfer_to": {
      "number": null,
      "user_email": null,
      "user_name": null
    },
    "user_email": "john@acme.com",
    "original_to_number": null,
    "original_to_name": null,
    "transfer_original_call_id": null,
    "ivr_result": [
      {
        "dtmf_key": "2",
        "text_key": "Support"
      }
    ]
  }
}
```

### Champs

| Champ                       | Type             | Description                                                                       |
| --------------------------- | ---------------- | --------------------------------------------------------------------------------- |
| `id`                        | string           | Identifiant unique de l'appel                                                     |
| `start_date`                | string           | Horodatage ISO 8601 du debut de l'appel                                           |
| `recording_url`             | string ou null   | URL de l'enregistrement de l'appel (MP3). Null si l'enregistrement est desactive. |
| `from_number`               | string           | Numero de telephone de l'appelant                                                 |
| `from_name`                 | string           | Nom de l'appelant (depuis les contacts) ou nom de votre entreprise                |
| `to`                        | string           | Numero de telephone du destinataire                                               |
| `to_name`                   | string           | Nom du destinataire (depuis les contacts) ou nom de votre entreprise              |
| `length_in_minutes`         | number           | Duree de l'appel en minutes (decimal)                                             |
| `length`                    | string           | Duree lisible (par ex., `"5m 30s"`)                                               |
| `tag`                       | string ou null   | Tag principal assigne a l'appel                                                   |
| `tags`                      | array of strings | Tous les tags assignes a l'appel                                                  |
| `summary`                   | string           | Resume de l'appel genere par l'IA                                                 |
| `transcriptions`            | array            | Entrees de la transcription de l'appel (voir ci-dessous)                          |
| `concatenated_transcript`   | string           | Transcription complete en une seule chaine de caracteres                          |
| `data_collected`            | object           | Donnees personnalisees collectees pendant l'appel (par ex., depuis le SVI)        |
| `type`                      | string           | `INBOUND` ou `OUTBOUND`                                                           |
| `result`                    | string           | Resultat de l'appel (voir les valeurs ci-dessous)                                 |
| `integration_id`            | string ou null   | Identifiant d'integration CRM externe pour le contact                             |
| `transfer_from`             | object           | Details de l'origine du transfert (voir ci-dessous)                               |
| `transfer_to`               | object           | Details de la destination du transfert (voir ci-dessous)                          |
| `user_email`                | string           | Email de l'utilisateur Allo qui a gere l'appel                                    |
| `original_to_number`        | string ou null   | Numero compose a l'origine (si l'appel a ete route)                               |
| `original_to_name`          | string ou null   | Nom du destinataire d'origine                                                     |
| `transfer_original_call_id` | string ou null   | Identifiant de l'appel d'origine s'il s'agit d'un transfert                       |
| `ivr_result`                | array            | Selections du menu SVI effectuees pendant l'appel (voir ci-dessous)               |

### Valeurs du resultat d'appel

| Valeur                 | Description                                    |
| ---------------------- | ---------------------------------------------- |
| `ANSWERED`             | L'appel a ete decroche                         |
| `VOICEMAIL`            | L'appelant a laisse un message vocal           |
| `TRANSFERRED_AI`       | L'appel a ete traite par l'agent IA            |
| `TRANSFERRED_EXTERNAL` | L'appel a ete transfere vers un numero externe |
| `BLOCKED`              | L'appel a ete bloque                           |
| `FAILED`               | L'appel n'a pas pu etre connecte               |

### Entree de transcription

| Champ    | Type   | Description                                               |
| -------- | ------ | --------------------------------------------------------- |
| `source` | string | `USER` (votre cote) ou `EXTERNAL` (appelant/destinataire) |
| `time`   | string | Horodatage ISO 8601 du segment de transcription           |
| `text`   | string | Texte transcrit                                           |

### Objet Transfer

| Champ        | Type           | Description                                    |
| ------------ | -------------- | ---------------------------------------------- |
| `number`     | string ou null | Numero de telephone implique dans le transfert |
| `user_email` | string ou null | Email de l'utilisateur Allo                    |
| `user_name`  | string ou null | Nom de l'utilisateur Allo                      |

### Entree IVR result

| Champ      | Type           | Description                        |
| ---------- | -------------- | ---------------------------------- |
| `dtmf_key` | string ou null | Touche DTMF pressee par l'appelant |
| `text_key` | string ou null | Libelle du menu selectionne        |

***

## tag.added

Declenche lorsqu'un tag est ajoute a un appel.

```json theme={null}
{
  "topic": "tag.added",
  "version": "2.0",
  "timestamp": "2025-03-15T15:00:00.000Z",
  "data": {
    "call_id": "cll_2NfDKEm9sF8xK3pQr1Zt",
    "tag_key": "urgent",
    "tag_name": "Urgent",
    "user_email": "john@acme.com"
  }
}
```

| Champ        | Type           | Description                                       |
| ------------ | -------------- | ------------------------------------------------- |
| `call_id`    | string         | Identifiant de l'appel auquel le tag a ete ajoute |
| `tag_key`    | string         | Identifiant du tag                                |
| `tag_name`   | string         | Nom lisible du tag                                |
| `user_email` | string ou null | Email de l'utilisateur qui a ajoute le tag        |

***

## tag.removed

Declenche lorsqu'un tag est supprime d'un appel.

```json theme={null}
{
  "topic": "tag.removed",
  "version": "2.0",
  "timestamp": "2025-03-15T15:05:00.000Z",
  "data": {
    "call_id": "cll_2NfDKEm9sF8xK3pQr1Zt",
    "tag_key": "urgent",
    "tag_name": "Urgent",
    "user_email": "john@acme.com"
  }
}
```

| Champ        | Type           | Description                                       |
| ------------ | -------------- | ------------------------------------------------- |
| `call_id`    | string         | Identifiant de l'appel dont le tag a ete supprime |
| `tag_key`    | string         | Identifiant du tag                                |
| `tag_name`   | string         | Nom lisible du tag                                |
| `user_email` | string ou null | Email de l'utilisateur qui a supprime le tag      |

***

## sms.received

Declenche lorsqu'un SMS entrant est recu.

```json theme={null}
{
  "topic": "sms.received",
  "version": "2.0",
  "timestamp": "2025-03-15T16:00:00.000Z",
  "data": {
    "id": "msg_3KgELFn0tG9yL4qRs2Au",
    "direction": "INBOUND",
    "type": "SMS",
    "content": "Hi, I'd like to schedule an appointment.",
    "sent_at": "2025-03-15T16:00:00.000Z",
    "from_number": "+33612345678",
    "to_number": "+33112345678",
    "from_name": "Marie Dupont",
    "to_name": "Support Acme",
    "user_email": "john@acme.com"
  }
}
```

| Champ         | Type   | Description                                   |
| ------------- | ------ | --------------------------------------------- |
| `id`          | string | Identifiant unique du message                 |
| `direction`   | string | `INBOUND`                                     |
| `type`        | string | `SMS` ou `MMS`                                |
| `content`     | string | Texte du message                              |
| `sent_at`     | string | Horodatage ISO 8601                           |
| `from_number` | string | Numero de telephone de l'expediteur           |
| `to_number`   | string | Votre numero de telephone Allo                |
| `from_name`   | string | Nom de l'expediteur (depuis les contacts)     |
| `to_name`     | string | Nom de votre entreprise                       |
| `user_email`  | string | Email de l'utilisateur Allo assigne au numero |

***

## sms.sent

Declenche lorsqu'un SMS sortant est envoye.

```json theme={null}
{
  "topic": "sms.sent",
  "version": "2.0",
  "timestamp": "2025-03-15T16:10:00.000Z",
  "data": {
    "id": "msg_4LhFMGo1uH0zM5rSt3Bv",
    "direction": "OUTBOUND",
    "type": "SMS",
    "content": "Your appointment is confirmed for tomorrow at 2pm.",
    "sent_at": "2025-03-15T16:10:00.000Z",
    "from_number": "+33112345678",
    "to_number": "+33612345678",
    "from_name": "Support Acme",
    "to_name": "Marie Dupont",
    "user_email": "john@acme.com"
  }
}
```

| Champ         | Type   | Description                                         |
| ------------- | ------ | --------------------------------------------------- |
| `id`          | string | Identifiant unique du message                       |
| `direction`   | string | `OUTBOUND`                                          |
| `type`        | string | `SMS` ou `MMS`                                      |
| `content`     | string | Texte du message                                    |
| `sent_at`     | string | Horodatage ISO 8601                                 |
| `from_number` | string | Votre numero de telephone Allo                      |
| `to_number`   | string | Numero de telephone du destinataire                 |
| `from_name`   | string | Nom de votre entreprise                             |
| `to_name`     | string | Nom du destinataire (depuis les contacts)           |
| `user_email`  | string | Email de l'utilisateur Allo qui a envoye le message |

***

## contact.created

Declenche lorsqu'un nouveau contact est cree.

```json theme={null}
{
  "topic": "contact.created",
  "version": "2.0",
  "timestamp": "2025-03-15T17:00:00.000Z",
  "data": {
    "id": "con_5MiGNHp2vI1AN6sTu4Cw",
    "name": "Marie",
    "last_name": "Dupont",
    "company": "Acme Corp",
    "emails": ["marie.dupont@acme.com"],
    "numbers": ["+33612345678"]
  }
}
```

| Champ       | Type                     | Description                   |
| ----------- | ------------------------ | ----------------------------- |
| `id`        | string                   | Identifiant unique du contact |
| `name`      | string                   | Prenom                        |
| `last_name` | string                   | Nom de famille                |
| `company`   | string ou null           | Nom de l'entreprise           |
| `emails`    | array of strings ou null | Adresses email                |
| `numbers`   | array of strings         | Numeros de telephone          |

***

## contact.updated

Declenche lorsqu'un contact existant est modifie.

```json theme={null}
{
  "topic": "contact.updated",
  "version": "2.0",
  "timestamp": "2025-03-15T17:05:00.000Z",
  "data": {
    "id": "con_5MiGNHp2vI1AN6sTu4Cw",
    "name": "Marie",
    "last_name": "Dupont",
    "company": "Acme Corp",
    "emails": ["marie.dupont@acme.com", "m.dupont@personal.com"],
    "numbers": ["+33612345678", "+33698765432"]
  }
}
```

La structure du payload est identique a `contact.created`. L'objet `data` contient l'etat complet du contact apres la mise a jour.

***

## conversation\_note.created

Déclenché lorsqu'une note interne est ajoutée à une conversation — depuis les applications Allo ou via l'[API Notes](/fr/v2/api-reference/notes/overview). Les événements `conversation_note.created` sont dédupliqués par ID de note : vous en recevez au plus un par note.

```json theme={null}
{
  "topic": "conversation_note.created",
  "version": "2.0",
  "timestamp": "2026-07-13T10:00:00.000Z",
  "data": {
    "id": "not-2NyMabc123",
    "content": "Escalate to @[Jane Doe](usr-abc123) tomorrow",
    "allo_number": "+14155550100",
    "contact_number": "+14155551234",
    "user": {
      "id": "usr-def456",
      "name": "John Smith",
      "email": "john@acme.com"
    },
    "mentions": [
      {
        "user_id": "usr-abc123",
        "name": "Jane Doe"
      }
    ],
    "created_at": "2026-07-13T10:00:00",
    "updated_at": "2026-07-13T10:00:00",
    "deleted": false
  }
}
```

| Champ            | Type           | Description                                                                                                    |
| ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------- |
| `id`             | string         | Identifiant unique de la note (`not-*`)                                                                        |
| `content`        | string         | Texte de la note, avec les mentions inline sous la forme `@[Name](usr-...)`                                    |
| `allo_number`    | string         | La ligne Allo à laquelle la conversation est rattachée                                                         |
| `contact_number` | string         | Le numéro de téléphone du contact                                                                              |
| `user`           | object ou null | Auteur de la note (voir ci-dessous)                                                                            |
| `mentions`       | array          | Utilisateurs mentionnés dans la note (voir ci-dessous)                                                         |
| `created_at`     | string         | Timestamp ISO 8601 de création de la note                                                                      |
| `updated_at`     | string         | Timestamp ISO 8601 de la dernière modification                                                                 |
| `deleted`        | boolean        | `false` sur `conversation_note.created` et `conversation_note.updated`, `true` sur `conversation_note.deleted` |

### Objet user

| Champ   | Type           | Description                                   |
| ------- | -------------- | --------------------------------------------- |
| `id`    | string         | Identifiant unique de l'utilisateur (`usr-*`) |
| `name`  | string ou null | Nom affiché                                   |
| `email` | string ou null | Adresse email                                 |

### Entrée mention

| Champ     | Type           | Description                            |
| --------- | -------------- | -------------------------------------- |
| `user_id` | string         | ID de l'utilisateur mentionné          |
| `name`    | string ou null | Nom affiché de l'utilisateur mentionné |

***

## conversation\_note.updated

Déclenché lorsque le contenu d'une note de conversation est modifié. La structure du payload est identique à [`conversation_note.created`](#conversation_notecreated), avec les `content`, `mentions` et `updated_at` mis à jour. Contrairement aux événements `*.created`, `conversation_note.updated` peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## conversation\_note.deleted

Déclenché lorsqu'une note de conversation est supprimée. La structure du payload est identique à [`conversation_note.created`](#conversation_notecreated), avec l'état final de la note et `deleted: true`. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## contact\_note.created

Déclenché lorsqu'une note est ajoutée au profil CRM d'une personne — depuis les applications Allo ou via l'[API Notes](/fr/v2/api-reference/notes/overview). Les événements `contact_note.created` sont dédupliqués par ID de note : vous en recevez au plus un par note.

```json theme={null}
{
  "topic": "contact_note.created",
  "version": "2.0",
  "timestamp": "2026-07-13T10:00:00.000Z",
  "data": {
    "id": "cno-abc123",
    "contact_id": "con-abc123",
    "person_id": "per-abc123",
    "content": "Prefers email over calls. Intro by @[Jane Doe](usr-abc123).",
    "user": {
      "id": "usr-def456",
      "name": "John Smith",
      "email": "john@acme.com"
    },
    "mentions": [
      {
        "user_id": "usr-abc123",
        "name": "Jane Doe"
      }
    ],
    "created_at": "2026-07-13T10:00:00",
    "updated_at": "2026-07-13T10:00:00",
    "deleted": false
  }
}
```

| Champ        | Type           | Description                                                                                                                |
| ------------ | -------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `id`         | string         | Identifiant unique de la note (`cno-*`)                                                                                    |
| `contact_id` | string         | ID de la fiche contact sous-jacente (`con-*`), correspondant aux ids des événements `contact.created` / `contact.updated`  |
| `person_id`  | string ou null | ID de la personne à laquelle la note est attachée (`per-*`). `null` lorsque la note appartient à un contact sans personne. |
| `content`    | string         | Texte de la note, avec les mentions inline sous la forme `@[Name](usr-...)`                                                |
| `user`       | object ou null | Auteur de la note                                                                                                          |
| `mentions`   | array          | Utilisateurs mentionnés dans la note                                                                                       |
| `created_at` | string         | Timestamp ISO 8601 de création de la note                                                                                  |
| `updated_at` | string         | Timestamp ISO 8601 de la dernière modification                                                                             |
| `deleted`    | boolean        | `false` sur `contact_note.created` et `contact_note.updated`, `true` sur `contact_note.deleted`                            |

Les objets `user` et `mentions` utilisent le même schéma que [`conversation_note.created`](#conversation_notecreated).

***

## contact\_note.updated

Déclenché lorsque le contenu d'une note de personne est modifié. La structure du payload est identique à [`contact_note.created`](#contact_notecreated), avec les `content`, `mentions` et `updated_at` mis à jour. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## contact\_note.deleted

Déclenché lorsqu'une note de personne est supprimée. La structure du payload est identique à [`contact_note.created`](#contact_notecreated), avec l'état final de la note et `deleted: true`. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## thread.created

Déclenché lorsqu'un fil de discussion est démarré sur un élément de conversation (un appel, un SMS ou une note de conversation) — depuis les applications Allo ou via l'[API Threads](/fr/v2/api-reference/threads/overview). Inclut le premier commentaire du fil. Les événements `thread.created` sont dédupliqués par ID de fil : vous en recevez au plus un par fil.

```json theme={null}
{
  "topic": "thread.created",
  "version": "2.0",
  "timestamp": "2026-07-13T10:00:00.000Z",
  "data": {
    "id": "cth-abc123",
    "entity_type": "CALL",
    "entity_id": "cll-abc123",
    "allo_number": "+14155550100",
    "contact_number": "+14155551234",
    "resolved": false,
    "resolved_at": null,
    "resolved_by": null,
    "comment_count": 1,
    "created_at": "2026-07-13T10:00:00",
    "comment": {
      "id": "thc-abc123",
      "thread_id": "cth-abc123",
      "content": "Can someone call them back today? @[Jane Doe](usr-abc123)",
      "user": {
        "id": "usr-def456",
        "name": "John Smith",
        "email": "john@acme.com"
      },
      "mentions": [
        {
          "user_id": "usr-abc123",
          "name": "Jane Doe"
        }
      ],
      "created_at": "2026-07-13T10:00:00",
      "updated_at": "2026-07-13T10:00:00"
    }
  }
}
```

| Champ            | Type           | Description                                                                                 |
| ---------------- | -------------- | ------------------------------------------------------------------------------------------- |
| `id`             | string         | Identifiant unique du fil (`cth-*`)                                                         |
| `entity_type`    | string         | Type de l'élément auquel le fil est attaché : `CALL`, `TEXT_MESSAGE` ou `CONVERSATION_NOTE` |
| `entity_id`      | string ou null | ID de l'élément de conversation (`cll-*`, `msg-*` ou `not-*`)                               |
| `allo_number`    | string         | La ligne Allo à laquelle la conversation est rattachée                                      |
| `contact_number` | string         | Le numéro de téléphone du contact                                                           |
| `resolved`       | boolean        | Si le fil est résolu                                                                        |
| `resolved_at`    | string ou null | Timestamp ISO 8601 de la résolution du fil                                                  |
| `resolved_by`    | object ou null | Utilisateur qui a résolu le fil                                                             |
| `comment_count`  | number         | Nombre de commentaires du fil                                                               |
| `created_at`     | string         | Timestamp ISO 8601 de création du fil                                                       |
| `comment`        | object         | Le premier commentaire du fil (voir ci-dessous)                                             |

### Objet comment

| Champ        | Type           | Description                                                                     |
| ------------ | -------------- | ------------------------------------------------------------------------------- |
| `id`         | string         | Identifiant unique du commentaire (`thc-*`)                                     |
| `thread_id`  | string         | ID du fil auquel le commentaire appartient                                      |
| `content`    | string         | Texte du commentaire, avec les mentions inline sous la forme `@[Name](usr-...)` |
| `user`       | object ou null | Auteur du commentaire                                                           |
| `mentions`   | array          | Utilisateurs mentionnés dans le commentaire                                     |
| `created_at` | string         | Timestamp ISO 8601 de création du commentaire                                   |
| `updated_at` | string         | Timestamp ISO 8601 de la dernière modification                                  |

Les objets `user`, `resolved_by` et `mentions` utilisent le même schéma que [`conversation_note.created`](#conversation_notecreated).

***

## thread.comment.created

Déclenché lorsqu'un commentaire est ajouté à un fil existant. `data` est l'objet comment de [`thread.created`](#threadcreated). Les événements `thread.comment.created` sont dédupliqués par ID de commentaire : vous en recevez au plus un par commentaire.

```json theme={null}
{
  "topic": "thread.comment.created",
  "version": "2.0",
  "timestamp": "2026-07-13T10:05:00.000Z",
  "data": {
    "id": "thc-def456",
    "thread_id": "cth-abc123",
    "content": "On it.",
    "user": {
      "id": "usr-abc123",
      "name": "Jane Doe",
      "email": "jane@acme.com"
    },
    "mentions": [],
    "created_at": "2026-07-13T10:05:00",
    "updated_at": "2026-07-13T10:05:00"
  }
}
```

***

## thread.comment.updated

Déclenché lorsque le contenu d'un commentaire de fil est modifié. `data` est l'objet comment de [`thread.created`](#threadcreated), avec les `content`, `mentions` et `updated_at` mis à jour. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## thread.resolved

Déclenché lorsqu'un fil est marqué comme résolu. `data` est l'objet thread de [`thread.created`](#threadcreated) sans le champ `comment`. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

```json theme={null}
{
  "topic": "thread.resolved",
  "version": "2.0",
  "timestamp": "2026-07-13T11:00:00.000Z",
  "data": {
    "id": "cth-abc123",
    "entity_type": "CALL",
    "entity_id": "cll-abc123",
    "allo_number": "+14155550100",
    "contact_number": "+14155551234",
    "resolved": true,
    "resolved_at": "2026-07-13T11:00:00",
    "resolved_by": {
      "id": "usr-def456",
      "name": "John Smith",
      "email": "john@acme.com"
    },
    "comment_count": 2,
    "created_at": "2026-07-13T10:00:00"
  }
}
```

***

## thread.unresolved

Déclenché lorsqu'un fil résolu est rouvert. La structure du payload est identique à [`thread.resolved`](#threadresolved), avec `resolved: false` et `resolved_at` / `resolved_by` à `null`. Peut être re-livré — dédupliquez avec l'en-tête `webhook-id`.

***

## partner.account.login

Declenche lorsqu'un [compte provisionne par un revendeur](/fr/v2/api-reference/partner/overview) se connecte sur un appareil pour la premiere fois — le moment ou son numero devient actif. Livre au endpoint webhook du **partenaire** (pas celui du compte), pour que les revendeurs suivent l'activation.

```json theme={null}
{
  "topic": "partner.account.login",
  "version": "2.0",
  "timestamp": "2025-03-15T18:00:00.000Z",
  "data": {
    "account_id": "usr-160F3A46629692CF6E022E09A6217A4F0AD21B45",
    "partner_client_ref": "client-4271",
    "email": "owner@vibrantevents.com",
    "name": "Vibrant Occasions Event Rentals"
  }
}
```

| Champ                | Type           | Description                                               |
| -------------------- | -------------- | --------------------------------------------------------- |
| `account_id`         | string         | L'identifiant utilisateur du compte provisionne (`usr-*`) |
| `partner_client_ref` | string ou null | Votre propre reference, definie a la creation du compte   |
| `email`              | string         | L'email du compte                                         |
| `name`               | string         | Le nom du compte                                          |
