> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/jitsi/lib-jitsi-meet/llms.txt
> Use this file to discover all available pages before exploring further.

# Conference Events

> Events fired by JitsiConference for conference lifecycle, participants, and media

# JitsiConferenceEvents

Events related to conference lifecycle, participant management, media tracks, and conference features.

## Conference Lifecycle

### CONFERENCE\_JOINED

**Event:** `conference.joined`

Fires when the local participant has successfully joined the conference.

```javascript theme={null}
conference.on(JitsiMeetJS.events.conference.CONFERENCE_JOINED, () => {
  console.log('Successfully joined conference');
});
```

### CONFERENCE\_JOIN\_IN\_PROGRESS

**Event:** `conference.join_in_progress`

Fires when the conference join process is in progress.

### CONFERENCE\_LEFT

**Event:** `conference.left`

Fires when the local participant has left the conference.

### CONFERENCE\_FAILED

**Event:** `conference.failed`

Fires when the conference has failed.

### CONFERENCE\_ERROR

**Event:** `conference.error`

Fires when a conference error has occurred.

### CONFERENCE\_UNIQUE\_ID\_SET

**Event:** `conference.unique_id_set`

Fires when the conference unique identifier has been set.

### CONFERENCE\_CREATED\_TIMESTAMP

**Event:** `conference.createdTimestamp`

Fires with the UTC conference timestamp when the first participant joined.

***

## Connection Status

### CONNECTION\_ESTABLISHED

**Event:** `conference.connectionEstablished`

Fires when the connection to the conference has been established. Currently fired when the ICE connection enters 'connected' state for the first time.

### CONNECTION\_INTERRUPTED

**Event:** `conference.connectionInterrupted`

Fires when the connection to the conference has been interrupted. Currently fired when the ICE connection is interrupted.

### CONNECTION\_RESTORED

**Event:** `conference.connectionRestored`

Fires when the connection to the conference has been restored. Currently fired when the ICE connection is restored.

***

## Participants

### USER\_JOINED

**Event:** `conference.userJoined`

Fires when a new user has joined the conference.

<ResponseField name="participant" type="JitsiParticipant">
  The participant who joined
</ResponseField>

### USER\_LEFT

**Event:** `conference.userLeft`

Fires when a user has left the conference.

<ResponseField name="participant" type="JitsiParticipant">
  The participant who left
</ResponseField>

### USER\_ROLE\_CHANGED

**Event:** `conference.roleChanged`

Fires when a user's role has changed.

### USER\_STATUS\_CHANGED

**Event:** `conference.statusChanged`

Fires when a user's status has changed.

### DISPLAY\_NAME\_CHANGED

**Event:** `conference.displayNameChanged`

Fires when a user has changed their display name.

### PARTICIPANT\_PROPERTY\_CHANGED

**Event:** `conference.participant_property_changed`

Fires when a property of a specific participant has changed.

### PARTCIPANT\_FEATURES\_CHANGED

**Event:** `conference.partcipant_features_changed`

Fires when the features of a participant have changed.

<Note>
  There is a spelling mistake in this event name ("PARTCIPANT" instead of "PARTICIPANT") that is maintained for backward compatibility.
</Note>

### PARTICIPANT\_SOURCE\_UPDATED

**Event:** `conference.participant_source_updated`

Fires when the state of sources attached to a remote participant has changed.

### KICKED

**Event:** `conference.kicked`

Fires when the local participant has been kicked from the conference.

<ResponseField name="participant" type="JitsiParticipant">
  The participant who initiated the kick
</ResponseField>

### PARTICIPANT\_KICKED

**Event:** `conference.participant_kicked`

Fires when a participant was kicked from the conference.

<ResponseField name="kicker" type="JitsiParticipant">
  The participant who initiated the kick
</ResponseField>

<ResponseField name="kicked" type="JitsiParticipant">
  The participant who was kicked
</ResponseField>

***

## Media Tracks

### TRACK\_ADDED

**Event:** `conference.trackAdded`

Fires when a new media track was added to the conference.

<ResponseField name="track" type="JitsiTrack">
  The added JitsiTrack (local or remote)
</ResponseField>

```javascript theme={null}
conference.on(JitsiMeetJS.events.conference.TRACK_ADDED, (track) => {
  console.log('Track added:', track.getType());
  if (!track.isLocal()) {
    // Remote track - attach to DOM
    track.attach(document.getElementById('video'));
  }
});
```

### TRACK\_REMOVED

