Webhooks Overview

Connect my tools3 min readUpdated 2026-03-12

Webhooks Overview

Webhooks push real-time event data to your application the moment something happens in JustCall — a call completes, an SMS arrives, a voicemail is left. Instead of polling the API repeatedly, your server receives an HTTP POST with the event details.

How Webhooks Work

  1. You register a webhook URL in JustCall.
  2. You select which events to subscribe to.
  3. When a subscribed event occurs, JustCall sends a POST request to your URL with a JSON payload.
  4. Your server responds with a 200 OK to acknowledge receipt.

If your server does not respond with a 200 status, JustCall retries the delivery up to 5 times with exponential backoff (1, 5, 15, 30, and 60 minutes).

Set Up a Webhook

  1. Log in to JustCall as an Admin.
  2. Go to Settings → API & Webhooks.
  3. Scroll to the Webhooks section and click Add Webhook.
  4. Enter your Webhook URL (must be HTTPS).
  5. Select the events you want to receive.
  6. Click Save.

You can register multiple webhook URLs and subscribe each one to different event types.

Available Event Types

EventTriggered when
call.completedA call ends (inbound or outbound)
call.missedAn inbound call is not answered
sms.receivedAn inbound SMS arrives
sms.sentAn outbound SMS is sent
voicemail.receivedA caller leaves a voicemail
contact.createdA new contact is added to JustCall

See Webhook Events Reference for the full list with sample payloads.

Payload Format

Every webhook POST includes these standard fields:

{
  "event": "call.completed",
  "timestamp": "2026-03-12T14:30:00Z",
  "data": {
    "call_id": "call_8f3a2b1c",
    "direction": "inbound",
    "from": "+14155559876",
    "to": "+14155551234",
    "agent_id": 42,
    "duration": 185,
    "status": "completed",
    "recording_url": "https://recordings.justcall.io/rec_abc123.mp3"
  }
}
FieldTypeDescription
eventstringThe event type that triggered the hook
timestampstringISO 8601 timestamp of the event
dataobjectEvent-specific payload

Verifying Webhook Authenticity

Each webhook request includes an X-JustCall-Signature header. To verify the request came from JustCall:

  1. Compute an HMAC-SHA256 hash of the raw request body using your API Secret as the key.
  2. Compare the computed hash with the value in X-JustCall-Signature.
  3. If they match, the request is authentic.

Testing Your Webhook

Use a service like webhook.site or ngrok to inspect payloads before pointing the webhook at your production server.

Troubleshooting

  • Not receiving events — Confirm your URL is HTTPS and publicly accessible. Check that the correct events are selected in Settings.
  • Duplicate events — Design your handler to be idempotent. Use call_id or message_id to deduplicate.
  • Timeouts — Your server must respond within 10 seconds. Offload heavy processing to a background job and return 200 OK immediately.

Was this helpful?