One ES module. A handful of data-surgetix mount points. A real cart, a real queue, a real checkout — embedded in any festival page, CMS template or SPA, with your typography and your colors intact.
Most ticketing widgets behave like uninvited guests — they bring their own font, their own colors, their own opinions about what your page should look like. SurgeTix Connect is the opposite. It mounts inside Shadow DOM, listens to standard browser events, and inherits the few CSS variables you choose to share. Your site stays your site.
setLocale() for switchers.Every widget on the page talks to the same store, the same cart, the same identity, the same locale. A buyer can add tickets from three events, a festival pass and a gift card, then check out once — no matter how many separate elements you placed on the page.
The kernel exposes a tiny window.SurgeTix for SPA mounting, locale switching, programmatic checkout, and live store subscriptions. Everything else flows through standard CustomEvents on document.
Drop a buy-button next to every film card in your program. Drop one shared cart in your sidebar. Buyers add screenings across days and pay once. The same script runs the queue when an opening night sells fast.
Mount a pass-card for every pass type your festival sells. Buyers pick a tier, the widget renders any required parameter forms (venue, date, name on pass), drops it in the same shared cart, and rides the standard checkout. Gift cards work the same way.
Editorial websites earn trust through restraint. A ticketing layer should disappear into that restraint, then return at exactly the moment a buyer is ready to act.
Every widget is declarative — a single element with data-surgetix="…". Mix and match them per route. The kernel scans the DOM, mounts each into its own Shadow Root, and keeps them in sync.
Three lines of HTML. The first loads the kernel. The second tells it which tenant. The third tells it which event to sell.
<script
type="module"
src="https://cdn.surgetix.com/surgetix-connect/latest/surgetix.js"
data-tenant="summer-fest"
data-api-url="https://api.surgetix.com"
data-turnstile-key="YOUR_TURNSTILE_SITE_KEY"
></script>
<div data-surgetix="full" data-event="evt_opening_night"></div>
That's the whole page. Queue, ticket selection, cart, checkout — all of it lives inside that one <div>, isolated by Shadow DOM, themed via CSS variables you set on a parent.