Skip to main content

Support & Resources

Ring Groups webhooks - missed calls and unanswered failover

Premium Features

Loading...

Ring Groups webhooks - missed calls and unanswered failover

Ring Groups webhooks - missed calls and unanswered failover

Premium Ring Group webhooks notify you when a call starts, is answered, is missed, is abandoned, or ends. If nobody answers, Crazytel sends ring_group.missed, then ring_group.completed with failover status.

Where to set it up

  1. Go to Premium Features > Ring Groups and open the group you want to edit.
  2. Open the Alerts & Webhooks tab.
  3. In the HTTP Webhooks card, turn Send call webhooks on.
  4. Enter your address in Webhook URL. It must start with https://.
  5. Optional: enter a Signing secret (up to 64 characters).
  6. Click Save Alerts & Webhooks.

Click Webhook Docs on the same tab for example messages. Turning webhooks off also stops transcription and Call Insights events.

Events you will receive

All of these events are sent when webhooks are on. You cannot switch individual events off.

EventWhen it is sent
ring_group.startedA call has reached the Ring Group.
ring_group.answeredA team member answered (and pressed 1, if that is required) and was connected to the caller.
ring_group.missedThe group rang and nobody answered. The call is now going to your no-answer destination.
ring_group.abandonedThe caller hung up before anyone answered and before no-answer routing started.
ring_group.completedThe call ended. Status is answered if a member took it, or failover if nobody answered.
ring_group.transcription_completedThe call transcript is ready (only if transcription is turned on).
ring_group.insights_completedCall Insights are ready (only if Insights are turned on).

What happens when nobody answers

An unanswered call that rang your team sends three messages, in this order:

  1. ring_group.started
  2. ring_group.missed
  3. ring_group.completed with status failover when the call ends

After-hours or holiday routing (nothing rings) sends started then completed with status failover. There is no missed event in that case.

If the caller hangs up while members are ringing, you get started then abandoned. A hang-up after no-answer routing has already started (for example while leaving a voicemail) is not abandoned. That call still uses missed and completed with status failover.

missed and abandoned are never both sent for the same call. Do not treat status failover as answered. Talk time is empty on those completed events.

Sending to a chat app

If your URL is a Slack, Discord, Microsoft Teams or Google Chat incoming webhook address, Crazytel sends a short, easy-to-read message instead of the full JSON. Start with a chat URL if you only want alerts. Switch to your own HTTPS address when you want to automate.

Example: nobody answered

{
  "event": "ring_group.missed",
  "occurred_at": "2026-10-06T05:41:35Z",
  "account_code": "295327",
  "caller_id": "61411222333",
  "original_did": "61299998888",
  "ring_group": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sales",
    "route_token": "rg_c75ed0c15973"
  },
  "call": {
    "uuid": "9f1e77a2-6a1b-4c33-b0f1-2b1c0a44e881",
    "route_token": "rg_c75ed0c15973",
    "status": "missed",
    "caller_id": "61411222333",
    "original_did": "61299998888",
    "started_at": "2026-10-06T05:41:05Z",
    "ring_duration_sec": 30
  }
}

Example: the unanswered call ended

{
  "event": "ring_group.completed",
  "occurred_at": "2026-10-06T05:41:53Z",
  "account_code": "295327",
  "caller_id": "61411222333",
  "original_did": "61299998888",
  "ring_group": {
    "uuid": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Sales",
    "route_token": "rg_c75ed0c15973"
  },
  "call": {
    "uuid": "9f1e77a2-6a1b-4c33-b0f1-2b1c0a44e881",
    "route_token": "rg_c75ed0c15973",
    "status": "failover",
    "caller_id": "61411222333",
    "original_did": "61299998888",
    "started_at": "2026-10-06T05:41:05Z",
    "ring_duration_sec": 30,
    "talk_duration_sec": null,
    "total_duration_sec": 48
  }
}
FieldWhat it means
call.uuidA unique ID for the call. The same ID is used on every event for that call.
call.statusringing, answered, missed, failover or abandoned.
call.ring_duration_secHow long the group rang before answer, miss or abandon.
call.talk_duration_secHow long someone talked. Empty (null) when nobody answered.
call.member_uuidOn ring_group.answered, which member took the call.
abandon_stageOn ring_group.abandoned, pre_ring (nothing had started ringing yet) or ringing.
caller_id / original_didWho called and the number they dialled, when known. Use the top-level value if both are present.

The missed event does not name your no-answer destination. Open the call in Ring Group call history if you need that detail.

Security

If you set a secret, each request includes:

X-CrazyRingGroup-Signature: <signature>
User-Agent: CrazytelRingGroup/1.0

The Ring Groups signature is plain hexadecimal, without the sha256= prefix used by some other features. See Verifying webhook signatures.

Delivery and retries

  • Your server should reply with a 2xx status within about 10 seconds.
  • If it does not, Crazytel tries again after 5 minutes, 15 minutes, 1 hour, 4 hours, then every 12 hours, up to 8 attempts in total.
  • Events can arrive out of order after a retry. Use occurred_at for order, and ignore duplicates of the same event plus call.uuid.
  • In the call history, a call's activity shows Webhook queued and Webhook delivered entries.

Shared delivery rules are in Things every webhook has in common. Setup across features is in Webhooks quick comparison.

Cost

Webhooks are included at no platform charge. SMS alerts on the same group are billed per message segment.