Screen apps render in the Waterr meeting page and in the inline meeting
embed. They are not available in the sidebar assistant widget, or on Google
Meet, Zoom, Teams or phone calls, where the agent has no browser to render
into.
How it works
- You register the app on a scenario (Settings › Screen Apps, or the
screen_appsfield on the scenario API) with a name, anhttps://URL, a description, and a default placement. - During the call the agent decides, from your description, to call
present_screen. Each participant’s browser loads your URL in a sandboxed iframe. - The agent can send the page messages with
update_screenand remove it withclose_screen. - Your page reports what the participant did with
WaterrScreen.send(...). The agent learns it silently, or responds out loud if you ask and the app allows it.
Registering an app
Up to 10 apps per scenario. The list replaces what was there.
Placement
The page controls everything inside its rectangle and nothing outside it. Free positioning would let a page cover the mute and leave buttons on a recorded call, so placement is one of four slots Waterr owns:
On phones anything but a card takes over the screen.
The page SDK
Include the SDK on your page. It exposes one global,WaterrScreen, and
never throws into your code.
Your page also receives
waterr_meeting, waterr_participant and
waterr_placement as query parameters on first load, so a server-rendered
page can personalise before the SDK handshake.
What the agent sees
When it opens an app, the agent’s prompt gains a note that the app is on screen, with your description. Each event arrives as:Limits
Not supported yet:
- Pushing to the screen from your server. Only the agent and the participant can change the screen mid-call; your backend cannot reach in.
- Verifying the meeting.
waterr_meetingandwaterr_participantare plain query parameters, not signed. Treat them as hints and do not grant access based on them alone. - The agent seeing the page. It knows only your
descriptionand what your page reports through events andsetContext().
Security
- Your page runs cross-origin in a sandboxed iframe (
allow-scripts allow-same-origin allow-forms allow-popups). It cannot read or touch the meeting page. - Waterr only honours messages that come from its own iframe and from your registered URL’s origin. Nothing else on the page can drive the agent.
- No participant credentials or tokens are passed to your page. Use the
meeting_idwith your own API key server-side if you need meeting data. - Each participant gets their own instance of your page. Agent messages fan out to all of them; events carry the participant id.

