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.
Les événements suivent la convention de nommage entité.action. Allo livre les événements au moins une fois — votre endpoint peut recevoir le même événement plusieurs fois. Utilisez l’en-tête webhook-id pour dédupliquer. Consultez les Bonnes pratiques pour plus de détails.
Résumé des événements
| Événement | Description | Dédupliqué |
|---|
call.received | Appel entrant en cours de sonnerie | Oui |
call.triggered | Appel sortant initié | Oui |
call.completed | Appel terminé avec toutes les données | Oui |
tag.added | Tag ajouté à un appel | Non |
tag.removed | Tag retiré d’un appel | Non |
sms.received | SMS entrant reçu | Oui |
sms.sent | SMS sortant envoyé | Oui |
contact.created | Contact créé | Oui |
contact.updated | Contact mis à jour | Non |
call.received
Déclenché lorsqu’un appel entrant commence à sonner, avant que l’appel ne soit décroché. Lorsqu’un contact correspondant est trouvé, l’événement inclut les objets person, company et deals avec le contexte du contact.
{
"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": "[email protected]",
"person": {
"id": "con_5MiGNHp2vI1AN6sTu4Cw",
"name": "Marie",
"last_name": "Dupont",
"email": "[email protected]",
"emails": ["[email protected]"],
"numbers": ["+33612345678"],
"job_title": "Directrice Commerciale",
"linkedin_url": "https://linkedin.com/in/mariedupont",
"lead_source": "Inbound"
},
"company": {
"id": "com-a1b2c3d4e5f6",
"name": "Acme Corp"
},
"deals": [
{
"id": "dea-x1y2z3w4v5u6",
"name": "Plan Enterprise",
"status": "qualified",
"value": 25000.00,
"currency": "EUR",
"close_date": "2025-06-15T00:00:00"
}
]
}
}
| Champ | Type | Description |
|---|
from_number | string | Numéro de téléphone de l’appelant |
to_number | string | Votre numéro de téléphone Allo |
started_at | string | Horodatage ISO 8601 du début de la sonnerie |
user_email | string | Email de l’utilisateur Allo assigné au numéro |
person | object ou null | Contact correspondant. Absent si aucun contact ne correspond au numéro de l’appelant. |
company | object ou null | Entreprise liée au contact. null si aucune. |
deals | array ou null | Deals liés au contact. null si aucun. |
Objet person
| Champ | Type | Description |
|---|
id | string | Identifiant unique du contact |
name | string ou null | Prénom |
last_name | string ou null | Nom de famille |
email | string ou null | Adresse email principale |
emails | array de strings | Toutes les adresses email |
numbers | array de strings | Tous les numéros de téléphone |
job_title | string ou null | Intitulé de poste |
<property> | any | Chaque propriété de contact que vous avez définie apparaît comme une clé de premier niveau (ex. linkedin_url, lead_source). Seules les valeurs non-null 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 | Étape ou statut du deal |
value | number ou null | Valeur monétaire du deal |
currency | string ou null | Code devise (ex. EUR, USD) |
close_date | string ou null | Date de clôture prévue (ISO 8601) |
call.triggered
Déclenché lorsqu’un appel sortant est initié. Lorsqu’un contact correspondant est trouvé, l’événement inclut les objets person, company et deals avec le contexte du contact.
{
"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": "[email protected]",
"person": {
"id": "con_5MiGNHp2vI1AN6sTu4Cw",
"name": "Marie",
"last_name": "Dupont",
"email": "[email protected]",
"emails": ["[email protected]"],
"numbers": ["+33612345678"],
"job_title": "Directrice Commerciale"
},
"company": {
"id": "com-a1b2c3d4e5f6",
"name": "Acme Corp"
},
"deals": null
}
}
| Champ | Type | Description |
|---|
from_number | string | Votre numéro de téléphone Allo |
to_number | string | Numéro de téléphone du destinataire |
started_at | string | Horodatage ISO 8601 du lancement de l’appel |
user_email | string | Email de l’utilisateur Allo qui a passé l’appel |
person | object ou null | Contact correspondant. Absent si aucun contact ne correspond au numéro du destinataire. |
company | object ou null | Entreprise liée au contact. null si aucune. |
deals | array ou null | Deals liés au contact. null si aucun. |
Les objets person, company et deals utilisent le même schéma que call.received.
call.completed
Déclenché après la fin d’un appel. Inclut toutes les données de l’appel : enregistrement, transcription, résumé, tags et détails de transfert. Cet événement est généralement envoyé environ 30 secondes après la fin de l’appel.
{
"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": "[email protected]",
"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 début de l’appel |
recording_url | string ou null | URL de l’enregistrement de l’appel (MP3). Null si l’enregistrement est désactivé. |
from_number | string | Numéro de téléphone de l’appelant |
from_name | string | Nom de l’appelant (depuis les contacts) ou nom de votre entreprise |
to | string | Numéro de téléphone du destinataire |
to_name | string | Nom du destinataire (depuis les contacts) ou nom de votre entreprise |
length_in_minutes | number | Durée de l’appel en minutes (décimale) |
length | string | Durée lisible (ex. "5m 30s") |
tag | string ou null | Tag principal assigné à l’appel |
tags | array of strings | Tous les tags assignés à l’appel |
summary | string | Résumé de l’appel généré par l’IA |
transcriptions | array | Entrées de la transcription de l’appel (voir ci-dessous) |
concatenated_transcript | string | Transcription complète en une seule chaîne |
data_collected | object | Données personnalisées collectées pendant l’appel (ex. depuis le SVI) |
type | string | INBOUND ou OUTBOUND |
result | string | Résultat de l’appel (voir les valeurs ci-dessous) |
integration_id | string ou null | Identifiant d’intégration CRM externe pour le contact |
transfer_from | object | Détails de l’origine du transfert (voir ci-dessous) |
transfer_to | object | Détails de la destination du transfert (voir ci-dessous) |
user_email | string | Email de l’utilisateur Allo qui a géré l’appel |
original_to_number | string ou null | Numéro initialement composé (si l’appel a été redirigé) |
original_to_name | string ou null | Nom du destinataire initial |
transfer_original_call_id | string ou null | Identifiant de l’appel d’origine s’il s’agit d’un transfert |
ivr_result | array | Sélections du menu SVI effectuées pendant l’appel (voir ci-dessous) |
Valeurs du résultat d’appel
| Valeur | Description |
|---|
ANSWERED | L’appel a été décroché |
VOICEMAIL | L’appelant a laissé un message vocal |
TRANSFERRED_AI | L’appel a été géré par l’agent IA |
TRANSFERRED_EXTERNAL | L’appel a été transféré vers un numéro externe |
BLOCKED | L’appel a été bloqué |
FAILED | L’appel n’a pas pu aboutir |
Entrée de transcription
| Champ | Type | Description |
|---|
source | string | USER (votre côté) ou EXTERNAL (appelant/destinataire) |
time | string | Horodatage ISO 8601 du segment de transcription |
text | string | Texte transcrit |
Objet de transfert
| Champ | Type | Description |
|---|
number | string ou null | Numéro de téléphone impliqué dans le transfert |
user_email | string ou null | Email de l’utilisateur Allo |
user_name | string ou null | Nom de l’utilisateur Allo |
Entrée de résultat SVI
| Champ | Type | Description |
|---|
dtmf_key | string ou null | Touche DTMF appuyée par l’appelant |
text_key | string ou null | Libellé du menu sélectionné |
tag.added
Déclenché lorsqu’un tag est ajouté à un appel.
{
"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": "[email protected]"
}
}
| Champ | Type | Description |
|---|
call_id | string | Identifiant de l’appel auquel le tag a été ajouté |
tag_key | string | Identifiant du tag |
tag_name | string | Nom lisible du tag |
user_email | string ou null | Email de l’utilisateur qui a ajouté le tag |
tag.removed
Déclenché lorsqu’un tag est retiré d’un appel.
{
"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": "[email protected]"
}
}
| Champ | Type | Description |
|---|
call_id | string | Identifiant de l’appel duquel le tag a été retiré |
tag_key | string | Identifiant du tag |
tag_name | string | Nom lisible du tag |
user_email | string ou null | Email de l’utilisateur qui a retiré le tag |
sms.received
Déclenché lorsqu’un SMS entrant est reçu.
{
"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": "[email protected]"
}
}
| 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 | Numéro de téléphone de l’expéditeur |
to_number | string | Votre numéro de téléphone Allo |
from_name | string | Nom de l’expéditeur (depuis les contacts) |
to_name | string | Nom de votre entreprise |
user_email | string | Email de l’utilisateur Allo assigné au numéro |
sms.sent
Déclenché lorsqu’un SMS sortant est envoyé.
{
"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": "[email protected]"
}
}
| 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 numéro de téléphone Allo |
to_number | string | Numéro de téléphone 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 envoyé le message |
Déclenché lorsqu’un nouveau contact est créé.
{
"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": ["[email protected]"],
"numbers": ["+33612345678"]
}
}
| Champ | Type | Description |
|---|
id | string | Identifiant unique du contact |
name | string | Prénom |
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 | Numéros de téléphone |
Déclenché lorsqu’un contact existant est modifié.
{
"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": ["[email protected]", "[email protected]"],
"numbers": ["+33612345678", "+33698765432"]
}
}
La structure du payload est identique à contact.created. L’objet data contient l’état complet du contact après la mise à jour.