This document describes the data formats exchanged between Alvio and Admvalue for the following event types:
updateavailability_requestmeeting
These formats are designed to be:
- easy to consume in CRM or middleware workflows
- stable over time
- explicit enough for operational teams
- compatible with raw source lead data provided by Admvalue
All examples below use the following target endpoint:
- URL:
https://ws.admvalue.fr/RBT3/alvio-api/ - Header:
Authorization: Bearer <token> - Content type:
application/json
Reference example:
curl --location 'https://ws.admvalue.fr/RBT3/alvio-api/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{"test":"ALVIO"}'The expected business flow is the following:
- A lead is received by Alvio.
- Alvio checks whether the lead has WhatsApp.
- If the lead does not have WhatsApp, Alvio sends an
updateevent withevent_name = NO_WHATSAPP. - If the lead has WhatsApp, Alvio starts or continues the conversation.
- During the conversation:
- if a booking flow is needed, Alvio requests availabilities, proposes slots, and sends a
meetingevent once the slot is confirmed
- if a booking flow is needed, Alvio requests availabilities, proposes slots, and sends a
- As the conversation progresses, Alvio can send additional
updateevents when new business-relevant information becomes available.
All outgoing payloads should follow the same top-level structure.
event_typedescribes the category of eventevent_namedescribes the specific business eventexternal_referencescontains Admvalue or CRM identifiersalviocontains Alvio-specific contextdatacontains event-specific fieldssource_datacontains the original lead payload sent by Admvalue
{
"event_id": "evt_01JXYZ...",
"event_type": "update",
"event_name": "NO_WHATSAPP",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:30:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456",
"account_id": "acc_789"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": false
},
"data": {},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}The following fields are strongly recommended on all events:
event_idevent_typeevent_nameversionoccurred_atlead.phoneexternal_references.contact_idwhen availableexternal_references.deal_idwhen availablealvio.campaign_idwhen availablealvio.conversation_idwhen availablealvio.conversation_urlwhen availablealvio.has_whatsappdatasource_data
update is used by Alvio to push a business status or progressive lead enrichment payloads to Admvalue.
LEAD_RECEIVEDNO_WHATSAPPCONVERSATION_STARTEDLEAD_UPDATED
Use this event when a lead has been received, but the WhatsApp check fails and no WhatsApp conversation can be started.
{
"event_id": "evt_01JXYZ001",
"event_type": "update",
"event_name": "NO_WHATSAPP",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:31:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": null,
"conversation_url": null,
"business_phone": "+33100000000",
"has_whatsapp": false
},
"data": {
"status": "no_whatsapp",
"reason": "phone_not_on_whatsapp",
"recommended_action": "phone_callback"
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}curl --location 'https://ws.admvalue.fr/RBT3/alvio-api/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
"event_id": "evt_01JXYZ001",
"event_type": "update",
"event_name": "NO_WHATSAPP",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:31:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": null,
"conversation_url": null,
"business_phone": "+33100000000",
"has_whatsapp": false
},
"data": {
"status": "no_whatsapp",
"reason": "phone_not_on_whatsapp",
"recommended_action": "phone_callback"
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}'Use this event whenever Alvio has new lead information worth sharing externally, including qualification, summary, sentiment, or booking status.
{
"event_id": "evt_01JXYZ999",
"event_type": "update",
"event_name": "LEAD_UPDATED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T11:05:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"status": "active",
"qualification": "qualified",
"summary": "Le prospect souhaite etre rappele demain matin.",
"sentiment": "positive",
"meeting_booked": false
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}curl --location 'https://ws.admvalue.fr/RBT3/alvio-api/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
"event_id": "evt_01JXYZ999",
"event_type": "update",
"event_name": "LEAD_UPDATED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T11:05:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"status": "active",
"qualification": "qualified",
"summary": "Le prospect souhaite etre rappele demain matin.",
"sentiment": "positive",
"meeting_booked": false
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}'availability_request is used by Alvio when it needs available slots from Admvalue in order to propose a meeting to the lead.
AVAILABILITY_REQUESTED
{
"event_id": "evt_01JXYZ300",
"event_type": "availability_request",
"event_name": "AVAILABILITY_REQUESTED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:50:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"requested_window_start": "2026-04-09T00:00:00+02:00",
"requested_window_end": "2026-04-12T23:59:59+02:00",
"timezone": "Europe/Paris",
"slot_duration_minutes": 30,
"max_slots": 5,
"request_reason": "Le prospect souhaite planifier un rappel ou un rendez-vous."
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}curl --location 'https://ws.admvalue.fr/RBT3/alvio-api/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
"event_id": "evt_01JXYZ300",
"event_type": "availability_request",
"event_name": "AVAILABILITY_REQUESTED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:50:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"requested_window_start": "2026-04-09T00:00:00+02:00",
"requested_window_end": "2026-04-12T23:59:59+02:00",
"timezone": "Europe/Paris",
"slot_duration_minutes": 30,
"max_slots": 5,
"request_reason": "Le prospect souhaite planifier un rappel ou un rendez-vous."
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}'Because availability_request is designed to retrieve usable slots, Admvalue should return a structured response.
{
"request_id": "evt_01JXYZ300",
"status": "success",
"timezone": "Europe/Paris",
"slots": [
{
"start": "2026-04-09T09:30:00+02:00",
"end": "2026-04-09T10:00:00+02:00",
"label": "Mercredi 9 avril - 09h30"
},
{
"start": "2026-04-09T14:00:00+02:00",
"end": "2026-04-09T14:30:00+02:00",
"label": "Mercredi 9 avril - 14h00"
}
]
}{
"request_id": "evt_01JXYZ300",
"status": "error",
"error_code": "NO_AVAILABILITY_FOUND",
"message": "Aucun creneau disponible sur la periode demandee."
}meeting is used when an appointment has been successfully booked.
MEETING_BOOKED
{
"event_id": "evt_01JXYZ400",
"event_type": "meeting",
"event_name": "MEETING_BOOKED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:55:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"meeting_type": "appointment",
"booking_status": "confirmed",
"start": "2026-04-09T09:30:00+02:00",
"end": "2026-04-09T10:00:00+02:00",
"timezone": "Europe/Paris",
"assigned_to": "commercial_42",
"location": "phone",
"notes": "Le prospect prefere etre rappele sur sa ligne directe."
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}curl --location 'https://ws.admvalue.fr/RBT3/alvio-api/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data '{
"event_id": "evt_01JXYZ400",
"event_type": "meeting",
"event_name": "MEETING_BOOKED",
"version": "2026-04-08",
"occurred_at": "2026-04-08T10:55:00Z",
"lead": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+33612345678",
"email": "jane@example.com"
},
"external_references": {
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
},
"alvio": {
"campaign_id": "cmp_123",
"campaign_name": "Rappel prospects chauds",
"conversation_id": "conv_123",
"conversation_url": "https://alvio.ai/inbox/conversations/conv_123",
"business_phone": "+33100000000",
"has_whatsapp": true
},
"data": {
"meeting_type": "appointment",
"booking_status": "confirmed",
"start": "2026-04-09T09:30:00+02:00",
"end": "2026-04-09T10:00:00+02:00",
"timezone": "Europe/Paris",
"assigned_to": "commercial_42",
"location": "phone",
"notes": "Le prospect prefere etre rappele sur sa ligne directe."
},
"source_data": {
"firstname": "Jane",
"lastname": "Doe",
"phone": "+33612345678",
"contact_id": "crm_contact_123",
"deal_id": "deal_456"
}
}'conversation_urlis included to help Admvalue teams open the relevant Alvio conversation directly.source_datashould contain the original payload sent by Admvalue, or a lightly sanitized version if sensitive fields need to be excluded.meeting_typecan beappointment,visit, or any other agreed business value.availability_requestis the only event type that should return an immediate structured response.- If needed, the contract can later be extended with stricter enums for
reason,qualification,booking_status, andmeeting_type.