1
Attach the Magic Canvas skill
Attaching the skill enables the available components with default settings:Later components are enabled automatically on PALs with the skill attached; disable them the same way. See Configuring your PAL for all component settings and when cards appear to steer timing.
config.components is a sparse overlay, not an allowlist; add an entry only to configure or disable a component:Disable charts
The skill has no effect on
echo and speech-to-speech PALs.2
Create the conversation
Every video conversation with this PAL gets Canvas. Set Audio-only, text-chat, and Zoom/Teams/Meet (
callback_url; interactions arrive there in step 4:meeting_url) conversations never receive Canvas actions.3
Render the canvas
With the Tavus-hosted embed or widget, Canvas renders automatically:For React, add the Mount it inside the same
@tavus/cvi-ui component:CVIProvider as your conversation UI:The default class sets
position: fixed (full-viewport overlay). To keep cards inside your player, wrap both in a position: relative container and pass a className that sets position: absolute !important.4
Receive interactions
Each interaction arrives at your A retry of the same saved interaction does not send another webhook. The same webhook can still arrive twice. Treat two events as the same interaction when The response is
callback_url as a canvas.interaction event:canvas.interaction
conversation_id and interaction_id match, and do not apply the second one again. Under Zero Data Retention there is no saved interaction, so a client retry is delivered again. See delivery guarantees.Fetch the full history any time with your API key:{ "data": [ ... ] }, oldest first, with the same fields as the webhook’s properties. It’s empty for conversations on Zero Data Retention, which record no interactions.scheduling_embed needs a booking link (provider plus scheduling_url) configured before it activates:
Cards render in a sandboxed iframe on Tavus infrastructure that isolates styles and scripts in both directions. Your webhook receives
skip and dismiss interactions in addition to submit.
