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.
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.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.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.Receive interactions
Each interaction arrives at your Fetch the full history any time with your API key:The response is
callback_url as a canvas.interaction event, fired once when first recorded; duplicate submissions and client retries never re-fire it:canvas.interaction
{ "data": [ ... ] }, oldest first, with the same fields as the webhook’s properties.Components
Attaching the skill enables the components below with default settings.scheduling_embed needs a booking link (provider plus scheduling_url) configured before it activates.
| Component | What the PAL can do with it |
|---|---|
question | Ask a multiple-choice question, optionally with a free-text “Other” |
input | Ask for a single typed value (text, email, number, or phone) |
calendar | Let the user pick a date, a time slot, or a date range |
scheduling_embed | Embed your real scheduling page (e.g. Calendly) for live booking |
text | Show a card of formatted text |
chart | Show a bar, line, or pie chart |
alert | Show a dismissible notice |
scheduling_embed activates only once you configure a booking link (a public HTTPS URL); unconfigured, it stays inactive and produces no error: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.
