Setting up video calls in Bitrix24

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

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:

  1. 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.

  2. 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.