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

# embed block

> A sandboxed iframe — embed a third-party widget (Calendly, Typeform, status page, …) next to the chat.

# `embed` block

Renders a sandboxed iframe. Use it for third-party widgets where the canonical UI lives on a vendor's domain — calendar booking, form intake, status pages, payment widgets.

## When to use it

* Calendar booking: Calendly / Cal.com / SavvyCal.
* External form: Typeform / Tally.
* Vendor status: Statuspage / Better Uptime / Cronitor.
* Documentation: an embedded Mintlify / Notion page.

For a static link, use [links](/sections/page-layout/links). For a form you control, use [input\_capture](/sections/page-layout/input-capture) — that one integrates with the chat-seeding flow; `embed` does not.

## Shape

```json theme={null}
{
  "id": "calendar-1",
  "type": "embed",
  "position": "sidebar",
  "url": "https://calendly.com/example/intro-call",
  "height_px": 600
}
```

| Field       | Required | Type              | Notes                                                           |
| ----------- | -------- | ----------------- | --------------------------------------------------------------- |
| `id`        | yes      | string            | Stable slug.                                                    |
| `type`      | yes      | `"embed"`         | Fixed.                                                          |
| `position`  | no       | enum              | Default `above_chat`. `sidebar` is common for calendar widgets. |
| `url`       | **yes**  | string            | The iframe `src`. Must be a full URL with scheme.               |
| `height_px` | no       | integer (80–2000) | Default 420. The width is 100% of its container.                |

## Iframe sandbox

The iframe is rendered with `sandbox="allow-scripts allow-same-origin allow-forms allow-popups"`. This means:

* ✅ JavaScript runs (forms, widgets, single-page apps).
* ✅ Cross-origin requests to the iframe's own domain are allowed.
* ✅ Forms can submit.
* ✅ The embedded page can open popups (e.g. Stripe Checkout).
* ❌ No `allow-top-navigation` — the embedded page can't redirect your agent page.
* ❌ No microphone / camera access.

If your vendor needs additional sandbox permissions (rare), open an issue — we widen the allowlist conservatively.

## Tips

* Test in a private window first. Some vendors break in third-party-cookie-blocked contexts.
* The vendor's branding is **visible** to your visitors. If that's a problem, use [input\_capture](/sections/page-layout/input-capture) + a custom flow instead.
* Tall embeds (calendars, document viewers) work better at `position: sidebar` so the chat panel remains accessible above the fold.
* `url` is required and must be a non-empty full URL; saves with a missing or empty URL are rejected.
