About
The Post Message Bridge plugin lets you forward Kaltura HTML5 player events from the player iframe to the embedding page via window.postMessage so host applications can enrich and route them to analytics or backends.
You can enable this plugin through the player’s Advanced settings. This configuration is not exposed in the standard Player Studio interface.
Access the Advanced settings
VOD Audio Reels
- Log in to your KMC and click the Studio tab.
-
The Player Studio page displays.
- Click the player you want to edit from the list (or use the search bar in the top right).
-
The player settings display.
- Scroll to the bottom of the player settings and click Advanced settings.

If you haven't created a player yet, check out our article Create a player for guidance.



The Advanced settings editor displays.

Configure Post Message Bridge
You may configure the Post Message Bridge plugin in the player configuration (uiconf) by adding/enabling the plugin block and its options.
Enable the plugin
- In the Advanced Settings tab, hover over "plugins" then click the green + icon.

- In the Key Name box, enter
postMessageBridgethen click the green checkmark or press 'Enter' on your keyboard.
You’ll see the new plugin listed and enabled.

- Click Save at the top right before exiting.
Configure which events to send
To send all events:
- Hover over "postMessageBridge" then click the green + icon.

- In the Key Name box, enter
sendAllEvents, then click the green checkmark or press 'Enter' on your keyboard.
You’ll see the new setting listed and labeled as "null".

- Hover over "sendAllEvents" and click the green edit icon.
A box containing a "null" value displays.

- Replace "null" with "true" then click the small green checkmark.
The item is now labeled as "true".
WhensendAllEventsis true, the plugin listens to all supported PlayKit HTML5 events (including custom and ad events) and forwards them to the host page viawindow.postMessage. - Click Save at the top right before exiting.
To select which events are forwarded (optional):
- If "sendAllEvents" has been added, set it to "false".
- Hover over "sendAllEvents" and click the green edit icon.
A box containing a "true" value displays.

- Replace "true" with "false" then click the small green checkmark.
The item is now labeled as "false".
- Click Save at the top right before exiting.
- Hover over "sendAllEvents" and click the green edit icon.
- Add "eventsToSend" and select events.
- Hover over "postMessageBridge" then click the green + icon.

- In the Key Name box, enter
eventsToSend, then click the green checkmark or press 'Enter' on your keyboard.
You’ll see the new setting listed and labeled as "null".
- Hover over "eventsToSend" and click the green edit icon.
A box containing a "null" value displays.

- Enter groups, event names, or a mix, as a comma-separated string then click the green checkmark or press 'Enter' on your keyboard. In the following example, we are adding one event group - playbackMilestones.
The Events are listed. 
- Click Save at the top right before exiting.
- Hover over "postMessageBridge" then click the green + icon.
Supported event groups:
-
core– Core playback events such asmedia_loaded,play,pause,resume,seek,ended -
playbackMilestones– Milestone events such asplay_reached_25,play_reached_50,play_reached_75,play_reached_90,play_reached_100 -
errorEvents– Error events such aserror -
adEvents– Ad plugin events mapped toad_start,ad_complete,ad_click(and any other ad events supported by the player)
You can also list explicit event names, for example:
"plugins": {
"hostPageEventBridge": {
"sendAllEvents": false,
"eventsToSend": "play,pause,timeupdate"
}
}
Add optional context fields (optional)
"plugins": {"hostPageEventBridge": {"sendAllEvents": false,"eventsToSend": "play,pause,timeupdate"}}
You can include additional identifiers in every message using the optional contextId and channel fields. These values are passed through as‑is in the event payload and can be used by the host page to route or filter events.
"plugins": {"hostPageEventBridge": {"sendAllEvents": true,"contextId": "my-company-site-or-page-context","channel": "company"}}
-
contextId– optional string that identifies the context of the player (for example, a site, page, or template identifier). -
channel– optional string that identifies the “channel” or namespace for this bridge (for example,"company"if you use it in multiple integrations).
Event payload
Example payload:
{"source": "kaltura-player","version": "1.0","event": "play","timestamp": "2026-02-26T12:34:56.789Z","entryId": "1_abcd1234","playerId": "1234567","partnerId": 123456,"sessionId": "sess_01","isLive": false,"positionSeconds": 12.34,"durationSeconds": 300,"playbackRate": 1.0,"contextId": "prod:/content/site/page-x","channel": "aem"}
Notes:
-
sourceandversionare always sent -
Other fields are sent only when available (if a value is missing, that field is omitted)
-
eventmatches the logical event name selected bysendAllEvents/eventsToSend
You’ll see the new plugin listed and enabled.




The item is now labeled as "true".







A box containing a "null" value displays.

The Events are listed. 