**Event:** `conference.trackRemoved`

Fires when a media track was removed from the conference.

<ResponseField name="track" type="JitsiTrack">
  The removed JitsiTrack
</ResponseField>

### TRACK\_MUTE\_CHANGED

**Event:** `conference.trackMuteChanged`

Fires when a media track's mute status has changed.

<ResponseField name="track" type="JitsiTrack">
  The track whose mute status changed
</ResponseField>

<ResponseField name="initiator" type="JitsiParticipant | null">
  The participant who initiated the mute if it is a remote mute, or null for local mute
</ResponseField>

### TRACK\_AUDIO\_LEVEL\_CHANGED

**Event:** `conference.audioLevelsChanged`

Fires when the audio level of a media track has changed.

### TRACK\_UNMUTE\_REJECTED

**Event:** `conference.trackUnmuteRejected`

Fires when the source-add for unmuting of a media track was rejected by Jicofo.

***

## Audio/Video Permissions

### AUDIO\_UNMUTE\_PERMISSIONS\_CHANGED

**Event:** `conference.audio_unmute_permissions_changed`

Fires when the permission for unmuting audio has changed based on the number of audio senders and the configured limit.

### VIDEO\_UNMUTE\_PERMISSIONS\_CHANGED

**Event:** `conference.video_unmute_permissions_changed`

Fires when the permission for unmuting video has changed based on the number of video senders and the configured limit.

### AUDIO\_INPUT\_STATE\_CHANGE

**Event:** `conference.audio_input_state_changed`

Fires when the current conference audio input has switched between audio input states (with or without audio input).

### NO\_AUDIO\_INPUT

**Event:** `conference.no_audio_input`

Fires when the current selected input device has no signal.

### NOISY\_MIC

**Event:** `conference.noisy_mic`

Fires when the current microphone used by the conference is noisy.

### TALK\_WHILE\_MUTED

**Event:** `conference.talk_while_muted`

Fires when the local user is talking while muted.

***

## AV Moderation

### AV\_MODERATION\_CHANGED

**Event:** `conference.av_moderation.changed`

Fires when AV moderation was enabled or disabled.

<ResponseField name="enabled" type="boolean">
  Whether moderation is enabled
</ResponseField>

<ResponseField name="mediaType" type="MediaType">
  The media type being moderated (audio or video)
</ResponseField>

<ResponseField name="actor" type="JitsiParticipant | undefined">
  The participant who changed the moderation state, or undefined if they left
</ResponseField>

### AV\_MODERATION\_APPROVED

**Event:** `conference.av_moderation.approved`

Fires when the local participant was approved to unmute.

<ResponseField name="mediaType" type="MediaType">
  The media type that was approved
</ResponseField>

### AV\_MODERATION\_REJECTED

**Event:** `conference.av_moderation.rejected`

Fires when the local participant was blocked from unmuting.

<ResponseField name="mediaType" type="MediaType">
  The media type that was rejected
</ResponseField>

### AV\_MODERATION\_PARTICIPANT\_APPROVED

**Event:** `conference.av_moderation.participant.approved`

Fires when a participant was approved to unmute.

<ResponseField name="participant" type="JitsiParticipant">
  The participant who was approved
</ResponseField>

<ResponseField name="mediaType" type="MediaType">
  The media type that was approved
</ResponseField>

### AV\_MODERATION\_PARTICIPANT\_REJECTED

**Event:** `conference.av_moderation.participant.rejected`

Fires when a participant was blocked from unmuting.

<ResponseField name="participant" type="JitsiParticipant">
  The participant who was rejected
</ResponseField>

<ResponseField name="mediaType" type="MediaType">
  The media type that was rejected
</ResponseField>

***

## Data Channels

### DATA\_CHANNEL\_OPENED

**Event:** `conference.dataChannelOpened`

Fires when a connection to the video bridge's data channel has been established.

### DATA\_CHANNEL\_CLOSED

**Event:** `conference.dataChannelClosed`

Fires when the connection to the video bridge's data channel has been closed.

### ENDPOINT\_MESSAGE\_RECEIVED

**Event:** `conference.endpoint_message_received`

Fires when a message from another participant is received on the data channel.

### NON\_PARTICIPANT\_MESSAGE\_RECEIVED

**Event:** `conference.non_participant_message_received`

Fires when a message from the local user or from the Prosody backend is received on the data channel.

***

## Messaging

### MESSAGE\_RECEIVED

**Event:** `conference.messageReceived`

