Webhook Events Reference

Connect my tools3 min readUpdated 2026-03-12

Webhook Events Reference

This page documents every webhook event type available in JustCall V2, along with a sample payload for each. Use these as a reference when building your webhook handler.

call.completed

Fired when a call ends normally.

{
  "event": "call.completed",
  "timestamp": "2026-03-12T14:30:00Z",
  "data": {
    "call_id": "call_8f3a2b1c",
    "direction": "inbound",
    "from": "+14155559876",
    "to": "+14155551234",
    "agent_id": 42,
    "agent_name": "Jordan Lee",
    "duration": 185,
    "status": "completed",
    "recording_url": "https://recordings.justcall.io/rec_abc123.mp3",
    "notes": "Customer confirmed renewal.",
    "disposition": "Closed Won"
  }
}

call.missed

Fired when an inbound call goes unanswered.

{
  "event": "call.missed",
  "timestamp": "2026-03-12T14:32:00Z",
  "data": {
    "call_id": "call_1d4e5f6a",
    "direction": "inbound",
    "from": "+14155558765",
    "to": "+14155551234",
    "agent_id": null,
    "ring_duration": 30,
    "status": "missed"
  }
}

call.answered

Fired when an agent picks up an inbound call.

{
  "event": "call.answered",
  "timestamp": "2026-03-12T14:33:10Z",
  "data": {
    "call_id": "call_7b8c9d0e",
    "direction": "inbound",
    "from": "+14155553456",
    "to": "+14155551234",
    "agent_id": 15,
    "agent_name": "Sam Chen",
    "status": "in-progress"
  }
}

sms.received

Fired when an inbound SMS arrives.

{
  "event": "sms.received",
  "timestamp": "2026-03-12T14:35:00Z",
  "data": {
    "message_id": "msg_a1b2c3d4",
    "direction": "inbound",
    "from": "+14155559876",
    "to": "+14155551234",
    "body": "Can I reschedule my appointment to Friday?",
    "media_url": null
  }
}

sms.sent

Fired when an outbound SMS is sent.

{
  "event": "sms.sent",
  "timestamp": "2026-03-12T14:36:00Z",
  "data": {
    "message_id": "msg_e5f6g7h8",
    "direction": "outbound",
    "from": "+14155551234",
    "to": "+14155559876",
    "body": "Sure! You are confirmed for Friday at 10 AM.",
    "media_url": null,
    "agent_id": 42
  }
}

sms.delivered

Fired when the carrier confirms delivery of an outbound SMS.

{
  "event": "sms.delivered",
  "timestamp": "2026-03-12T14:36:05Z",
  "data": {
    "message_id": "msg_e5f6g7h8",
    "direction": "outbound",
    "from": "+14155551234",
    "to": "+14155559876",
    "status": "delivered",
    "delivered_at": "2026-03-12T14:36:04Z"
  }
}

voicemail.received

Fired when a caller leaves a voicemail.

{
  "event": "voicemail.received",
  "timestamp": "2026-03-12T14:40:00Z",
  "data": {
    "call_id": "call_1d4e5f6a",
    "from": "+14155558765",
    "to": "+14155551234",
    "agent_id": 42,
    "duration": 22,
    "recording_url": "https://recordings.justcall.io/vm_xyz789.mp3",
    "transcription": "Hi, this is Pat from Globex. Please call me back about the contract."
  }
}

contact.created

Fired when a new contact is added (via UI, API, or integration sync).

{
  "event": "contact.created",
  "timestamp": "2026-03-12T14:45:00Z",
  "data": {
    "contact_id": 98765,
    "first_name": "Jordan",
    "last_name": "Lee",
    "phone": "+14155559876",
    "email": "jordan@example.com",
    "company": "Acme Corp",
    "source": "api"
  }
}

contact.updated

Fired when an existing contact record is modified.

{
  "event": "contact.updated",
  "timestamp": "2026-03-12T14:50:00Z",
  "data": {
    "contact_id": 98765,
    "changed_fields": ["company", "email"],
    "first_name": "Jordan",
    "last_name": "Lee",
    "phone": "+14155559876",
    "email": "jordan@acmecorp.com",
    "company": "Acme Corp International",
    "source": "ui"
  }
}

Common Payload Fields

Every event shares these top-level fields:

FieldTypeDescription
eventstringEvent type identifier
timestampstringISO 8601 UTC timestamp of the event
dataobjectEvent-specific details (see above)

Was this helpful?