Docs
Live Video Setup
Connect your real-time video provider so your community can host live events, record them when you choose, and post recaps of sessions started from the feed.
Last updated
The live streaming module lets a host go live to the community with video, audio, screenshare, and a live chat drawer. A session started with Go Live from the feed also gets a recap post in the feed afterward. Recordings stay in your Daily.co account and play from there inside your community. The real-time video and its recordings run on a third-party provider you connect with your own account. This page wires it up. Live video is optional. Leave it unconnected and the rest of the platform runs normally, with the live module simply inactive.
What You Are Connecting#
Live video has one external piece, owned by you.
- A real-time video provider. Seedly Communities uses Daily.co for the actual video rooms, streaming to attendees, and cloud recording. You create a Daily.co account and connect it with your own API key.
- Where recordings live. Since v2.2.0, recordings stay in your Daily.co account and play in your community from there, so there is no second storage account to connect for them. Recordings copied to Vercel Blob by an earlier version keep playing from Blob.
You contract with the provider directly, and you pay it directly. Seedly takes no cut and sits nowhere in this path.
An Honest Word on Cost#
Live video is the one part of the platform that is not effectively free to run. Text, feed, chat, courses, and events all sit comfortably inside free infrastructure tiers, but real-time video is expensive to deliver and the provider charges for it by usage. Expect a bill from Daily.co that scales with how much you stream, roughly with participant minutes. Recording uses Daily.co cloud recording on your Daily.co plan, and since v2.2.0 webinars record while live too. This is a genuine per-use cost on a service you contract, not a Seedly fee. If you host frequent or large live events, budget for it. If you rarely go live, it stays small.
Step 1 - Create a Daily.co Account#
Sign up at daily.co. During setup it asks you to choose a subdomain, which is just the URL prefix for your rooms. Pick anything. Then read your API key from the Daily.co dashboard.
Step 2 - Connect the Provider#
Live video runs on the backend, so the Daily.co key goes on your Convex deployments with the environment command. You can use the same key on development and production, or create a second Daily.co setup for development.
npx convex env set DAILY_API_KEY your_daily_api_key
npx convex env set --prod DAILY_API_KEY your_daily_api_keyThe setting names are on the Environment and Configuration page. Once the key is set, hosts can go live. The host chooses whether a live event records with the Record this meeting switch before going live (the choice is remembered for next time), and can also start recording from inside the meeting. Webinars record on their own.
Step 3 - Connect the Recording Webhook#
When a recorded session ends, the provider tells your backend that the recording is ready, so it attaches as soon as it can. For a session started from the feed, that is also when its recap post publishes. The platform also checks for the recording on its own for several hours after the session, so the webhook is what makes it fast.
- Generate a signing secret and set it on your backends, matching a value per environment.
npx convex env set DAILY_WEBHOOK_SECRET your_generated_secret
npx convex env set --prod DAILY_WEBHOOK_SECRET your_generated_secret- In the Daily.co dashboard, register a webhook that points at your backend's site URL with
/webhooks/dailyon the end. Use the production backend URL for the production webhook. - Give the webhook the same signing secret you set on that backend, so the platform can confirm each callback genuinely came from the provider.
- Subscribe it to the recording-ready event so finished recordings flow through.
If you want recordings to also process in development, repeat this against your development backend and its own secret.
Step 4 - Leave Recordings in Daily.co#
There is nothing to connect for recordings. Since v2.2.0 they stay in your Daily.co account and play in your community through your backend. Because they play from there, deleting a recording in your Daily.co dashboard removes it from your community, so do not delete recordings, including webinar recordings, that members should still be able to watch. To remove a recording completely, delete it in Daily.co.
Vercel Blob storage is only needed if hosts upload a slide deck to present in a live session. That setting is on the Environment and Configuration page.
What You Get Once It Is Connected#
- Go Live from any scheduled event or on demand.
- Video, audio, and screenshare with participant grid and speaker views, plus a live chat drawer beside the video and a mobile layout with a togglable chat overlay.
- A pre-join screen so hosts and attendees check camera and microphone first.
- Recording of any session the host chooses to record. Webinars record on their own.
- An automatic recap post for sessions started with Go Live from the feed, created when the recording is ready, with the recording playing in an in-app player so members who missed it can catch up. A feed session that was not recorded gets a text-only recap after two hours. Scheduled and recurring events do not post a recap to the feed; their recording shows on the event and its lessons.
- Webinar replays that play straight from your Daily.co recording, including long webinars, and pick up where each viewer left off.
- Audience-restricted sessions limited to enrolled students, challenge participants, or coaching clients when you want them private.
Troubleshooting#
| Problem | Likely cause |
|---|---|
| Hosts cannot go live | The provider API key is missing on that backend |
| A session has no recording | The host did not turn on Record this meeting, or the recording was deleted in your Daily.co account |
| A recap post never appears after an event | Only sessions started with Go Live from the feed post a recap. Scheduled and recurring events never do; their recording shows on the event and its lessons instead. For a feed session, the recap appears when the recording is ready, or as text only two hours after the session if it was not recorded |
| A recording is slow to attach | A long recording can take a few hours to process. Otherwise, check the recording webhook: if it is not registered, points at the wrong backend, or its secret does not match, the recording waits for the platform's own later checks |
| An event still shows as live after the host left without ending it | A session the host never ended is closed automatically once it has run two hours past its scheduled length. Since v2.2.1 it is closed the same way as when the host clicks End, so it appears in Admin Live Analytics with its attendance, chat, polls and Q&A |
| A recording no longer plays | It was deleted in your Daily.co account. Recordings play from there, so a delete in Daily.co removes it from your community |
| The video room will not load for viewers | A content-security setting. The platform already allows the provider, so if this persists, reach out to support |
Next Steps#
- Confirm the video setting names on the Environment and Configuration page.
- See how live events fit the calendar, courses, and challenges on the Features page.
- Finish the go-live checklist before you announce your first live event.
