MemberPulse

Event Management

Create, manage, and promote events with comprehensive configuration options

Create and manage events of all types - live, online, and webinar - with full control over details, speakers, sponsors, and scheduling.

Capabilities

ActionROLE_CLIENT_ADMINROLE_CLIENT_USER
View events
Create events
Edit events
Delete events
Clone events
Manage speakers

Features

Event Types

Live Events

In-person events at physical venues

Online Events

Virtual events via video conferencing

Webinars

Broadcast-style online presentations

Acceptance Criteria

Frontend
  • Event list with status and date filters
  • Clone event functionality
  • Preview event as member would see it
  • Rich text editor for descriptions
  • Image upload with cropping
  • Date/time picker with timezone
  • Drag-and-drop schedule builder
  • Speaker management interface
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • Event title is required
  • Start date must be in the future (for new events)
  • Live events require location details
  • Online events require meeting link (manual URL or auto-generated via Zoom integration)
  • Published events visible based on visibility setting
  • Cancelled events hidden from public, registrations notified
  • End date must be after start date
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Create Event

  1. Basic Details
    • Event title and description
    • Event type (live, online, webinar)
    • Featured image upload
    • CPD points allocation
  2. Date & Time
    • Start date and time
    • End date and time
    • Timezone selection
    • Multi-day event configuration
  3. Location

    For live events:

    • Venue name and address
    • City, state, country
    • Map integration

    For online events:

    • Meeting provider (Zoom recommended)
    • Meeting link (auto-generated via Zoom integration, or manual URL)
    • Access instructions (passwords, dial-in, etc.)
  4. Visibility
    • Public (visible to all)
    • Member-only (requires login)
    • Draft (not visible)
  5. Schedule (Optional)

    Add multiple sessions with:

    • Session name and description
    • Start/end times
    • Assigned speakers
    • Room/location

Acceptance Criteria

Frontend
  • Create event wizard with multi-step form
Backend / API
  • Backend behavior supports this feature as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

UI Spec (from supplied spreadsheet)

The following field inventory is sourced from workspace/sources/entity-registry.csv ("Events").

This is a UI/requirements inventory (not the ERD). Some rows (e.g. datatables) describe UI elements rather than stored fields.

Core event fields
FieldInput TypeRequiredNotes
Event IDNumberRequiredSystem generated, locked
Event NameTextRequiredmodel: name
Event Short DescriptionTextRequiredUsed for tile
Event DescriptionWYSIWYG (Textarea)Requiredmodel: description
Event LocationTextRequiredGoogle Maps selection; model: location
Event Start Date / TimeDate + TextRequiredmodel: eventStart
Event End Date / TimeDate + TextRequiredmodel: eventEnd
Event TopicSelectRequiredFrom event settings
Event CategorySelectRequiredmodel: eventCategories
Event SeriesSelectRequiredmodel: eventSeries
Event BranchesSelectRequiredmodel: eventBranches
CPD CategorySelectorRequiredmodel: cpdCategories
Event TypeSelectRequiredmodel: eventType
Is Online--model: isOnline
Zoom LinkCheckboxNot Requiredmodel: zoomLink
Event Featured ImageFileNot Requiredmodel: featuredImage
Schedule for laterYes / No-model: scheduleForLater
Publish Date / TimeDate + Time-model: publishDateTime
Free EventTrue / FalseRequiredmodel: isFreeEvent
List of ParticipantsDatatable-Columns: Full name, Email, Ticket Type Purchased
Speakers & sponsors
FieldInput TypeRequiredNotes
Speaker NameTextRequiredmodel: speakerName
Speaker BioTextRequiredmodel: speakerBio
Speaker Website URLURLRequiredmodel: speakerWebsite
Speaker ImageFileRequiredmodel: speakerImageName
Is Main SpeakerTrue / FalseRequiredmodel: isMainSpeaker
Request SponsorsTrue / FalseRequiredAdds sponsorship request workflow
Sponsorship TypeTextRequiredRepeater when request sponsors enabled
Sponsorship CostNumberRequired-
Sponsorship DescriptionWYSIWYG (Textarea)Required-
Sponsor NameTextNot Requiredmodel: sponsorName
Sponsor URLURLNot Requiredmodel: sponsorUrl
Sponsor LogoFileNot Requiredmodel: sponsorLogoName

