Skip to main content
Version: Next

Communications

The Communications module provides comprehensive multi-channel messaging capabilities for your school. From announcements and newsletters to real-time chat and automated campaigns, this module ensures effective communication with students, parents, staff, and the broader school community.


Communication (segment: communication)

Sub-sectionPathDescription
DashboardcommunicationOverview and quick actions
Announcementscommunication/announcementsSchool-wide announcements
Campaignscommunication/campaignsBulk messaging campaigns
Chatscommunication/chatsReal-time messaging
Templatescommunication/templatesMessage templates
Topicscommunication/topicsCommunication topics
Preferencescommunication/preferencesUser preferences
Subscriptionscommunication/my-subscriptionsMy subscriptions
Suppressionscommunication/suppressionsBlocked addresses
Notificationscommunication/notificationsNotification center

Communications architecture

┌─────────────────────────────────────────────────────────────────────────┐
│ Communications Management System │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Communication Channels │ │
│ │ │ │
│ │ 📧 Email • 📱 SMS • 🔔 Push • 💬 In-App • 📞 Voice │ │
│ │ • 💚 WhatsApp • 💭 Chat │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────┼─────────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ Announcements │ │ Campaigns │ │ Chats │ │
│ │ │ │ │ │ │ │
│ │ School-wide │ │ Bulk targeted │ │ Direct & Group │ │
│ │ notices │ │ messaging │ │ conversations │ │
│ │ │ │ │ │ │ │
│ └────────┬────────┘ └────────┬────────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ └──────────────────────┼────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Templates Engine │ │
│ │ │ │
│ │ Handlebars • Liquid • Markdown • MJML • Plain Text │ │
│ │ Variable substitution • Preview rendering │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────┼────────────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ Topics │ │ Subscriptions │ │ Preferences │ │
│ │ │ │ │ │ │ │
│ │ Categories & │ │ User opt-in/ │ │ Channel settings │ │
│ │ organization │ │ opt-out │ │ Quiet hours │ │
│ │ │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Delivery & Tracking │ │
│ │ │ │
│ │ Outbox queue • Retry policies • Delivery logs • Analytics │ │
│ │ Suppressions • Compliance checks • Rate limiting │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘

Part 1: Communication channels

Messages can be delivered through multiple channels.

Channel definitions

ChannelDescriptionBest for
emailEmail messagesDetailed communications, newsletters, documents
smsSMS text messagesUrgent alerts, reminders, confirmations
pushMobile push notificationsReal-time alerts, updates
in_appIn-application notificationsSystem messages, activity updates
chatReal-time chat messagesDirect conversations, group discussions
voiceVoice callsCritical alerts, emergencies
whatsappWhatsApp messagesParent communication, rich media

Channel selection guide

ScenarioRecommended channel
Monthly newsletterEmail
Emergency school closureSMS + Push
Fee payment reminderEmail + SMS
Daily announcementsIn-app
Parent-teacher discussionChat
Attendance notificationPush
Event invitationEmail
Urgent safety alertSMS + Voice

Part 2: Announcements

School-wide announcements for broadcasting important information.

Announcement types

TypeDescriptionIcon
generalGeneral announcements and updatesFileText
newsNews and school updatesNewspaper
eventEvent announcementsCalendar
alertImportant alerts and noticesAlertCircle

Priority levels

PriorityDescriptionColorUse case
lowLow priorityGrayFYI messages
normalStandard priorityBlueRegular updates
highHigh priorityAmberImportant notices
criticalCritical priorityRedEmergencies

Announcement statuses

StatusDescription
draftNot published, editable
publishedLive and visible
archivedNo longer active

Creating an announcement

  1. Navigate to Communication → Announcements
  2. Click New Announcement
  3. Fill in details:
    • Title (required)
    • Content (required) — Rich text editor
    • Summary — Short description
    • Type — General, news, event, alert
    • Priority — Low, normal, high, critical
  4. Configure visibility:
    • Is Public — Visible outside school
    • Allow Comments — Enable discussions
  5. Set scheduling:
    • Publish At — Schedule for later (optional)
    • Expires At — Auto-archive date (optional)
  6. Select audience:
    • Everyone
    • By role (students, parents, teachers, staff)
    • By grade level
    • By class
    • By department
    • Specific users
  7. Add attachments (optional)
  8. Add tags (optional)
  9. Save as draft or publish

Audience targeting

Target typeDescriptionExample
allEveryone in schoolAll-school assembly notice
roleSpecific user rolesTeachers-only meeting
gradeSpecific grade levelsGrade 10 exam schedule
classSpecific classesClass 8A field trip
departmentSpecific departmentsScience department update
userIndividual usersAward recipients

