Loading…
/webinars runs the full webinar lifecycle: create the event, manage speakers and
topics, send bulk invites and reminders, track registrations, and sync leads to
Salesforce. The public schedule and replay surface is documented at
Webinars.
| Route | Purpose | Guard |
|---|---|---|
/webinars | Event list (WebinarsClientPage) | org:webinars:view (page.tsx) |
/webinars/new | Create form (WebinarFormPage, empty webinar) | org:webinars:manage |
/webinars/[id]/edit | Edit form for one event | org:webinars:manage |
Entry point:
page.tsx
gates on requirePermission("org:webinars:view"); both write views re-assert
org:webinars:manage. Client logic is split into hooks/, components/, and types.ts.
| Route | Purpose | Clearance |
|---|---|---|
/api/workspace/webinars + /[id] | CRUD; POST /[id]/duplicate clones an event | view / org:webinars:manage |
/[id]/registrations, /registrations/export | Per-event registration list + CSV export | org:webinars:registrations:view / export permission |
/registrations/sync-salesforce | Push leads via Salesforce Web-to-Lead | org:webinars:registrations:export (rate-limited 5/hour/user, ≤1000 leads/call) |
/email/bulk-invite, /email/preview | Bulk invites + template preview | manage (bulk invites 3/hour/user, ≤300 emails/call) |
/subscribers/* | Standalone subscriber flows: drafts, scheduled sends, reminders, calendar invites, send history | manage |
/speakers, /topics-tags | Speaker roster and topic/tag taxonomy | view / manage |
/upload | Event creative / attachment upload | manage |
/event-logs | Structured event log (requires manage) | org:webinars:manage |
/api/workspace/webinar-partners/* | Partner CRUD + stats (/[id], /stats) | org:webinars:partners:manage |
Backed by MongoDB webinars, webinar_registrations, webinar_event_log, and
webinar_standalone_subscribers; invites go through AWS SES.
org:webinars:manage — do not relax this without a security review.Related: Audience · Sales · Webinars (public)