Data Model Cross‑Reference (Entities)

For Zoom-hosted online events, the platform can create the Zoom meeting/webinar automatically and store the meeting link on the event.

Expected behavior:

  • When the event is saved/published with Zoom enabled, the backend creates (or updates) the Zoom meeting
  • The generated join URL is stored as the event’s meeting link
  • The meeting link is shown to registered members (and optionally sent in confirmation emails)

Acceptance Criteria

Frontend
  • Event form supports selecting Zoom as the meeting provider.
  • Meeting link field is read-only when Zoom auto-generation is enabled.
Backend / API
  • Zoom meetings/webinars are created/updated automatically based on event start/end time.
Permissions
  • Only ROLE_CLIENT_ADMIN can connect/configure Zoom and enable auto meeting creation.
Business Rules
  • Zoom join links are only visible to users who are allowed to access the event.
Error Handling
  • If Zoom meeting creation fails, the UI shows an actionable error and allows retry.

CRM tags (pre/post)

When CRM sync is enabled, events apply predefined tags:

  • event.registered.pre when a member registers
  • event.attended.post when a member attends (check-in or Zoom import)
  • event.no_show.post when a member is marked as a no-show

See: CRM Tag

Clone Event

Save time by duplicating existing events:

  1. Select event to clone
  2. All details copied to new draft
  3. Modify as needed (dates, speakers, etc.)
  4. Publish when ready

Acceptance Criteria

Frontend
  • Clone Event workflow is implemented in the UI as described.
Backend / API
  • Backend behavior supports Clone Event as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Speaker Management

Add Speaker

  • Name and bio
  • Photo upload
  • Contact details
  • Social links
  • Designate as main speaker

Speaker Library

  • Reuse speakers across events
  • Update speaker info centrally
  • View speaker's event history

Acceptance Criteria

Frontend
  • Speaker Management workflow is implemented in the UI as described.
Backend / API
  • Backend behavior supports Speaker Management as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Sponsorship Assignment

This enables the association/client to attach one or more sponsors to an event, including sponsor logos and sponsor CTA links.

  • Add sponsors to event
  • Set sponsorship tier per sponsor
  • Display sponsor logos on event page
  • Track sponsor visibility metrics

Acceptance Criteria

Frontend
  • Sponsorship Assignment workflow is implemented in the UI as described.
Backend / API
  • Backend behavior supports Sponsorship Assignment as documented.
Permissions
  • Access is restricted per the Capabilities matrix on this page (or equivalent role rules).
Business Rules
  • All business rules for this feature are enforced.
Error Handling
  • Error states return clear messages and appropriate HTTP status codes.

Implementation Contracts

Backend (API)

GET    /api/events                           # List events
POST   /api/events                           # Create event
GET    /api/events/{id}                      # Get event details
PUT    /api/events/{id}                      # Update event
DELETE /api/events/{id}                      # Delete event

POST   /api/events/{id}/clone                # Clone event
PUT    /api/events/{id}/publish              # Publish draft
PUT    /api/events/{id}/cancel               # Cancel event

GET    /api/events/{id}/sessions             # Get sessions
POST   /api/events/{id}/sessions             # Add session
PUT    /api/events/{id}/sessions/{sessionId} # Update session

GET    /api/speakers                         # Speaker library
POST   /api/speakers                         # Create speaker
PUT    /api/speakers/{id}                    # Update speaker

Data Model

interface Event {
  id: string;
  title: string;
  description: string;
  featuredImage?: string;
  cpdPoints: number;
  