Announcement actions

ActionDescription
PublishMake visible to audience
ScheduleSet future publish date
ArchiveRemove from active view
EditModify (if draft/published)
DeletePermanently remove
DuplicateCreate copy

Bulk operations

  • Bulk Publish — Publish multiple drafts
  • Bulk Archive — Archive multiple announcements

Part 3: Campaigns

Targeted bulk messaging campaigns for coordinated communications.

Campaign types

TypeDescriptionIcon
newsletterRegular newslettersMail
announcementBroadcast announcementsZap
alertUrgent alertsAlertCircle
reminderScheduled remindersClock
customCustom campaignsMessageSquare

Campaign statuses

StatusDescriptionTerminal
draftBeing prepared
scheduledScheduled for sending
processingCurrently sending
completedSuccessfully sent
cancelledManually cancelled
failedDelivery failed

Campaign workflow

┌─────────────────┐
│ Draft │ ← Create campaign
└────────┬────────┘

┌────┴────────┐
│ │
Schedule Start
│ │
▼ │
┌─────────────────┐ │
│ Scheduled │───────┘
└────────┬────────┘


┌─────────────────┐
│ Processing │ ← Sending messages
└────────┬────────┘

┌────┴────────┐
│ │
Success Fail
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Completed │ │ Failed │
└─────────────────┘ └─────────────────┘

Creating a campaign

  1. Navigate to Communication → Campaigns
  2. Click New Campaign
  3. Configure basics:
    • Name (required)
    • Description
    • Type — Newsletter, announcement, alert, reminder, custom
    • Channel — Email, SMS, push, in-app, multi-channel
    • Priority — Low, normal, high, critical
  4. Select template (optional)
  5. Define audience filters:
    • Roles
    • Grade IDs
    • Class IDs
    • Department IDs
    • Specific user IDs
    • Opt-in status
  6. Configure delivery:
    • Scheduled At — When to send
    • Delivery Window — Start and end times
    • Rate Limit — Messages per minute
  7. Set retry policy:
    • Max Attempts
    • Backoff Seconds
  8. Save or schedule

Audience filters

FilterDescription
rolesTarget specific roles
gradeIdsTarget grade levels
classIdsTarget classes
departmentIdsTarget departments
userIdsSpecific users
hasOptedInOnly users who opted in

Campaign statistics

MetricDescription
totalTotal recipients
sentSuccessfully sent
deliveredConfirmed delivered
failedDelivery failed
openedOpened by recipient
clickedLinks clicked
optedOutUnsubscribed

Message statuses

StatusDescription
draftNot sent
queuedIn queue
pendingAwaiting delivery
processingBeing sent
sentSent to provider
deliveredConfirmed delivered
openedOpened
clickedLink clicked
readMarked as read
failedDelivery failed
cancelledCancelled

Part 4: Real-time chats

Direct and group messaging for real-time communication.

Conversation types

TypeDescriptionUse case
directOne-on-onePrivate discussions
groupMultiple participantsTeam collaboration
channelBroadcast channelDepartment updates

Conversation visibility

VisibilityDescription
privateOnly participants can see
orgOrganization-wide visible
tenantTenant-wide visible

Participant roles

RolePermissions
ownerFull control, can delete
adminManage participants
memberRead and send messages

Message types

TypeDescription
textPlain text message
imageImage attachment
fileFile attachment
systemSystem notification
voiceVoice message

Starting a conversation

  1. Navigate to Communication → Chats
  2. Click New Conversation
  3. Select conversation type:
    • Direct message
    • Group chat
    • Channel
  4. Search and add participants
  5. Enter title (for groups/channels)
  6. Set visibility
  7. Create conversation
  8. Start messaging

Chat features

FeatureDescription
Real-time messagingInstant message delivery
Read receiptsSee when messages are read
Typing indicatorsSee when others are typing
RepliesReply to specific messages
Mentions@mention participants
AttachmentsShare files and images
Edit messagesModify sent messages
Delete messagesRemove messages
Mute conversationsDisable notifications
ArchiveHide from main list

Chat workspace layout

PanelContent
SidebarConversation list, search
Message areaChat history, composer
Info panelParticipants, details

Message actions

ActionDescription
ReplyReply to message
EditModify message
DeleteRemove message
PinPin important message
CopyCopy message text

Part 5: Templates

Reusable message templates for consistent communications.

Template categories

CategoryDescriptionIcon
newsletterRegular updates and newsMegaphone
alertUrgent notificationsAlertCircle
reminderScheduled remindersClock
marketingPromotional contentSparkles
academicEducational contentGraduationCap

