When Loading or Changing a CRM Object BackgroundCallCard::entityChanged
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Scope:
placement— registration of the placement,telephony— registration of the call that raises the cardWho can subscribe: any user
The BackgroundCallCard::entityChanged event occurs when the card loads or changes the CRM object linked to the call.
The event arrives in three cases:
- the call card opened and pulled up the client data from the CRM. In this case, the event may arrive earlier than BackgroundCallCard::initialized
- the client was identified or the call was rebound to another CRM object
- in call campaign mode, the operator moved on to the next client
The event operates within the application context in the PAGE_BACKGROUND_WORKER placement. This is a JS interface event, not a REST event: you cannot subscribe to it with a request to /rest/.
What the Handler Receives
Data is passed to the callback BX24.placement.bindEvent
callback({
"PHONE_NUMBER": "+19001234567",
"CRM_ENTITY_TYPE": "CONTACT",
"CRM_ENTITY_ID": 123
});
Event Handler Parameters
Required parameters are marked with *
|
Parameter |
Description |
|
PHONE_NUMBER |
The client's phone number. If the client has no phone number at all, the string |
|
CRM_ENTITY_TYPE |
The type of the CRM object linked to the call |
|
CRM_ENTITY_ID |
The identifier of the CRM object linked to the call.
|
Event Subscription Parameters
The handler is registered from the widget with the BX24.placement.bindEvent method.
Required parameters are marked with *
|
Name |
Description |
|
event* |
The name of the interface event. For this event — |
|
callback* |
The function Bitrix24 invokes when the event occurs. The handler arguments are described above |
Code Examples
How to Use Examples in Documentation
BX24.ready(function () {
BX24.init(function () {
BX24.placement.bindEvent('BackgroundCallCard::entityChanged', function (eventData) {
console.log(eventData);
});
});
});
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide)
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
await $b24.placement.bindEvent('BackgroundCallCard::entityChanged', (eventData: { PHONE_NUMBER: string; CRM_ENTITY_TYPE: string; CRM_ENTITY_ID: number }) => {
console.log(eventData.CRM_ENTITY_ID)
})
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', async () => {
const $b24 = await B24Js.initializeB24Frame()
await $b24.placement.bindEvent('BackgroundCallCard::entityChanged', (eventData) => {
console.log(eventData)
})
})
</script>
Errors
Check the following conditions.
- The widget is open in the
PAGE_BACKGROUND_WORKERplacement. In other placements, theBackgroundCallCard::*events are not registered, and the subscription silently fails - The event name is passed without typos and with the correct capitalization. The list of events available in the current placement is returned by BX24.placement.getInterface
- The call was raised by the application with the telephony.externalCall.register method. For calls made by Bitrix24 itself, the
BackgroundCallCard::*events are not emitted at all