Setting Up Video Calls in Bitrix24
Bitrix24 includes built-in video calling via WebRTC — bitrix24.videoconference, which works directly in the browser without installing additional software. However, the default capabilities are limited: there are no custom branded rooms, no call recording in the required format, and no integration between video calls and the CRM funnel for automatic meeting logging.
Configuring video calls is not simply "enabling a feature" — it means setting up scenarios: when a room is created, who receives the link, where the recording is saved, and how it appears in the deal card.
Built-in Bitrix24 video calls
The built-in tool is accessible via "Calls → Video Call" or the button in a chat. Technically it runs on the BX24 WebRTC SDK. To enable it:
Portal Settings → Telephony → Video Calls → Enable
By default it supports up to 12–24 participants (depending on the plan), with cloud recording on paid plans.
Limitations of the built-in solution: no room interface customisation, no native "create a room from a deal" integration, recordings are stored only in the Bitrix24 cloud.
Zoom integration via REST API
For companies that use Zoom as their primary video conferencing tool — automatic Zoom meeting creation when a "Meeting" activity is created in Bitrix24:
class ZoomBitrix24Integration
{
private ZoomApiClient $zoom;
private BitrixRestClient $b24;
public function onActivityCreate(array $activity): void
{
if ($activity['TYPE_ID'] != 1) return; // only "Meeting" type
if (empty($activity['END_TIME'])) return;
$startTime = new DateTime($activity['START_TIME']);
$endTime = new DateTime($activity['END_TIME']);
$duration = ($endTime->getTimestamp() - $startTime->getTimestamp()) / 60;
// Create meeting in Zoom
$meeting = $this->zoom->createMeeting([
'topic' => $activity['SUBJECT'],
'type' => 2, // scheduled meeting
'start_time' => $startTime->format('Y-m-d\TH:i:s'),
'duration' => (int)$duration,
'timezone' => 'Europe/Moscow',
'settings' => [
'auto_recording' => 'cloud',
'waiting_room' => true,
'mute_upon_entry' => true,
],
]);
// Save the link to the Bitrix24 activity
$this->b24->call('crm.activity.update', [
'ID' => $activity['ID'],
'FIELDS' => [
'DESCRIPTION' => "Zoom link: {$meeting['join_url']}\n\n"
. $activity['DESCRIPTION'],
'UF_CRM_ZOOM_MEETING_ID' => $meeting['id'],
'UF_CRM_ZOOM_JOIN_URL' => $meeting['join_url'],
'UF_CRM_ZOOM_HOST_URL' => $meeting['start_url'],
],
]);
// Send the link to the client via CRM email or WhatsApp
$this->sendMeetingLinkToClient($activity, $meeting['join_url']);
}
}
Automatic meeting link delivery to the client
After a meeting is created, the link is sent to the client automatically — via email (a template with the Zoom link) or via a messenger (WhatsApp, Telegram — if the integration is configured):
$this->b24->call('messageservice.message.add', [
'FROM_CONNECTOR' => 'WHATSAPP',
'FROM_LINE' => $lineId,
'TO' => $clientPhone,
'MESSAGE' => "Hello! Here is your meeting link:\n{$meetingUrl}\n"
. "Time: {$startTime->format('d.m.Y H:i')}",
]);
Call recording and storage
With the built-in Bitrix24 Videoconference, recordings are available in the chat history. For integration with external storage:
-
Zoom Cloud Recording — a Zoom webhook fires when the recording is ready (
recording.completed) → upload to S3-compatible storage → link saved in the deal card. -
Local recording on the server — when using a self-hosted WebRTC server (Jitsi Meet, BigBlueButton) with MP4 recording enabled.
Jitsi Meet as an alternative
For companies where full data privacy is a requirement (data must not leave the company's own infrastructure) — Jitsi Meet on a self-hosted server. Integration with Bitrix24: a unique room is generated on the Jitsi server when a meeting is created:
$roomName = 'deal-' . $dealId . '-' . uniqid();
$jitsiUrl = 'https://meet.company.com/' . $roomName;
$tokenJwt = $this->generateJitsiJwt($roomName, $moderatorName);
// Host link (with moderator privileges)
$hostUrl = $jitsiUrl . '?jwt=' . $tokenJwt;
// Client link (without JWT)
$clientUrl = $jitsiUrl;
Scope of work
- Configuring built-in Bitrix24 video calls (plan, settings)
- Zoom API integration: creating meetings from CRM activities
- Zoom webhook: saving recordings to the deal card
- Automatic meeting link delivery (email / messenger)
- Or: deploying Jitsi Meet on a self-hosted server + JWT authentication
Timeline: built-in Bitrix24 video calls — 1 day of setup. Zoom integration — 3–5 days. Self-hosted Jitsi with JWT and CRM integration — 2–3 weeks.







