Skip to content

Eventi Webhook

Eventi disponibili

EventoDescrizione
call.endedEmesso quando una chiamata AI termina (completata, fallita o cancellata)

Altri eventi in arrivo

I futuri eventi includeranno appointment.created, appointment.cancelled, sms.received, contact.created e altri.


call.ended

Inviato quando una chiamata AI termina, indipendentemente dall'esito.

Payload

json
{
  "id": "evt-delivery-uuid",
  "event": "call.ended",
  "timestamp": "2026-04-05T14:04:00Z",
  "data": {
    "callId": "clx-call-001",
    "organizationId": "clx-org-001",
    "agentId": "clx-agent-001",
    "agentName": "Agente Vendite",
    "customerName": "Mario Rossi",
    "customerPhone": "+1234567890",
    "fromNumber": "+0987654321",
    "direction": "OUTBOUND",
    "status": "completed",
    "duration": 240,
    "disconnectionReason": "agent_hangup",
    "sentiment": "positive",
    "summary": "Discusso il piano enterprise. Il cliente è interessato al piano annuale.",
    "transcript": "Agente: Buongiorno Mario, sono...\nMario: Salve, sì stavo...",
    "callSuccessful": true,
    "tokenCost": 12.50,
    "startedAt": "2026-04-05T14:00:00Z",
    "endedAt": "2026-04-05T14:04:00Z",
    "metadata": {
      "campaign_id": "estate_2026"
    }
  }
}

Campi

CampoTipoDescrizione
callIdstringIdentificativo univoco della chiamata
organizationIdstringID della tua organizzazione
agentIdstringAgente che ha gestito la chiamata
agentNamestringNome visualizzato dell'agente
customerNamestring | nullNome della persona chiamata
customerPhonestringNumero di telefono destinatario
fromNumberstringNumero chiamante usato
directionstringINBOUND o OUTBOUND
statusstringStato finale della chiamata
durationintegerDurata della chiamata in secondi
disconnectionReasonstring | nullMotivo della disconnessione
sentimentstring | nullSentiment rilevato dall'AI
summarystring | nullRiepilogo della chiamata generato dall'AI
transcriptstring | nullTrascrizione completa della chiamata
callSuccessfulboolean | nullSe la chiamata ha raggiunto il suo obiettivo
tokenCostnumberCosto in token/crediti
startedAtstring | nullOrario di inizio ISO 8601
endedAtstring | nullOrario di fine ISO 8601
metadataobject | nullMetadati personalizzati impostati alla creazione

Esempio di handler (Node.js)

javascript
app.post('/webhook', (req, res) => {
  const { event, data } = req.body

  if (event === 'call.ended') {
    console.log(`Chiamata ${data.callId} terminata`)
    console.log(`Stato: ${data.status}, Durata: ${data.duration}s`)
    console.log(`Sentiment: ${data.sentiment}`)
    
    // Salva nel tuo CRM, notifica il team, ecc.
    if (data.callSuccessful) {
      notifyTeam(`Chiamata riuscita con ${data.customerName}`)
    }
  }

  // Rispondi sempre 2xx
  res.status(200).json({ received: true })
})

Replicer API Documentation