Fires when a new text message was received.

### PRIVATE\_MESSAGE\_RECEIVED

**Event:** `conference.privateMessageReceived`

Fires when a new private text message was received.

***

## Conference Settings

### SUBJECT\_CHANGED

**Event:** `conference.subjectChanged`

Fires when the subject of the conference has changed.

### LOCK\_STATE\_CHANGED

**Event:** `conference.lock_state_changed`

Fires when the room has been locked or unlocked.

### MEMBERS\_ONLY\_CHANGED

**Event:** `conference.membersOnlyChanged`

Fires when the conference has changed to members-only enabled/disabled.

<ResponseField name="enabled" type="boolean">
  True when the conference is running in members-only mode
</ResponseField>

<Note>
  You may need to use Lobby if supported to ask for permissions to enter the conference.
</Note>

### PROPERTIES\_CHANGED

**Event:** `conference.propertiesChanged`

Fires when the conference properties have changed.

### METADATA\_UPDATED

**Event:** `conference.metadata.updated`

Fires when the conference metadata has been updated.

### PHONE\_NUMBER\_CHANGED

**Event:** `conference.phoneNumberChanged`

Fires when the phone number has changed.

### START\_MUTED\_POLICY\_CHANGED

**Event:** `conference.start_muted_policy_changed`

Fires when the start muted settings have changed.

### PERMISSIONS\_RECEIVED

**Event:** `conference.permissions_received`

Fires when the permissions for the local participant were updated.

***

## Lobby

### LOBBY\_USER\_JOINED

**Event:** `conference.lobby.userJoined`

Fires when a new user joined the lobby room.

### LOBBY\_USER\_LEFT

**Event:** `conference.lobby.userLeft`

Fires when a user left the lobby room.

### LOBBY\_USER\_UPDATED

**Event:** `conference.lobby.userUpdated`

Fires when a user from the lobby room has been updated.

***

## Breakout Rooms

### BREAKOUT\_ROOMS\_UPDATED

**Event:** `conference.breakout-rooms.updated`

Fires when the breakout rooms data was updated.

### BREAKOUT\_ROOMS\_MOVE\_TO\_ROOM

**Event:** `conference.breakout-rooms.move-to-room`

Fires when a participant is requested to join a given breakout room.

***

## Polls and Reactions

### POLL\_RECEIVED

**Event:** `conference.pollReceived`

Fires when a new poll was received or a poll is loaded from history.

### POLL\_ANSWER\_RECEIVED

**Event:** `conference.pollAnswerReceived`

Fires when an answer for a poll was received.

### REACTION\_RECEIVED

**Event:** `conference.reactionReceived`

Fires when a new reaction was received.

***

## File Sharing

### FILE\_SHARING\_FILE\_ADDED

**Event:** `conference.file_sharing.file_added`

Fires when a file is added to the conference.

<ResponseField name="file" type="IFileMetadata">
  The file object containing metadata about the file
</ResponseField>

### FILE\_SHARING\_FILE\_REMOVED

**Event:** `conference.file_sharing.file_removed`

Fires when a file is removed from the conference.

<ResponseField name="fileId" type="string">
  The ID of the file that was removed
</ResponseField>

### FILE\_SHARING\_FILES\_RECEIVED

**Event:** `conference.file_sharing.files_received`

Fires when a list of files is received in the conference. This event fires when a participant joins and the file list is sent to them.

<ResponseField name="files" type="Map<string, IFileMetadata>">
  Map of files received in the conference with the file ID as the key
</ResponseField>

***

## Recording and Transcription

### RECORDER\_STATE\_CHANGED

**Event:** `conference.recorderStateChanged`

Fires when the recording state has changed.

### TRANSCRIPTION\_STATUS\_CHANGED

**Event:** `conference.transcriptionStatusChanged`

Fires when the transcription status has changed.

<ResponseField name="status" type="string">
  The new transcription status
</ResponseField>

***

## E2EE (End-to-End Encryption)

### E2EE\_VERIFICATION\_READY

**Event:** `conference.e2ee.verification.ready`

Fires when E2EE verification is ready.

### E2EE\_VERIFICATION\_AVAILABLE

**Event:** `conference.e2ee.verification.available`

Fires when E2EE verification is available.

### E2EE\_VERIFICATION\_COMPLETED

**Event:** `conference.e2ee.verification.completed`

Fires when E2EE verification has been completed.

***

## P2P Mode

### P2P\_STATUS

**Event:** `conference.p2pStatus`

