Running a live queue on stream is one of those things that sounds easy and ends up being a circus. Viewers want to play with you, ask you a question, fight you in Smash, sing the next karaoke track, or pitch their app on your podcast — and you, the streamer, are trying to read chat, keep a game alive, hit a marker, and remember whose turn it actually is. We built the new public TV display features at waitlistapp.org partly with this audience in mind: streamers, esports hosts, podcast producers, music streamers, and anyone who runs a community-interactive show and needs a queue that lives on stream rather than buried in chat.

This guide walks you end-to-end through wiring waitlistapp.org into OBS as a streamer overlay, locking it down so trolls can't trash your queue, and getting your Discord pinging automatically when it's someone's turn. If you've ever spent thirty seconds of stream time scrolling chat for the next person's name, this article is for you.

The short version

  • Subscribe to Pro, opt in to the public display at /pro/display, and you get a private URL like waitlistapp.org/display/QhDQh3Egtj7U.
  • Append ?overlay=1, drop that URL into OBS as a Browser Source, and you have a transparent floating queue over your scene.
  • Pick an identifier mode (handle, ticket, first-initial + last name) so viewer real names never end up on stream.
  • Turn on the QR code so viewers can scan and join with their phone, and turn on email verification so bots and trolls can't spam the queue.
  • Wire up the Discord webhook so “you're up next” pings hit your community channel automatically.

Now the long version.

Step 1: Sign up Pro and opt in to the public display

The public TV display, OBS overlay, QR join, email verification, and Discord webhook are all part of the Pro tier. After you sign up and log in, head to /pro/display. This is the control panel for everything that happens on the public-facing board.

The first decision is the most important: opt in. The public display is off by default for every Pro account, because the whole point of a waitlist is privacy. When you opt in, we mint a random unguessable URL that looks like https://waitlistapp.org/display/QhDQh3Egtj7U. The trailing token is the only thing standing between the public internet and your queue, so treat it like a password — don't paste it in chat, don't put it in your stream title, and if you ever feel like it leaked, rotate it from the same settings page.

That URL is the thing you'll feed to OBS, but it's also viewable in any browser. If you want to show it on a second monitor during your stream, that works too.

Step 2: Pick a theme that fits your brand

Under “Color theme” on the same page you'll find five built-in themes:

  • Midnight — deep neutral dark, the safe default.
  • Sapphire — blue / cyan; reads great on a desk-setup IRL stream.
  • Crimson — red accents; pairs well with fight-night and FGC streams.
  • Emerald — green; suits cozy gaming and Twitch-green branding.
  • Sunset — orange/purple gradient; loud, retro, music-stream energy.

You can swap themes mid-stream without restarting OBS — the overlay re-skins itself live. We recommend picking the one that contrasts your scene rather than matches it. If your webcam border is sapphire blue, an emerald or sunset overlay will pop instead of camouflage.

Step 3: Lock down identifier mode so real names don't leak

This is the setting streamers forget the most, and the one that bites the hardest. By default, the public display shows whatever name the customer typed into the join form. For a coffee shop that's fine. For a Twitch stream where you're about to broadcast that name to 4,000 concurrents, it is not.

Open the “Privacy mode” / “Identifier mode” selector and pick the one that fits your show:

  • Full name — don't use this on stream. Period.
  • First name + last initial — “Jordan B.”. Good for casual community streams where folks know each other.
  • First initial + last name — “J. Bautista”. Slightly more formal.
  • DMV-style ticket — “AB001”, “AB002”. Anonymous, comedic, and works great as a bit.
  • Handle / gamertag — pulls from the custom field you configure (more on this below). The right answer for almost every gaming stream.
  • Position only — “#1 in line”. Maximum anonymity.
  • Custom template — build your own pattern.

Our take: if you're streaming gaming, music, or anything where viewers already have a public handle, use handle. If you're streaming a Q&A podcast and want a little chaos, use ticket — calling out “next up, AB014” gets surprisingly good chat reactions.

There's a separate staff URL that bypasses these privacy modes, intended for back-of-house monitors. You can keep that one open on a side screen if you, the streamer, need to see real identities to match them up with Discord users. Don't drop the staff URL into OBS.

Step 4: Drop the overlay into OBS

Here's the headline trick. Take your public display URL and append ?overlay=1:

https://waitlistapp.org/display/QhDQh3Egtj7U?overlay=1

In overlay mode the background turns transparent and the queue renders as dark glass cards. That means it composites cleanly over your game capture, webcam, or scene background without an opaque box ruining your composition.

In OBS:

  1. Pick the scene you want the queue to appear on.
  2. Click the + under Sources and add a Browser source. Name it “waitlist overlay”.
  3. Paste the URL (with ?overlay=1) into the URL field.
  4. Set width to 520 and height to 900 as a starting point. That gives you a tall sidebar of around 6–8 entries. Resize freely — the layout is responsive.
  5. Leave the “Custom CSS” field empty; we already ship dark-glass styling.
  6. Check “Shutdown source when not visible” and “Refresh browser when scene becomes active” for a clean reset between scenes.
  7. Click OK, then position and resize the source on your canvas. We like top-right or bottom-left corners.

That's it. The overlay updates in real time — when someone joins, when you advance “Now Serving”, when an entry is removed — without you touching OBS.

Layout skins for different show formats

Back on /pro/display, the “Layout skin” selector changes the visual rhythm of the board:

  • Default — the everyday card stack.
  • Minimal — stripped-down, low visual weight, great for podcasts where the queue should be subtle.
  • DMV — monospaced, ticket-counter vibe. Hilarious paired with the ticket identifier mode.
  • Esports — gradient hero block, designed for fight-night and 1v1 streams.
  • Karaoke — renames the hero to “Now Singing” and surfaces song + artist fields. Pick this for music streams.

