Skip to main content
Version: Next

Events management

The Events module provides comprehensive event planning, scheduling, and management capabilities for your school. From academic calendars and sports days to parent-teacher meetings and cultural celebrations, this module handles the full event lifecycle with registration tracking, notifications, and multi-view calendars.


Events (segment: events)

Sub-sectionPathDescription
CalendareventsCalendar view of all events
Event detailevents/[eventId]Individual event page

Events architecture

┌─────────────────────────────────────────────────────────────────────────┐
│ Events Management System │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Event Creation │ │
│ │ │ │
│ │ Multi-step wizard: Basics → Schedule → Location → Registration │ │
│ │ 17 event types • 6 visibility levels • Recurring support │ │
│ │ │ │
│ └────────────────────────────────┬─────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Event Lifecycle │ │
│ │ │ │
│ │ Draft → Scheduled → Published → In Progress → Completed │ │
│ │ ↓ ↓ │ │
│ │ Postponed Cancelled │ │
│ │ │ │
│ └────────────────────────────────┬─────────────────────────────────┘ │
│ │ │
│ ┌────────────────────┼────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ Calendar Views │ │ Registrations │ │ Notifications │ │
│ │ │ │ │ │ │ │
│ │ Month, Week, │ │ Attendees, │ │ Email, SMS, Push, │ │
│ │ Day, Agenda │ │ Volunteers, │ │ In-app reminders │ │
│ │ │ │ Speakers │ │ │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Statistics & Insights │ │
│ │ │ │
│ │ Total events • Upcoming • In progress • Completed • Cancelled │ │
│ │ By type breakdown • Registration totals • Average attendance │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘

Part 1: Event types

Events are categorized by type for better organization and filtering.

Type definitions

TypeDescriptionIconSuggested durationDefault all-day
academicLectures, seminars, study sessionsGraduationCap60 min
sportsAthletic events, matches, activitiesTrophy120 min
culturalPerformances, artistic celebrationsMusic180 min
socialGatherings, parties, community eventsUsers120 min
meetingStaff, parent meetings, consultationsMessageSquare60 min
workshopHands-on training sessionsWrench180 min
seminarGuest lectures, educational presentationsPresentation90 min
ceremonyGraduation, awards, formal eventsAward120 min
holidaySchool holidays and breaksPalmtree
examExaminations and assessmentsFileCheck180 min
field_tripEducational trips and excursionsMap
competitionAcademic and sports competitionsTarget240 min
parent_eventFamily events and engagementsHeart120 min
parent_teacherParent-teacher meetingsHeart120 min
fundraiserCharity and fundraising activitiesHandHeart180 min
assemblySchool assemblies, announcementsMegaphone45 min
otherEvents not fitting standard categoriesHelpCircle60 min

Type color coding

TypeColor
AcademicBlue
SportsOrange
CulturalPurple
SocialPink
MeetingSlate
WorkshopAmber
SeminarIndigo
CeremonyYellow
HolidayGreen
ExamRed
Field TripTeal
CompetitionRose
Parent EventCyan
FundraiserEmerald
AssemblyViolet
OtherGray

Part 2: Event statuses

Events progress through a lifecycle from creation to completion.

Status definitions

StatusDescriptionTerminalCan editCan cancelCan publish
draftIn draft mode, not visible
scheduledScheduled but not published
publishedLive and visible to attendees
in_progressCurrently happening
completedEvent has finished
cancelledEvent cancelled
postponedRescheduled to later date

Status workflow

┌─────────────────┐
│ Draft │ ← Initial state
└────────┬────────┘

┌────┴────────────────┐
│ │
Schedule Publish
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Scheduled │───▶│ Published │
└────────┬────────┘ └────────┬────────┘
│ │
┌────┴────┐ ┌─────┴─────────────┐
│ │ │ │
Publish Cancel In Progress Cancel
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Published │ │ In Progress │ │ Cancelled │
└─────────────────┘ └────────┬────────┘ │ (Terminal) │
│ └─────────────────┘
┌────┴────┐
│ │
Complete Cancel
│ │
▼ ▼
┌─────────────────┐
│ Completed │
│ (Terminal) │
└─────────────────┘

┌─────────────────┐
│ Postponed │ ← Can return to draft/scheduled
└─────────────────┘

Part 3: Visibility levels

Control who can see events.

Visibility definitions

