This feature is currently in beta. Documentation for Version 1 templates is here
Quick Start — Get a branded waiting room running in minutes.
See also: Template Markup & Structure | Vue State & Methods | Styling & CSS Variables
Three Steps to a Branded Waiting Room
Customising the waiting room template is straightforward. Open the HTML file in a text editor, change a few CSS variables to match your brand, and you're done. Just edit and refresh.
1. Open the template
Open index.html in both a text editor and a browser. Near the top of the file you'll find a <style> block with CSS custom properties — these control the entire look of the waiting room:
<style>
:root {
--ch-brand-primary: #424242; /* Title, accent, stock pill */
--ch-brand-secondary: #4b4b4b; /* Buttons, focus rings */
--ch-bg: #FFFFFF; /* Page background */
--ch-surface: #F0F4F8; /* Card / panel backgrounds */
--ch-progress-color: #004f84; /* Progress bar colour */
}
</style>Change the hex values to your brand colours, save, and refresh the browser. That's it — the theme engine derives all other colours (text contrast, hover states, borders, shadows) automatically.
2. Set your fonts (optional)
To use a custom font, add an @import at the top of the same <style> block and override the font variable:
<style>
/* Import your fonts first */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
:root {
--ch-font-primary: 'Inter', -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
</style>Always include system fallbacks after your custom font so the page looks right while fonts load. If you skip the @import, the browser won't have the font files and will fall through to the first available fallback.
3. Preview your changes
The template includes a <script id="crowdhandler-data"> tag with a JSON configuration object. Ensure "dev": true to enable preview mode. This lets you test every queue state without connecting to the live API:
<script id="crowdhandler-data" type="application/ld+json">
{
"dev": true,
"status": 1,
"title": "My Event",
"position": 150,
"estimate": 12,
"onsale":"2026-03-13T16:00:00Z",
"simulatePolling": true
}
</script>Change status to see different states (1 = active queue, 3 = blocked, 4 = countdown, 5 = room full). Save and refresh to preview each one.
Going Deeper
The steps above are all you need for a branded waiting room. If you want full control over the layout, behaviour, and features, the detailed guides cover everything:
- Template Markup, Structure & Testing — HTML structure, Vue directives, queue state hierarchy, and how to add or remove features like email notifications, priority codes, and stock indicators.
- Vue State & Methods — The complete
chobject reference: every property, its type, and what it controls. - Styling & CSS Variables — The full list of CSS custom properties and how to override style properties.