Step-by-step guide

How to set up the outgoing WebHook

Connection takes a few minutes: prepare an HTTPS endpoint, paste it into ProZvonki, send a test and select the events you need. Below is the setup order and the exact request format.

WebHook icon from the ProZvonki settings

Step 1. Prepare an HTTPS URL

Create a WebHook in n8n, Make or your own system. The receiver must accept POST requests, read JSON and return 2xx only after the event has been stored safely.

Step 2. Open the ProZvonki settings

Go to Settings → the “Business” tab → Integrations → WebHook and enable the integration.

Step 3. Enter the URL and token

Paste the full HTTPS URL. If the receiver uses Bearer authentication, enter the token. Tap “Save and send test” and make sure the app reports a successful request.

Step 4. Choose events and data

Enable call_started if you need an event as soon as a call begins. Separately decide whether to send the contact name and call recording. On a dual-SIM phone, choose the work SIM and add clear labels.

Step 5. Make processing duplicate-safe

Store processed event_id values. If the server receives a request but its response is lost, the phone sends the same event again. Use the shared call_id to link all events for one call.

Example call-finished event

Fields that do not apply are sent as null, so the JSON structure remains predictable.

{
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "call_id": "663dbf58-1bfd-4a59-a3af-bad6f9511cec",
  "event": "call_finished",
  "direction": "incoming",
  "result": "answered",
  "ended_by": "remote",
  "number": "+79001234567",
  "hidden": false,
  "contact_name": "John Smith",
  "contact_name_source": "contacts",
  "duration_sec": 42,
  "timestamp": "2026-09-25T10:30:00Z",
  "timestamp_unix": 1790332200,
  "sim_slot": 0,
  "sim_label": "Work SIM"
}

Call-recording format

recording_ready arrives as multipart/form-data. The payload part contains JSON with event_id, the same call_id, number, direction, duration, file name, format and size. The recording part contains the audio file itself. The server does not need to decode Base64.

Which responses count as successful

Return any 2xx HTTP response only after saving the event and file. For a temporary problem return 408, 425, 429 or 5xx and the app retries. Responses 401/403 mean the URL, token or access rules need to be corrected.

FAQ

Frequently asked questions about WebHook setup

Which responses count as successful?

Return an HTTP 2xx response only after the event and file are stored safely. Otherwise, a lost response can make data appear delivered too early.

Why can an event arrive more than once?

If the server response is lost or a temporary network error occurs, the app retries delivery with the same event_id. The receiver must be idempotent.

What should I check if the test fails?

Check the full HTTPS URL, whether the endpoint is reachable from the internet, the Bearer token and your receiver logs. A successful receiver must return 2xx.

Can I use HTTP instead of HTTPS?

Use HTTPS. Plain HTTP is blocked by Android network-security policy except for explicitly allowed local development addresses.

How is a call recording sent?

In a separate multipart request: JSON metadata is in the payload part and the binary audio file is in the recording part. Base64 is not used.