VisibilityDescriptionIcon
publicVisible to everyone including external visitorsGlobe
internalVisible to all school membersUsers
staff_onlyOnly visible to staff membersUserCheck
students_onlyOnly visible to studentsGraduationCap
parents_onlyOnly visible to parents/guardiansUserCircle
restrictedLimited visibility based on specific criteriaLock

Visibility use cases

VisibilityExample events
PublicOpen days, graduation ceremonies, sports finals
InternalRegular assemblies, inter-house competitions
Staff onlyStaff meetings, professional development
Students onlyStudent council meetings, study groups
Parents onlyParent-teacher conferences, PTA meetings
RestrictedDiscipline hearings, sensitive meetings

Part 4: Recurrence patterns

Events can repeat on a schedule.

Pattern definitions

PatternDescriptionSuggested occurrences
noneDoes not repeat (one-time event)
dailyRepeats every day7
weeklyRepeats every week12
monthlyRepeats every month12
yearlyRepeats every year3

Recurrence properties

FieldTypeDescription
is_recurringbooleanWhether event repeats
recurrence_patternenumDaily, weekly, monthly, yearly
recurrence_end_datedateWhen recurrence stops
recurrence_countnumberMax number of occurrences
parent_event_idstringLinks to original event

Part 5: Registration types

Configure attendee registration requirements.

Registration definitions

TypeDescriptionRequires deadlineRequires capacity
noneNo registration - open to all
optionalRegistration recommended but not required
requiredRegistration mandatory to attend
ticketedTickets or passes required for entry

Registration properties

FieldTypeDescription
registration_typeenumNone, optional, required, ticketed
registration_deadlinedatetimeCutoff for registrations
max_attendeesnumberCapacity limit
current_attendeesnumberCurrent registration count
waitlist_enabledbooleanAllow waitlist when full
registration_urlstringExternal registration link

Registration statuses

StatusDescription
pendingAwaiting confirmation
confirmedRegistration confirmed
waitlistedOn waitlist
cancelledRegistration cancelled

Registration types (attendee)

TypeDescription
attendeeRegular attendee
volunteerEvent volunteer
speakerPresenter or speaker
performerPerformance participant

Part 6: Event properties

Complete event data structure.

Core properties

FieldTypeDescription
idstringUnique identifier
tenant_idstringTenant association
school_idstringSchool association
titlestringEvent title (max 200 chars)
descriptionstringFull description (max 5000 chars)
event_typeenumEvent category
statusenumCurrent status
visibilityenumWho can see

Scheduling properties

FieldTypeDescription
start_datedateStart date
end_datedateEnd date
start_timetimeStart time (if not all-day)
end_timetimeEnd time (if not all-day)
timezonestringEvent timezone
all_daybooleanFull day event

Location properties

FieldTypeDescription
location_namestringSimple location name
location.namestringStructured location name
location.addressstringStreet address
location.roomstringRoom number
location.buildingstringBuilding name
location.capacitynumberVenue capacity
location.isVirtualbooleanOnline event
location.virtualLinkstringMeeting URL
location.mapLinkstringMap link
location.coordinatesobjectLat/long

Organization properties

FieldTypeDescription
organizer_idstringOrganizer user ID
organizer.typeenumStaff, department, organization
organizer.namestringOrganizer name
organizer.emailstringContact email
department_idstringOrganizing department
class_idstringAssociated class
grade_level_idsarrayTarget grade levels
target_audiencearrayAudience segments

Cost properties

FieldTypeDescription
is_freebooleanNo cost to attend
costnumberTicket/registration price
currencystringCurrency code

Content properties

FieldTypeDescription
image_urlstringEvent image
banner_urlstringBanner image
attachmentsarraySupporting documents
tagsarraySearchable tags
categoriesarrayCategory groupings

Notification properties

FieldTypeDescription
send_notificationsbooleanSend reminders
remindersarrayReminder configuration
reminders[].typeenumEmail, SMS, push, in_app
reminders[].offsetnumberMinutes before event

Meta properties

FieldTypeDescription
is_featuredbooleanHighlighted event
is_activebooleanActive status
created_atdatetimeCreation timestamp
updated_atdatetimeLast update
published_atdatetimeWhen published
cancelled_atdatetimeWhen cancelled
cancellation_reasonstringWhy cancelled
postponed_todatetimeNew date if postponed
postponement_reasonstringWhy postponed

Part 7: Creating events

Multi-step wizard for event creation.

Form steps

