Skip to main content
Each event has a wire name (the event field in the envelope, e.g. webinar.created) and an enum name used when creating subscriptions (e.g. WEBINAR_CREATED). Subscribe using the enum name; match on the wire name in your receiver.
Wire nameSubscription enumWhen it fires
webinar.createdWEBINAR_CREATEDA webinar is scheduled.
webinar.startedWEBINAR_STARTEDA webinar goes live.
webinar.endedWEBINAR_ENDEDA webinar ends.
registrant.createdREGISTRANT_CREATEDSomeone registers for a webinar.
attendee.joinedATTENDEE_JOINEDA registrant joins the live webinar.
registrant.did_not_attendREGISTRANT_DID_NOT_ATTENDA registrant did not attend the webinar.
The payloads below show the data object of the envelope. Test events (fired via sendTestEvent) carry the same shape with an added "test": true marker and obviously synthetic values, so you can build and validate your parser without a real webinar.

Webinar events

webinar.created, webinar.started, and webinar.ended share a common webinar shape. started adds actual_start_time; ended adds actual_end_time and attendee_count.
data (webinar.ended)
{
  "event_id": "sample-webinar-123",
  "id": "sample-webinar-123",
  "title": "Q3 Product Launch Webinar",
  "description": "A live walkthrough of everything shipping this quarter.",
  "scheduled_start_time": "2026-07-15T16:00:00.000Z",
  "scheduled_end_time": "2026-07-15T17:00:00.000Z",
  "timezone": "America/New_York",
  "type": "live",
  "studio_id": "sample-studio-789",
  "studio_slug": "product-webinars",
  "project_id": "sample-project-012",
  "production_id": "sample-production-345",
  "hosted_by": "Ada Lovelace",
  "created_by_user_id": "sample-user-345",
  "actual_start_time": "2026-07-15T16:01:23.000Z",
  "actual_end_time": "2026-07-15T17:04:08.000Z",
  "attendee_count": 142
}
FieldTypeNotes
event_idstringThe webinar this event relates to. Equals id for webinar events.
idstringThe webinar id.
titlestring | nullWebinar title.
descriptionstring | nullWebinar description.
scheduled_start_timestring | nullISO-8601. Planned start.
scheduled_end_timestring | nullISO-8601. Planned end.
timezonestring | nullIANA timezone the webinar was scheduled in.
typestringWebinar type, e.g. live.
studio_idstringThe studio hosting the webinar.
studio_slugstring | nullSlug of the hosting studio.
project_idstringOwning project.
production_idstring | nullOwning production.
hosted_bystring | nullDisplay name of the host.
created_by_user_idstring | nullUser who created the webinar.
actual_start_timestringISO-8601. Present on webinar.started and webinar.ended.
actual_end_timestringISO-8601. Present on webinar.ended.
attendee_countintegerPresent on webinar.ended.

Registrant & attendee events

registrant.created, attendee.joined, and registrant.did_not_attend share a common registrant shape. attendee.joined adds joined_at and sets participated: true; registrant.did_not_attend sets participated: false with a zeroed attendance.
data (attendee.joined)
{
  "event_id": "sample-webinar-123",
  "first_name": "Ada",
  "last_name": "Lovelace",
  "email": "[email protected]",
  "registered_at": "2026-07-01T10:15:30.000Z",
  "approved": true,
  "join_url": "https://riverside.fm/studio/product-webinars?audienceToken=sample-token-abc123",
  "participated": true,
  "joined_at": "2026-07-15T16:03:45.000Z",
  "attendance_rate": null,
  "duration": null,
  "referrer": "https://example.com/landing",
  "utm": {
    "source": "newsletter",
    "medium": "email",
    "campaign": "q3-launch",
    "term": null,
    "content": "header-cta"
  },
  "custom_fields": {
    "Company": "Acme Inc.",
    "Job Title": "Engineering Manager"
  }
}
FieldTypeNotes
event_idstringThe webinar this registrant belongs to.
first_namestringRegistrant first name.
last_namestring | nullRegistrant last name.
emailstringRegistrant email.
registered_atstringISO-8601. When they registered.
approvedbooleanWhether the registration was approved.
join_urlstring | nullPersonal join link.
participatedbooleantrue once they join; false for no-shows.
joined_atstringISO-8601. Present on attendee.joined only.
attendance_ratenumber | nullFraction of the webinar attended. 0 for no-shows.
durationstring | nullTime attended (mm:ss). "00:00" for no-shows.
referrerstring | nullReferring URL captured at registration.
utmobject | nullUTM attribution (source, medium, campaign, term, content — each nullable).
custom_fieldsobject | nullCustom registration form responses, keyed by field label. Values are a string, boolean, or a phone-number object ({ countryCode, phoneNumber }).