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 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 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.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 |
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.
{
"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": "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.
{
"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": "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.
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.
{
"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 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.
{
"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 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.
{
"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 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.
{
"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 | 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.
{
"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 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 |
Declenche lorsqu’un nouveau contact est cree.
{
"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 | 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 |
Declenche lorsqu’un contact existant est modifie.
{
"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 a contact.created. L’objet data contient l’etat complet du contact apres la mise a jour.