Live sessions & webinars
A live session is a real streamed broadcast on your own streaming provider (Mux, Cloudflare Stream, Restream, YouTube Live, a self-hosted server, or anything else you already use) — not just a Zoom or Meet link dropped into an email. MailInApp doesn't host the video itself; what it provides is the wrapper around it: a real join page, registration and waitlisting, live chat, and moderated Q&A. This is a different feature from the studio's Meeting link block, which is a bare Join button pointing at a video-call provider with none of that wrapper.
Every live session starts the same way, from Live (/dashboard/live) in the dashboard. What differs is who's allowed to watch it:
- Subscribers-only (the default) — gated to your paying Learning Membership subscribers, e.g. a monthly critique call or office hours tied to a course.
- Public registration — a stand-alone webinar: anyone can sign up with just a name and email, no subscription required.
Subscribers-only live sessions
Create a session, optionally tie it to a course, and set a scheduled time. Before going live, open the session's detail page and fill in the Streaming setup panel:
- Ingest URL (optional) — where you push video from: OBS, whatever streaming software you use, or the mailinapp_mobile app's camera broadcaster (see Broadcasting from your phone below). This is purely a reminder shown back to you on the session detail page — MailInApp never uses it itself.
- Stream URL (required) — what viewers watch: an HLS (
.m3u8) playback link, or any other embeddable player URL (a YouTube/Twitch/Vimeo Live embed, etc.). This is what gates Start streaming — you can't go live without one.
A session now only ends when you click Stop, or if your plan's monthly live-broadcast-minutes cap is hit.
Subscribers watch at /learn/<slug>/live/<liveSessionId>, gated by the same live entitlement check lesson playback uses — there's no "free preview" for a live session; every viewer needs a currently-active subscription.
Chat & Q&A during the session
Two panels run alongside the stream, both for subscribers and for you as the host:
- Live chat — a shared thread anyone entitled can post into. You can hide an individual message (never a hard delete) if it needs moderating.
- Q&A — a separate queue of subscriber-submitted questions you can triage and mark answered, kept apart from chat so it doesn't get lost in a fast-moving conversation.
Both refresh every few seconds and re-check entitlement on every single post, not just at page load, so access lost mid-session (a cancellation, say) takes effect immediately.
Announcing a session
There's no automatic reminder — from the session's detail page, hit Notify subscribers to send a one-off announcement to everyone currently entitled. For your own campaign instead, a Countdown block pointed at the session's start time works the same way it would for any other deadline.
Public webinars (no subscription required)
Flip a session's access mode to Public registration and set an optional capacity to run it as a free-standing webinar instead. It's useful for a lead-gen or one-off session that shouldn't require anyone to already be a paying member.
- Share the registration link —
/webinar/<liveSessionId>is a public landing page with a name/email form. Anyone can register; if you've set a capacity, registrations past it are recorded as waitlisted rather than confirmed, the same confirmed/waitlisted split the RSVP block uses for a free in-person event. By default that page is a plain title/date/form card — attach one of your studio projects as its Landing page design, from a picker on the session's own detail page, and that project's own images, details and links render above the registration form instead, through the exact same rendering pipeline a mailed email uses. Leave it unset and the page stays the plain default. - Confirmed registrants get a join link by email — a signed, one-tap link into
/webinar/<liveSessionId>/join, no account or sign-in needed. It plays the exact same live viewer (and chat/Q&A) a subscriber gets, just reached through a registration token instead of an active subscription. - Manage registrants from the dashboard — the session's detail page shows confirmed/waitlisted counts and a sample list, plus a copyable registration link.
- Send a reminder — a Send reminder button on the registrants panel emails every confirmed registrant their own join link again, once a scheduled time is set — a separate action from Notify subscribers, since a registration-mode session's registrants and any paying subscribers are different audiences that can, in principle, both exist on the same session.
- Promote it from the studio — drop a Webinar signup block into any campaign and pick this session from its inspector panel; it snapshots the title and date, and its Register button always points at the session's current
/webinar/<liveSessionId>link — no more copying the link into a plain Button block by hand. The sign-up form itself still lives on the/webinar/<liveSessionId>page it links to, not inside the email, so the click shows up in this project's click heatmap; the actual registration counts (confirmed/waitlisted) live on the session's own detail page from step 3, not on this project's Responses dashboard.
A webinar registrant is deliberately not a Subscriber — they haven't paid anything and have no ongoing relationship with your account, so they're tracked in their own collection and never mixed into your Learning Membership subscriber counts or billing.
Broadcasting from your phone, watching from the dashboard
Starting a session doesn't require separate streaming software like OBS. Open the session on Live in the mailinapp_mobile app and tap Go live from this phone — it turns your phone's own camera and mic into the broadcast source. You'll still need a streaming-provider account to push to, same as OBS would: set that provider's ingest URL in the Streaming setup panel first (web dashboard or the mobile detail screen) — the phone skips needing OBS or a laptop, not the need for a provider. A connection status (Connecting / Live / Reconnecting / Error) polls every few seconds so you always know if the stream actually made it through, and End stream tears the session down the same way stopping it from the dashboard does.
Broadcasting from the app is foreground-only in this release — backgrounding the app (switching away, locking the phone) shows a warning rather than silently continuing to capture, so plan to keep the app open and the phone pointed at whatever you're streaming for the whole session.
If a session already has something else feeding it — OBS from the dashboard, say — going live from the app shows a warning first, requiring an explicit Take over from this phone rather than silently pushing a second broadcast source into the same stream.
The dashboard's own session detail page (/dashboard/live) now shows a live video preview whenever a session is actually streaming, whichever source is sending it, so you can monitor exactly what your subscribers or webinar registrants are seeing without opening the public join page yourself. That preview uses the same player viewers get — it auto-detects an HLS stream URL vs. an embeddable player URL and renders accordingly.
How this differs from an email invite
If all you need is to announce a Zoom/Meet/Teams call with a Join button and an RSVP, the Meeting link and RSVP blocks covered in Events & webinars are the simpler fit — just a bare, calendar-style invite link. Reach for a live session instead when you want a real join page, registration/waitlisting, live chat, and moderated Q&A built around your own stream.