StepTitleFields
1. BasicsBasic InfoTitle, type, description
2. ScheduleScheduleDate, time, recurrence
3. LocationLocationVenue, virtual link
4. RegistrationRegistrationType, capacity, deadline
5. AdvancedAdvancedNotifications, tags, visibility

Step 1: Basic information

  1. Enter event title (required)
  2. Select event type (required)
  3. Add description
  4. Choose visibility level
  5. Mark as featured (optional)

Step 2: Schedule

  1. Select start date (required)
  2. Select end date (required)
  3. Set all-day toggle
  4. If not all-day:
    • Set start time
    • Set end time
  5. Configure recurrence:
    • Pattern (none, daily, weekly, monthly, yearly)
    • End date or count

Step 3: Location

  1. Enter location name
  2. For physical locations:
    • Building
    • Room
    • Address
    • Map link
  3. For virtual events:
    • Toggle "Virtual event"
    • Enter meeting link

Step 4: Registration

  1. Select registration type:
    • None (open to all)
    • Optional
    • Required
    • Ticketed
  2. If required/ticketed:
    • Set capacity limit
    • Set registration deadline
    • Enable/disable waitlist
  3. For ticketed:
    • Set cost
    • Select currency

Step 5: Advanced settings

  1. Configure reminders:
    • 15 minutes before
    • 30 minutes before
    • 1 hour before
    • 2 hours before
    • 1 day before
    • 2 days before
    • 1 week before
  2. Add tags
  3. Add categories
  4. Upload banner image
  5. Attach documents

Smart suggestions

The system provides intelligent suggestions:

  • Title suggestions based on event type
  • Duration suggestions based on type
  • Time suggestions based on typical school hours

Part 8: Calendar views

Multiple ways to view events.

View types

ViewDescriptionBest for
MonthFull month gridOverview, planning
Week7-day detailed viewWeekly scheduling
DaySingle day timelineDaily agenda
AgendaList viewQuick scanning

Calendar navigation

  • Previous/Next — Navigate periods
  • Today — Jump to current date
  • View toggle — Switch between views
  • Date picker — Jump to specific date

Event display

Events on calendar show:

  • Title (truncated if long)
  • Color by event type
  • Time (if not all-day)
  • Recurring indicator
  • Featured indicator

Event hover card

Hovering reveals:

  • Full title
  • Date and time
  • Location
  • Status badge
  • Type badge
  • Quick action buttons

Part 9: Quick filters

Pre-built filters for common views.

Filter options

FilterDescriptionIcon
TodayEvents happening todayCalendar
This WeekEvents this weekCalendarCheck
UpcomingFuture eventsCalendarClock
My EventsEvents you're organizingUserCircle
FeaturedHighlighted eventsAward

Filter parameters

ParameterTypeDescription
event_typeenumFilter by type
statusenumFilter by status
visibilityenumFilter by visibility
start_date_fromdateStart date range
start_date_todateEnd date range
organizer_idstringBy organizer
department_idstringBy department
class_idstringBy class
is_featuredbooleanFeatured only
is_recurringbooleanRecurring only
tagsarrayBy tags
categoriesarrayBy categories

Part 10: Event detail view

Comprehensive event information display.

Detail sections

SectionContent
HeaderTitle, type badge, status badge
Status bannerLive indicator, countdown, past warning
ScheduleDate, time, duration, recurrence info
LocationVenue details, map link, virtual link
DescriptionFull event description
RegistrationType, capacity, deadline, register button
AttendeesRegistration list, counts
OrganizerContact information
AttachmentsSupporting documents
TimelineEvent history

Quick actions

ActionWhen available
EditDraft, scheduled, published, postponed
PublishDraft, scheduled, postponed
UnpublishPublished
CancelDraft, scheduled, published, in_progress
PostponeScheduled, published
DuplicateAny status
DeleteDraft only (or with permission)
SharePublished

Event countdown

Displays contextual timing information:

  • "Starts in 2 hours"
  • "Happening now"
  • "Event has passed"
  • "Registration closes in 3 days"

Part 11: Managing registrations

Track and manage event attendees.

Registration workflow

  1. User views published event
  2. Clicks "Register" button
  3. Selects registration type (attendee, volunteer, speaker, performer)
  4. Adds notes (optional)
  5. Submits registration
  6. Status: Pending or Confirmed (based on settings)

Capacity management

  • Track current vs max attendees
  • Show available spots
  • Enable waitlist when full
  • Auto-confirm from waitlist on cancellation

Registration list

