Event Webhooks

A webhook lets VoicerOnePBX tell your software the moment something happens — a call was answered, a voicemail was left, a fax arrived. Instead of your app constantly asking "anything new?", the PBX pushes a small, signed HTTP message to a URL you provide.

Setting one up

  1. Open Settings → Integrations and add an integration with your endpoint URL and a secret.
  2. Subscribe it to the events you care about.
  3. When an event fires, the PBX POSTs a JSON body to your URL, signed so you can trust it.

A few of the events

  • call.answered, call.ended — call lifecycle.
  • voicemail.left — a new voicemail.
  • fax.received — an inbound fax landed.

Verifying the signature

Each request carries an HMAC signature so you know it genuinely came from your PBX and wasn't forged or altered. The header X-Voicer-Signature: sha256=<hex> is HMAC-SHA256 over timestamp . body using your shared secret. Recompute it and compare:

expected = HMAC_SHA256(secret, X-Voicer-Timestamp + "." + raw_body)
if hex(expected) == signature_from_header:  # good — it's really from the PBX
    process(body)
Reliable delivery

Deliveries are retried with backoff if your endpoint is briefly down, every attempt is recorded in a delivery log you can inspect, and a persistently failing endpoint is temporarily suspended (a circuit breaker) so it doesn't hold everything up. Outbound requests are also SSRF-guarded — they can't be tricked into hitting internal addresses.

Webhooks push, the Inbox API pulls

Webhooks are great for reacting instantly. If you'd rather poll for received messages on your own schedule, use the Inbox API instead — or use both.