Template channels

ChannelDescription
emailEmail templates
smsSMS templates
pushPush notification templates
in_appIn-app message templates
chatChat message templates
voiceVoice message scripts

Render engines

EngineSyntaxBest for
handlebars{{variable}}General purpose
liquid{{ variable }}Complex logic
markdownMarkdown with varsRich text
mjmlMJML tagsResponsive emails
plain_textPlain textSimple messages

Template properties

FieldTypeDescription
namestringTemplate name
descriptionstringDescription
categoryenumCategory type
channelenumTarget channel
renderEngineenumRendering engine
subjectTemplatestringSubject line template
bodyTemplatestringBody content template
variablesarrayRequired variables
validationSchemaobjectVariable validation
tagsarraySearchable tags
isSystembooleanSystem template
isActivebooleanCurrently active

Creating a template

  1. Navigate to Communication → Templates
  2. Click New Template
  3. Enter template details:
    • Name (required)
    • Description
    • Category — Newsletter, alert, reminder, marketing, academic
    • Channel — Email, SMS, push, etc.
    • Render Engine — Handlebars, Liquid, etc.
  4. Define subject template (for email)
  5. Write body template:
    • Use variable syntax: {{variableName}}
    • Add conditional logic
    • Include formatting
  6. Define variables:
    • Add variable name
    • Set type (string, number, boolean, array)
    • Mark as required/optional
    • Add default value
  7. Test render with sample data
  8. Save template

Variable syntax

Handlebars:

Dear {{studentName}},

Your attendance for {{month}} is {{attendancePercentage}}%.

