Embed · reads embed
Embeds
External widgets/iframes.
Something from elsewhere, framed in place.
- Table bookingthefork.com
- Location mapGoogle Maps
- Newsletter signupMailchimp
- Gift card purchaseProvider portal
What it does
Behaviours, not fields. Choosing between two modules is choosing between these.
An escape hatch with a stated cost: an embed cannot be searched, styled or read by the agent.
Every embed carries a note saying what is lost, so the trade is deliberate.
Flags the ones that should be native modules, which is usually half of them.
How it works
- 1
A third-party widget is recorded with what it costs you to use it.
- 2
The note is required, because an embed cannot be searched, styled or read by the agent.
- 3
Embeds that should be native modules are flagged as such, which is usually half of them.
- 4
Height is recorded, since an iframe cannot size itself.
Best for
A tool the team already lives in.
Not the right choice for
Anything you could hold as data instead. Embeds cannot be searched.
What a row holds
Every field, and what the agent listens for to fill it — which is the difference between a page you type into and one that fills itself.
| Field | Type | Filled from |
|---|---|---|
| Embedrequired | text | What the widget is, named for what it does. |
| Sourcerequired | text | Which third party provides it. |
| Height | text | How much space it needs, since an iframe cannot size itself. |
| Noterequired | text | What is lost by embedding. Required — the trade should be deliberate. |
What it does not do
A module chosen for something it cannot do costs more than one that was never offered.
- CANNOT BE BUILT YET. Rendering arbitrary third-party frames is a security decision, not a renderer.
- The agent cannot read anything inside an embed, so it cannot answer questions about it.
- No control over the third party performance or availability.
- Styling and dark mode will not match.
Before it works
What you have to provide, if anything.
- Not currently possible. Link out to the third party instead.
- Before wanting one, check whether a form, a booking or a document module does the job natively.
In practice
A restaurant whose bookings ran through a third-party widget.
“We have to keep the booking widget, the provider requires it.”
What the agent built
An embed with its height and a note that the agent cannot read availability.
What changed
Two of the four embeds were replaceable and were replaced. The booking one stayed, with the limitation written down rather than discovered.
Better with
These do a different job on the same data. An agent can have all of them.
Customers reserve time, capacity is finite, and double-booking would be a real problem.
New enquiries need the same information every time and chasing it afterwards costs days.
Nothing else in the catalogue matches, and the mismatch is structural rather than cosmetic.
This module cannot be built yet
An iframe is a security posture rather than a renderer: it means deciding a sandbox policy, a frame-ancestors rule and what happens when the third party is slow or gone. The CSP here already draws that line deliberately for /embed. Extending it to arbitrary owner-supplied URLs is a decision about what a customer can put on a page we serve, and that has not been made.
Questions
What data does the Embeds page use?
It reads embed records the agent has collected. External widgets/iframes. Nothing has to be imported first — the page appears once there is something to show.
Do I have to build or configure it?
No. You describe what you need in a sentence and the agent chooses the view and fills it. Custom pages exist for the cases no built-in view covers, and those are reviewed before they go live.
When is a embed the wrong choice?
Anything you could hold as data instead. Embeds cannot be searched. It is best for: a tool the team already lives in.
Does it stay up to date?
Yes. The page is a view over the data rather than a copy of it, so anything the agent learns afterwards shows up without a rebuild or a re-import.
More in Dev & automation

Stripe
Payments and invoices
Connected

Resend
Outbound email
Connected

Google Places
Address lookup
Key expired

Slack
Internal alerts
Not configured
API connectors
Connected live APIs.
Webhooks
Outgoing event hooks.
Datasets
Elastic uploaded data.

Stripe
Payments
Take payment in chat, reconcile invoices

Google Calendar
Scheduling
Two-way sync of bookings

Shopify
Commerce
Read products and stock

Xero
Accounting
Push invoices
Integrations
Third-party links.
Ask for it in a sentence
You do not configure this page. You tell your agent what you need and it builds it from what it has already collected.
Build your agent free