Zadarma Voice
Connect a Zadarma Virtual PBX for CRM callback calling and signed call logging.
Zadarma is an optional bring-your-own-account voice provider for LeenOps. Workspace users can start a call from CRM; Zadarma rings the configured PBX extension, SIP login, scenario, or phone number and then connects the customer. Signed Zadarma events update the shared LeenOps call history.
For the cross-provider workflow, roles, call history, and operations, read the Telephony guide first.
Zadarma calls happen through your PBX or phone. They do not use the LeenOps browser microphone, and inbound calls cannot be answered in LeenOps.
What You Need
- an active Zadarma account and Virtual PBX;
- a Zadarma API key and API secret;
- a callback source that Zadarma can ring;
- sufficient balance and permission to call the intended destinations;
- workspace telephony provider permissions.
Generate the key and secret in Zadarma under Settings > Integrations and API. Keep the API secret private. Enter it only in the LeenOps password field; never put it in a ticket, screenshot, chat, or source file.
Before Connecting: Check the PBX Notification URL
Zadarma provides one PBX call-notification URL. Connecting LeenOps on the production Workspace domain replaces the URL currently stored in that slot. If another CRM uses it, plan the cutover before connecting.
LeenOps automatically installs its signed event URL and enables the supported incoming and outgoing call notifications. Localhost and temporary Vercel preview domains deliberately skip this carrier-side change.
Connect Zadarma
- Open Settings > Telephony & Messaging.
- Open Providers and select Add Provider.
- Choose Zadarma.
- Enter the API key and API secret.
- Enter the required Callback source.
- Optionally enter a SIP extension / caller ID.
- Optionally enable Predictive callback.
- Choose whether Zadarma should be the default voice provider.
- Select Connect provider.
The callback source can be a PBX extension, SIP login, PBX scenario, or phone number supported by the account. In normal mode Zadarma rings this source first. With predictive callback enabled, it calls the customer first and connects the source only after the customer answers.
Make a CRM Call
- Open a CRM record with a phone number.
- Select the call action.
- Answer the callback on the configured source.
- Zadarma connects the destination.
Use international destination format. For a Belgian mobile number, for example,
use +32470000000; LeenOps sends the digits to Zadarma.
The first local call-history row is queued before Zadarma's signed events add the PBX call identifier and final state. Avoid starting several callbacks to the same destination at exactly the same time because provider-to-local correlation is currently best-effort in that situation.
Signed Call Events
The provider card shows a connection-specific URL:
https://your-leenops-domain.example/api/webhooks/zadarma/<connection-id>LeenOps verifies Zadarma's Signature header with the encrypted API secret and
records supported incoming/outgoing start, answer, and end events. Duplicate
payloads are deduplicated.
Current limitations:
- call updates are processed immediately, not through a background retry queue;
- a delayed older event can overwrite a newer state;
- inbound history is assigned to the person who connected Zadarma, not to a mapped PBX extension;
- recordings, transcripts, SMS, number management, transfer, and browser answering are not supported.
Health and Troubleshooting
The Zadarma provider card shows verification state, recent events, recent calls, failed calls, and the last provider error.
| Problem | What to check |
|---|---|
| Connection fails | Confirm the key, secret, callback source, PBX status, and account balance |
| Callback never rings | Confirm the callback source is valid and reachable in Zadarma |
| Destination fails | Use international format and check balance, routing, and country authorization |
| Call history does not update | Confirm the production notification URL and enabled NOTIFY_* events in Zadarma |
| Webhook returns 401 | Confirm Zadarma is using the API secret belonging to the connected key |
| Incoming call has the wrong owner | Per-extension user mapping is not available yet |
| Provider card shows no queue failure | Zadarma processing is inline; inspect recent calls/events and application logs |
Disconnect Safely
- Disconnect Zadarma in LeenOps to clear the encrypted local credentials.
- Open Zadarma Settings > Integrations and API.
- Remove the LeenOps call-notification URL or replace it with the next approved integration URL.
LeenOps does not currently remove or restore the Zadarma URL automatically on disconnect. Existing LeenOps call history remains available.
Security and Billing
- Zadarma API credentials are encrypted in the Workspace provider connection.
- Signed events are accepted only for the connected provider row.
- Provider setup/default/disconnect actions use granular telephony permissions.
- Calls and numbers are billed by the connected Zadarma account. LeenOps is not the carrier or merchant of record.
- Run billable acceptance only with an approved account, destination, and budget.
Official Zadarma References
- Telephony — Provider choice, roles, calling, call history, and operations
- Zadarma API
- Callback calling
- CRM integration guidance