{{#if hasAbsences}}
You have {{absenceCount}} absences.
{{/if}}

Liquid:

Dear {{ student_name }},

Your attendance for {{ month }} is {{ attendance_percentage }}%.

{% if has_absences %}
You have {{ absence_count }} absences.
{% endif %}

Test rendering

  1. Open template
  2. Click Test Render
  3. Enter sample variable values
  4. Preview rendered output
  5. Verify formatting
  6. Adjust template if needed

Part 6: Topics

Organize communications into subscribable topics.

Topic categories

CategoryDescription
academicAcademic updates and grades
operationsSchool operations
financeFees and payments
alertsUrgent notifications
customCustom topics

Topic properties

FieldTypeDescription
namestringTopic name
descriptionstringDescription
categoryenumTopic category
defaultChannelenumDefault delivery channel
isSystembooleanSystem-defined topic
metadataobjectAdditional data

Creating a topic

  1. Navigate to Communication → Topics
  2. Click New Topic
  3. Enter details:
    • Name (required)
    • Description
    • Category — Academic, operations, finance, alerts, custom
    • Default Channel — Email, SMS, push, etc.
  4. Save topic

Seeding topics

For new schools, seed default topics:

  1. Navigate to Communication → Topics
  2. Click Seed Topics
  3. Select scope:
    • Tenant — Tenant-wide topics
    • School — School-specific topics
  4. Confirm seeding

Part 7: Subscriptions

Manage user subscriptions to topics.

Subscription properties

FieldTypeDescription
topicIdstringTopic subscribed to
subscriberIdstringUser ID
subscriberTypeenumStaff, student, parent, contact
channelenumDelivery channel
deliveryModeenumImmediate, digest, muted
statusenumSubscribed, unsubscribed, suspended

Subscriber types

TypeDescription
staffSchool staff members
studentStudents
parentParents/guardians
contactExternal contacts

Delivery modes

ModeDescription
immediateSend immediately
digestBundle into digest
mutedDon't send

Subscription statuses

StatusDescription
subscribedActively receiving
unsubscribedOpted out
suspendedTemporarily paused

Managing subscriptions

Subscribe to topic:

  1. Navigate to Communication → My Subscriptions
  2. Find available topic
  3. Select channel
  4. Choose delivery mode
  5. Click Subscribe

Unsubscribe from topic:

  1. Find active subscription
  2. Click Unsubscribe
  3. Provide reason (optional)
  4. Confirm

Bulk subscribe:

  1. Select multiple topics
  2. Choose channel
  3. Subscribe all

Part 8: User preferences

Configure personal communication preferences.

Preference settings

SettingDescription
Channel PreferencesEnable/disable channels
Quiet HoursDo not disturb period
TimezoneUser timezone
LocaleLanguage preference

Setting quiet hours

  1. Navigate to Communication → Preferences
  2. Enable quiet hours
  3. Set start time (e.g., 22:00)
  4. Set end time (e.g., 07:00)
  5. Select timezone
  6. Save preferences

During quiet hours:

  • Non-critical messages are held
  • Critical alerts still delivered
  • Messages delivered after quiet hours end

Channel preferences

Enable or disable specific channels:

ChannelSetting
Email✓ Enable / ✗ Disable
SMS✓ Enable / ✗ Disable
Push✓ Enable / ✗ Disable
In-app✓ Enable / ✗ Disable
WhatsApp✓ Enable / ✗ Disable

Part 9: Suppressions

Manage addresses that should not receive messages.

Suppression reasons

ReasonDescription
hard_bounceEmail permanently undeliverable
soft_bounceTemporary delivery issue
complaintRecipient complained (spam)
unsubscribeUser unsubscribed
manualManually suppressed
invalidInvalid address format

Suppression sources

SourceDescription
adminAdded by administrator
importImported from list
providerFrom email/SMS provider
systemAutomatic system action

Adding suppression

  1. Navigate to Communication → Suppressions
  2. Click Add Suppression
  3. Enter details:
    • Destination — Email or phone number
    • Channel — Email, SMS, etc.
    • Reason — Why suppressed
    • Source — How added
  4. Save suppression

Checking suppression status

Before sending, the system checks if destination is suppressed:

  • If suppressed → Message not sent
  • If not suppressed → Proceed with delivery

Removing suppression

  1. Find suppression in list
  2. Click Release
  3. Confirm removal
  4. Address can receive messages again

Part 10: Delivery and tracking

Monitor message delivery and performance.

Outbox management

Messages queue in outbox before delivery:

StatusDescription
pendingWaiting in queue
processingBeing sent
heldOn hold
completedSuccessfully sent
failedDelivery failed
cancelledCancelled

Retry policies

Configure automatic retry for failed messages:

SettingDescription
maxAttemptsMaximum retry attempts
backoffSecondsDelay between retries

Delivery logs

Track each delivery attempt:

FieldDescription
providerDelivery provider used
providerMessageIdProvider's message ID
attemptAttempt number
statusDelivery status
latencyMsDelivery time
errorCodeError code (if failed)
errorMessageError details

Rate limiting

Control message sending speed:

  • Set messages per minute limit
  • Prevents provider throttling
  • Ensures consistent delivery

Permissions required

ActionRequired permission
View announcementsannouncements.view
Create announcementannouncements.create
Edit announcementannouncements.update
Delete announcementannouncements.delete
Publish announcementannouncements.publish
View campaignscampaigns.view
Create campaigncampaigns.create
Edit campaigncampaigns.update
Delete campaigncampaigns.delete
Schedule campaigncampaigns.schedule
Start campaigncampaigns.start
View chatschats.view
Create conversationchats.create
Send messageschats.send
Manage templatestemplates.manage
Manage topicstopics.manage
Manage suppressionssuppressions.manage
View preferencespreferences.view
Update preferencespreferences.update

Best practices

Announcements

  • Use appropriate priority levels
  • Target relevant audiences only
  • Set expiration for time-sensitive content
  • Review before publishing
  • Archive outdated announcements

Campaigns

  • Test with small audience first
  • Use templates for consistency
  • Schedule during appropriate hours
  • Monitor delivery statistics
  • Handle failures promptly

Templates

  • Use meaningful variable names
  • Include fallback values
  • Test with sample data
  • Keep templates organized by category
  • Version control important templates

Chats

  • Respond to messages promptly
  • Use appropriate conversation types
  • Keep conversations on topic
  • Archive completed discussions
  • Respect notification preferences

Preferences

  • Respect user quiet hours
  • Honor channel preferences
  • Process suppression requests immediately
  • Maintain up-to-date contact info
  • Handle bounces automatically

Troubleshooting

Message not delivered

Causes:

  • Recipient suppressed
  • Invalid destination
  • Channel disabled
  • Quiet hours active
  • Provider error

Fix:

  1. Check suppression list
  2. Verify destination format
  3. Check recipient preferences
  4. Review delivery logs
  5. Retry sending

Campaign stuck in processing

Causes:

  • Rate limit reached
  • Provider throttling
  • Network issues
  • Large audience

Fix:

  1. Check outbox status
  2. Review rate limits
  3. Check provider status
  4. Wait for queue to clear

Template rendering fails

Causes:

  • Missing required variable
  • Invalid variable type
  • Syntax error
  • Engine mismatch

Fix:

  1. Check all variables provided
  2. Verify variable types
  3. Review template syntax
  4. Test with sample data

Chat messages not syncing

Causes:

  • Network connectivity
  • Session expired
  • Permission denied
  • Server issue

Fix:

  1. Check network connection
  2. Refresh page
  3. Re-authenticate
  4. Contact support