Skip to content

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:

SurfaceURLWhat it shows
Event details card/t/{slug}/events/{event-slug}/embed/detailsDate, time, and location — the "Dates & venues" card for multi-date events
Tickets card/t/{slug}/events/{event-slug}/embed/ticketsTicket types with prices and the Buy tickets button; cancellation notice for cancelled events
Events listing/t/{slug}/eventsYour 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.

Platypus.Tickets reference documentation.