Appearance
Are you an LLM? You can read better optimized documentation at /api/embeds.md for this page in Markdown format
Embedding on your site
Platypus pages are built to live inside your own website. Three surfaces embed with a plain <iframe> — no JavaScript snippet, no API key:
| Surface | URL | What it shows |
|---|---|---|
| Event details card | /t/{slug}/events/{event-slug}/embed/details | Date, time, and location — the "Dates & venues" card for multi-date events |
| Tickets card | /t/{slug}/events/{event-slug}/embed/tickets | Ticket types with prices and the Buy tickets button; cancellation notice for cancelled events |
| Events listing | /t/{slug}/events | Your full public events page (grid/list) |
The embed pages are chrome-free — no Platypus header, navigation, or footer — and rendered with your site's Platypus stylesheet.
Site Domain — the one prerequisite
Platypus refuses to be framed by arbitrary websites. Every public page sends a Content-Security-Policy: frame-ancestors header allowing exactly two origins: Platypus itself, and your configured Site Domain — set by the venue admin under Settings → General → Site Domain (a bare hostname such as www.exampletheatre.com.au; it is allowed as https://).
If the iframe renders blank and the browser console shows a frame-ancestors violation, the Site Domain is unset or doesn't match the page's actual domain. Fix the setting; no code change needed.
Admin and login pages can never be framed, by anyone.
Example
html
<iframe
src="https://platypus.tickets/t/nbt/events/an-evening-of-one-act-plays-2030-03-14/embed/tickets"
title="Tickets — An Evening of One-Act Plays"
style="width: 100%; max-width: 480px; border: 0"
height="520"
></iframe>The event slug is the slug attribute from the API, also visible in the event page URL. Pick a height that fits the content; the cards don't auto-resize the frame.
Buying tickets inside the frame
The tickets card's Buy tickets button navigates the iframe itself to the checkout, which is designed to complete in-frame — card entry included. Buyers never need to leave your page. (Checkout requires the venue's Stripe keys to be configured; until then the buy button isn't shown.)
Theming
There are no per-embed style parameters. Embeds follow the venue's global appearance settings — public site theme and custom CSS — configured in the Platypus admin, so they match the venue's Platypus pages everywhere they're shown.
Prefer data over iframes?
If you want full control of the markup, fetch the same event data as JSON from the public API and render it yourself. The CORS allowance uses the same Site Domain setting.