View and manage registrations:

  • Filter by status
  • Filter by type
  • Export list
  • Send bulk messages
  • Cancel registrations

Part 12: Event actions

Operations available on events.

Publish event

POST /api/v1/operations/events/:id/publish

Changes status from draft/scheduled to published.

Unpublish event

POST /api/v1/operations/events/:id/unpublish

Returns event to draft status.

Cancel event

POST /api/v1/operations/events/:id/cancel

{
"reason": "Due to weather conditions"
}
  • Changes status to cancelled
  • Records cancellation reason
  • Notifies registered attendees

Postpone event

POST /api/v1/operations/events/:id/postpone

{
"new_start_date": "2024-03-15",
"new_end_date": "2024-03-15",
"new_start_time": "14:00",
"new_end_time": "16:00",
"reason": "Venue unavailable"
}
  • Changes status to postponed
  • Records new dates
  • Records postponement reason
  • Notifies registered attendees

Part 13: Reminders and notifications

Keep attendees informed.

Reminder options

TimingValue (minutes)
15 minutes before15
30 minutes before30
1 hour before60
2 hours before120
1 day before1440
2 days before2880
1 week before10080

Notification channels

ChannelDescription
emailEmail notification
smsSMS text message
pushMobile push notification
in_appIn-app notification

Automatic notifications

TriggerRecipients
Event publishedTarget audience
Event cancelledRegistered attendees
Event postponedRegistered attendees
Registration confirmedRegistrant
Reminder dueRegistered attendees
Event startingRegistered attendees

Part 14: Statistics

Event analytics and insights.

Summary metrics

MetricDescription
totalTotal events in period
upcomingEvents not yet started
inProgressCurrently happening
completedFinished events
cancelledCancelled events
totalRegistrationsTotal registrations
averageAttendanceAverage per event

Breakdowns

DimensionDescription
byTypeCount per event type
byStatusCount per status

Part 15: Default values

System defaults for new events.

SettingDefault value
Event typeMeeting
VisibilityInternal
Registration typeNone
RecurrenceNone
All dayFalse
Is freeTrue
Is featuredFalse
Send notificationsTrue
Waitlist enabledFalse
Default start time09:00
Default end time10:00
Default duration60 minutes
Max title length200 characters
Max description length5000 characters

Permissions required

ActionRequired permission
View calendarevents.view
View event detailevents.view
Create eventevents.create
Edit eventevents.update
Delete eventevents.delete
Publish eventevents.publish or events.update
Cancel eventevents.cancel or events.update
Manage registrationsevents.registrations.manage
View statisticsevents.statistics.view or events.view

Best practices

Event planning

  • Create events at least 1 week in advance
  • Use appropriate event types for accurate categorization
  • Set visibility based on target audience
  • Include clear, descriptive titles
  • Add detailed descriptions with agenda

Scheduling

  • Avoid scheduling conflicts with major school events
  • Use recurrence for regular meetings
  • Set appropriate durations based on event type
  • Consider timezone for virtual events
  • Allow buffer time between events

Registration

  • Set registration deadlines 24-48 hours before event
  • Enable waitlist for popular events
  • Set realistic capacity limits
  • Send confirmation emails

Communication

  • Configure multiple reminder timings
  • Send advance notice for major events
  • Update immediately if changes occur
  • Include virtual links in notifications

After events

  • Mark completed events promptly
  • Record actual attendance
  • Gather feedback
  • Document lessons learned

Troubleshooting

Event not appearing on calendar

Causes:

  • Status is draft (not published)
  • Visibility restricts your access
  • Date range filter excludes event
  • School/tenant mismatch

Fix:

  1. Check event status
  2. Verify your role has visibility access
  3. Adjust calendar date range
  4. Confirm correct school context

Cannot edit event

Causes:

  • Event is completed or cancelled
  • Event is in progress
  • Insufficient permissions

Fix:

  1. Check event status (terminal states cannot be edited)
  2. Verify your permissions
  3. Contact administrator if needed

Registration not working

Causes:

  • Registration deadline passed
  • Event at capacity
  • Registration type is "none"
  • Event not published

Fix:

  1. Check registration deadline
  2. Check available spots
  3. Verify registration is enabled
  4. Ensure event is published

Notifications not sending

Causes:

  • Send notifications disabled
  • No reminders configured
  • User contact info missing
  • Notification service issue

Fix:

  1. Enable send_notifications on event
  2. Configure reminder timings
  3. Verify attendee contact information
  4. Check notification service status