  // Type & Visibility
  eventType: 'live' | 'online' | 'webinar';
  visibility: 'public' | 'member_only';
  status: 'draft' | 'published' | 'completed' | 'cancelled';
  
  // Date/Time
  startDateTime: string;
  endDateTime: string;
  timezone: string;
  
  // Location (live events)
  venueName?: string;
  venueAddress?: string;
  city?: string;
  state?: string;
  country?: string;
  
  // Online (virtual events)
  meetingLink?: string;
  accessInstructions?: string;
  
  // Relationships
  speakers: Speaker[];
  sessions: Session[];
  sponsors: EventSponsor[];
  
  // CRM
  crmTag?: string;
  
  createdAt: string;
  updatedAt: string;
}

Error Handling

ErrorHTTP StatusMessage
Past start date400"Event start date must be in the future"
Invalid dates400"End date must be after start date"
Missing location400"Live events require venue details"
Missing link400"Online events require meeting link"

AI-Powered Webinar Processing

For webinars with recordings, the system automatically processes the video/recording to generate chapters and transcription.

Recording Extraction

When a webinar ends, the system:

  1. Retrieve Recording

    Automatically fetch the recording from the webinar provider (e.g., Zoom)

  2. Process Video

    Extract audio and video streams for AI processing

  3. Generate Transcription

    AI-powered speech-to-text converts the recording to a searchable transcript

  4. Create Chapters

    AI analyzes the content to create meaningful chapter markers with timestamps

AI-Generated Chapters

The system analyzes webinar content and automatically creates chapters:

  • Topic Detection: Identifies major topic shifts and key discussion points
  • Timestamp Markers: Precise timestamps for each chapter
  • Chapter Titles: AI-generated descriptive titles for each section
  • Summary Text: Brief description of what each chapter covers

Transcription Features

Full Transcript

  • Complete word-for-word transcription
  • Speaker identification (when available)
  • Timestamp markers throughout
  • Searchable text content

Member Experience

  • Members can search within the transcript
  • Click-to-jump to specific timestamps
  • Download transcript as PDF or text
  • Highlights and key takeaways

Acceptance Criteria

Frontend
  • Recording processing status indicator on event detail page
  • Chapter navigation sidebar in video player
  • Searchable transcript panel alongside video
  • Click-to-jump functionality from transcript to video timestamp
  • Download options for transcript (PDF, TXT)
  • Edit interface for admin to modify AI-generated chapters and transcript
Backend / API
  • Automatic recording retrieval from Zoom after webinar ends
  • AI transcription service integration
  • AI chapter generation service integration
  • Storage of processed transcripts and chapters
Permissions
  • Only ROLE_CLIENT_ADMIN can edit AI-generated chapters and transcripts
  • Members can only view/download if they have access to the event
Business Rules
  • Processing begins automatically when recording is available
  • Admin notified when processing is complete
  • Failed processing attempts are retried up to 3 times
  • Transcript and chapters can be manually edited by admin
  • Original recording preserved alongside processed content
Error Handling
  • If recording retrieval fails, admin is notified to manually upload
  • If transcription fails, event displays recording without transcript
  • Processing errors logged with detailed diagnostics

Implementation Contracts (Webinar AI)

POST   /api/events/{id}/process-recording    # Trigger recording processing
GET    /api/events/{id}/transcript           # Get transcript
PUT    /api/events/{id}/transcript           # Update transcript
GET    /api/events/{id}/chapters             # Get chapters
PUT    /api/events/{id}/chapters             # Update chapters
GET    /api/events/{id}/processing-status    # Check processing status

Chapter Data Model:

interface WebinarChapter {
  id: string;
  eventId: string;
  title: string;
  description: string;
  startTimestamp: number;  // seconds
  endTimestamp: number;    // seconds
  order: number;
  aiGenerated: boolean;
  createdAt: string;
  updatedAt: string;
}

On this page