You can also override the hero label directly. If “Now Serving” doesn't fit, set it to “Now playing”, “Up to bat”, “Now cooking”, “Next round” — whatever your show calls it.

Step 5: Turn on the QR code so viewers can join with their phone

Toggle on the QR-code “scan to join” option and a QR code renders in the corner of both the public display and the OBS overlay. Viewers point their phone camera, tap the link, and land on your join form. No login, no account, no friction. This is by far the most-used join path on streams, because most viewers are already holding their phone.

Pair this with a quick callout on stream: “scan the QR in the bottom-right to get in the queue.” That single sentence converts more viewers into queue entries than any pinned chat message.

Step 6: Build the right join form for your show

Head to /pro/display/join-form. This is where you decide what viewers have to type to get in line. Every field is independently togglable and configurable:

  • Title and subtitle — the headline at the top of the form. Something like “Join the fight night queue” works better than “Join waitlist”.
  • Submit button text — “Get in line”, “Lock me in”, “Sign me up”.
  • Name — required, always.
  • Party size — useful for co-op streams where viewers want to bring a teammate.
  • Handle / gamertag — turn this ON for any gaming stream. This is the field your “handle” identifier mode pulls from.
  • Phone — rarely needed for streams; leave off unless you're doing SMS notifications.
  • Email — turn this on. You need it for the next section.
  • One custom field — you define the label. Examples: “Song you want to sing”, “Question for the host”, “Your main in Smash”, “Twitch username”.

Keep the form short. Every extra required field cuts your conversion in half. For a fight-night stream, all you need is handle + main. For karaoke, handle + song title. For a podcast Q&A, handle + question.

Step 7: Turn on email verification — this is the big one

We shipped email verification as a Pro toggle and it is, in our opinion, the single most important feature for streamers in this whole release.

When email verification is off, anyone who scans your QR can dump anything into your queue. A name like “;;DROP TABLE chat”, a slur, a competitor's URL, the contents of the Bee Movie script. We've seen all of it. Stream trolls are creative and they have nothing to do at 2am.

When email verification is on, the flow changes:

  1. Viewer scans QR, fills out the join form.
  2. Instead of going straight on the board, they see a “check your email” page.
  3. We send them a verification link.
  4. They tap the link in their inbox — only then do they land on your public queue.

This is mundane email-verification UX but it changes the threat model completely. Drive-by trolls in a Twitch raid don't bother. Bots don't bother. The people who follow through are people who actually want to play with you, ask you a question, or sing on your stream. The garbage falls off.

We strongly recommend leaving this on for any public-facing stream. The cost is one extra step for viewers (which most expect anyway). The benefit is a clean queue that you can read out loud on air without panicking.

Step 8: Wire up Discord for community pings

Most streamers we've talked to run a community Discord alongside the stream. Wire it up:

  1. In your Discord server, open the channel you want pings in — we'd suggest a dedicated #queue channel.
  2. Edit channel → Integrations → Webhooks → New Webhook. Name it “waitlist”, copy the webhook URL.
  3. Paste that URL into the Discord webhook field on /pro/display.

Now every time you advance “Now Serving”, a message fires into that Discord channel: “You're up next!” with the current and on-deck entries. Viewers who stepped away from the stream get notified in Discord and can hop back without missing their turn. It is a small thing that meaningfully increases the number of viewers who actually get to play.

Step 9: Audio chime

The public display includes a built-in audio chime — a synthesised two-tone bell — that fires whenever “Now Serving” advances. Pick “soft” if you want it as a background cue under your voice, or “loud” if you want it to punctuate.

One browser quirk: modern browsers refuse to play audio until the page has been clicked once. When you first load the display, tap anywhere on it to unlock audio. After that it'll chime for the rest of the session. If you keep the OBS Browser Source pinned to a scene, OBS does this automatically and you'll never notice.

Step 10: The live show flow

Pulling it all together, here's what a live stream looks like with the full bundle on:

  1. Stream goes live. Your overlay is already in the scene. The QR is showing.
  2. You shout out “scan the QR to get in the queue.”
  3. A viewer scans, fills out the form, sees the “check your email” page, taps the link in their inbox.
  4. Their handle appears on the overlay. Chat sees them locked in.
  5. You finish the current match / song / question, click “Advance” on your operator dashboard.
  6. The overlay re-renders with the new “Now Serving”. The audio chime fires. Your Discord channel gets a ping.
  7. The next viewer hops in, you greet them by their handle, the show keeps moving.

None of this requires you to read chat for names, copy-paste anyone's username, or remember who's on deck. The queue is on screen, your viewers can see exactly where they are in line, and the show flows.

Two extras worth knowing about

Embed widget. If you have your own website, Linktree, or stream landing page, there's a JS snippet that drops a mini version of the board straight into your site. Same identifier modes, same theme, less real estate. Good for off-stream “here's the current queue” pages.

MCP for Premium subscribers. If you're on Premium and use Claude, you can configure every single thing in this article by talking to it: “Claude, set my display theme to sapphire, enable email verification, switch identifier mode to handle, and turn on the QR.” The MCP integration handles the rest. Useful if you're tuning your overlay between scenes and don't want to click through settings panels.

Why we think this matters

Most “waitlist tools” were built for restaurants and clinics. They assume the operator is in a quiet back office, the customers are physically in front of them, and the queue is private. None of that is true for a live stream. Streamers needed a queue that lives on-air, defends itself against trolls, shows up in OBS without a green-screen hack, and pings the community automatically when it's someone's turn.

That's what this bundle is. Pop the URL into OBS, lock down identifier mode, flip email verification on, hook up Discord, and you have a stream queue that actually works at scale. We'd love to see what you build with it — tag us when you go live.