Fires when the conference has switched between JVB (Jitsi Videobridge) and P2P connections.

<ResponseField name="isP2P" type="boolean">
  True when the conference is running on P2P connection, false when using JVB
</ResponseField>

***

## Network Quality

### LAST\_N\_ENDPOINTS\_CHANGED

**Event:** `conference.lastNEndpointsChanged`

Fires when the Last N set has changed.

<ResponseField name="leavingEndpointIds" type="string[] | null">
  The IDs of all endpoints leaving Last N
</ResponseField>

<ResponseField name="enteringEndpointIds" type="string[] | null">
  The IDs of all endpoints entering Last N
</ResponseField>

### FORWARDED\_SOURCES\_CHANGED

**Event:** `conference.forwardedSourcesChanged`

Fires when the forwarded sources set has changed.

<ResponseField name="leavingForwardedSources" type="string[]">
  The source names of all tracks leaving forwarded sources
</ResponseField>

<ResponseField name="enteringForwardedSources" type="string[]">
  The source names of all tracks entering forwarded sources
</ResponseField>

***

## Statistics

### ENDPOINT\_STATS\_RECEIVED

**Event:** `conference.endpoint_stats_received`

Fires when a message for remote endpoint statistics has been received on the bridge channel.

### BRIDGE\_BWE\_STATS\_RECEIVED

**Event:** `conference.bridgeBweStatsReceived`

Fires when bandwidth estimation stats are received from the bridge.

### ENCODE\_TIME\_STATS\_RECEIVED

**Event:** `conference.encode_time_stats_received`

Fires when encode time stats for local video sources have been received.

### BEFORE\_STATISTICS\_DISPOSED

**Event:** `conference.beforeStatisticsDisposed`

Fires just before the statistics module is disposed. This is the last chance to submit logs to the statistics service before it's disconnected.

***

## Server and Region

### SERVER\_REGION\_CHANGED

**Event:** `conference.server_region_changed`

Fires when the region of the media server (jitsi-videobridge) that we are connected to has changed or was initially set.

***

## Video Features

### DOMINANT\_SPEAKER\_CHANGED

**Event:** `conference.dominantSpeaker`

Fires when the dominant speaker has changed.

### VIDEO\_CODEC\_CHANGED

**Event:** `conference.videoCodecChanged`

Fires when the video codec of the local video track has changed.

***

## Video SIP Gateway

### VIDEO\_SIP\_GW\_AVAILABILITY\_CHANGED

**Event:** `conference.videoSIPGWAvailabilityChanged`

Fires when video SIP GW state has changed.

<ResponseField name="status" type="VideoSIPGWConstants">
  The new status
</ResponseField>

### VIDEO\_SIP\_GW\_SESSION\_STATE\_CHANGED

**Event:** `conference.videoSIPGWSessionStateChanged`

Fires when video SIP GW session state has changed.

<ResponseField name="address" type="string">
  The SIP address
</ResponseField>

<ResponseField name="oldState" type="VideoSIPGWConstants">
  The previous state
</ResponseField>

<ResponseField name="newState" type="VideoSIPGWConstants">
  The new state
</ResponseField>

<ResponseField name="displayName" type="string">
  The display name
</ResponseField>

***

## Visitors

### VISITORS\_SUPPORTED\_CHANGED

**Event:** `conference.visitorsSupported`

Fires when the conference has support for visitors.

### VISITORS\_MESSAGE

**Event:** `conference.visitors_message`

Fires when a message is received from the visitors component.

### VISITORS\_REJECTION

**Event:** `conference.visitors_rejection`

Fires when a request for promotion from visitor was rejected.

### CONFERENCE\_VISITOR\_CODECS\_CHANGED

**Event:** `conference.visitor_codecs_changed`

Fires when the aggregate set of codecs supported by visitors has changed.

***

## Other Events

### AUTH\_STATUS\_CHANGED

**Event:** `conference.auth_status_changed`

Fires when authentication status has changed.

### BOT\_TYPE\_CHANGED

**Event:** `conference.bot_type_changed`

Fires when the bot participant type has changed.

### DTMF\_SUPPORT\_CHANGED

**Event:** `conference.dtmfSupportChanged`

Fires when DTMF support has changed.

### SILENT\_STATUS\_CHANGED

**Event:** `conference.silentStatusChanged`

Fires when a user has joined without audio.

### SUSPEND\_DETECTED

**Event:** `conference.suspendDetected`

Fires when a system suspend has been detected.
