SMS Settings
Every text the school sends leaves through this configuration — the gateway that carries it, the sender ID it arrives under, and the rules that decide who receives it and when.
1,84,220 of 3,00,000 purchased. At the current rate this lasts to about 12 Oct.
General
How SMS behaves before a single message is written.
Outbound SMS
Applies to every message the system sends
On — the ERP may send text messages
MSG91 transactional
GSM-7 — 160 characters per segment
India (+91) — numbers stored in E.164
Nothing sent between 21:00 and 09:00
Recipients
Who may be texted, and on which number
The guardian marked primary on the student record
Try the second guardian if the first number is invalid
Only for OTP and exam results, never for fees
Used for internal alerts only
A guardian who replies STOP receives nothing but emergencies
Safety rails
Guards that stop a mistake reaching every family
Off — messages reach real handsets
Used only while test mode is on
Ask before any send above 200 recipients
25,000 messages — refuses beyond this
Block the same text to the same number within 10 minutes
Regulatory position
TRAI commercial communication rules
SMS Gateway
The connection itself — endpoint, credentials and what comes back.
Gateway
Where messages are handed over
MSG91 — transactional route
https://api.msg91.com/api/v5/flow/
POST with a JSON body
PRSKOL
15 seconds
Authentication
Held encrypted at rest, never displayed in full
Auth key in the request header
4188••••••••••A1
Not required by this provider
Every 180 days — next on 12 Jan 2027
Delivery receipts are verified before they are trusted
API endpoint
What the ERP posts, and what comes back
authkey: 4188∗∗∗∗∗∗∗∗∗∗A1
{ "template_id": "6512a9f4d3", "sender": "PRSKOL",
"short_url": "0", "recipients": [ … ] }
Delivery receipts arrive separately on the callback URL below. A message is not counted as delivered until that receipt is in.
Connection status
Checked every 15 minutes
Providers
Eight configured routes, one carrying traffic.
Only the default route carries traffic. The rest stay configured so a failover is a switch rather than a rebuild. Prices are per message on the domestic transactional route.
MSG91
api.msg91.com/api/v5
Twilio
api.twilio.com/2010-04-01
Textlocal
api.textlocal.in/send
Vonage
rest.nexmo.com/sms
Plivo
api.plivo.com/v1
Clickatell
platform.clickatell.com
AWS SNS
sns.ap-south-1.amazonaws.com
Custom REST API
sms.preskool.local/send
Sender IDs
The six characters a message arrives under.
Six characters, fixed, approved by the regulator before a single message can carry them. Transactional and promotional traffic must use different IDs.
Transactional sender
Fees, attendance, results and admissions
Promotional sender
Newsletters, events and open-day invitations
OTP sender
One-time passwords for portal sign-in
Emergency sender
Closures, safety notices and evacuation alerts
Templates
Ten messages the system knows how to write.
Each template is shown as it will arrive on a handset, with its character count against the 160-character segment boundary. Anything past 160 costs two messages.
Admission Confirmation
Sent when a seat is allotted
{guardian}, admission of {student} to Class {class} is confirmed. Report on {date}. - PreskoolOTP Verification
Portal sign-in, expires in 10 minutes
{otp} is your Preskool verification code. Valid for 10 minutes. Do not share it. - PreskoolAttendance Alert
Sent at 11:00 on an unexplained absence
{guardian}, {student} was marked absent today. Please contact the class teacher. - PreskoolFee Reminder
Three before the due date, one after
{guardian}, fee of Rs {amount} for {student} is due on {date}. Pay at the portal or the counter. - PreskoolExam Schedule
Sent when a timetable is published
{exam} timetable for Class {class} is published. First paper on {date}. See the portal for the full schedule. - PreskoolExam Result
Sent when results are released
{exam} are out. {student} scored {marks}. The full report card is on the parent portal. - PreskoolHomework Reminder
Daily digest at 17:00
{student} in {subject}, due {date}. Details on the portal. - PreskoolHoliday Notice
Sent the evening before
{date} for {reason}. Classes resume as usual the following working day. - PreskoolEmergency Alert
Sent manually, bypasses quiet hours
{message}. Please collect {student} from the main gate. Do not reply to this message. Call 044 4000 1200. - PreskoolBirthday Wishes
Sent on the morning of the day
{student}! Everyone at Preskool wishes you a wonderful year ahead. - PreskoolNotification Rules
What the system texts without being asked.
What the system texts on its own. Each rule names its audience and the sender ID it goes out under, so nothing reaches a family on the wrong route.
Quiet hours 21:00 – 09:00Sent once attendance is locked for the morning session, and only if no leave was recorded.
Three reminders before the due date, one after. Never more than one message a day per family.
Highest priority route. Bypasses the queue and the send window entirely.
Held until the class teacher signs off, so no result reaches a family early.
Off while the template is a draft. Would send one digest rather than a message per subject.
Sent manually by the Principal or Vice-Principal only. Ignores quiet hours and opt-outs.
Promotional route, so an opted-out family receives nothing. Currently a draft.
Delivery Policies
What goes instantly, what waits, and what the ceilings are.
Instant delivery
What goes out the moment it is created
Never queued, never delayed
Bypasses quiet hours and the daily ceiling
Sent as soon as attendance is locked
Queued and sent at the configured rate
Scheduled messages
What waits for the right moment
Nothing leaves between 21:00 and 09:00
Hold until the window opens
3 queued for tomorrow morning
Asia/Kolkata — the school’s local time
Limits
Ceilings that protect the credit balance
25,000 messages
4 messages to one number
2,000 recipients per campaign
Hold in the queue rather than fail
Notify when the balance falls below 2,00,000
Delivery reports
How the school learns what arrived
Requested on every message and recorded against it
https://preskool.edu/hooks/sms/dlr
Alert the office when a number fails three times
90 days
Routing
Which message travels which way.
Which message travels which way. Priority routing exists because an OTP that arrives in ninety seconds is worthless, while a birthday message can wait.
Priority routing
Which message overtakes which
Sent ahead of everything, on the fastest route
Transactional route, sent within a minute
Transactional route, queued
Promotional route, sent when the queue is quiet
Failover
What happens when the default route stops answering
Switch to the standby provider after 3 consecutive failures
Twilio — costs more, so it is not the default
Return to MSG91 once it answers cleanly for 10 minutes
Alert the IT administrator immediately
No custom routing rules
Messages follow the priority table above. A custom rule would let you send, for example, all traffic to a particular operator through a different provider. Most schools never need one.
Retry Policies
What happens when a message does not arrive.
Retry attempts
How persistent the sender should be
3, then the message is failed
2 min, 15 min, 1 hour
After the second failure, try a different provider
4 hours, whatever the attempt count
Failure handling
What happens once retries are exhausted
Mark it on the student record for the office to check
Send the same content by email where an address exists
5 consecutive failures to the same number
When a guardian number stops working
What is worth retrying
A failure code says whether a second attempt has any chance
Message Queue
What is waiting right now.
412 messages waiting · sending at 30 per second · the queue clears in about 14 seconds, apart from what is held for the send window
Logs
What the carrier said, in its own codes.
Delivery log
Last 10 events · retained for 90 days
Security
Credentials, rate limits, validation and the regulator.
API authentication & encryption
How the ERP proves itself to the gateway
HTTPS only — a plaintext request is refused
TLS 1.2
Encrypted at rest with the application key
Delivery receipts verified before they are trusted
Discarded and logged
IP allow-list & rate limiting
Who may reach the gateway, and how often
Only the school’s two servers and the office range
30 requests per second
60 for up to 5 seconds
Queue rather than refuse
Message validation & spam protection
What is checked before a message leaves
The body must match its approved DLT template exactly
E.164 with a valid Indian prefix
Off — shortened links are widely filtered as spam
Refuse messages containing 12 flagged terms
Same body to the same number within 10 minutes
Compliance status
DLT registration and consent
Name PRESKOOL INTERNATIONAL SCHOOL
Operator Vodafone Idea DLT
Status Active since 14 Jan 2026
Advanced
Payload, callbacks, encoding and the reset switch.
"template_id": "6512a9f4d3",
"sender": "PRSKOL",
"short_url": "0",
"recipients": [ @{{ "mobiles": "9198∗∗∗∗4471", "student": "Aarav K", "amount": "12,400" }} ]
}}
Variables are substituted from the student record at send time. The template id is fixed by the DLT registration and cannot be changed here.
https://preskool.edu/hooks/sms/dlr
POST, JSON body, one receipt per message
HMAC SHA-256 with a shared secret, rotated yearly
Discarded and logged — a forged receipt would mark an undelivered message as delivered
160 characters per segment. The default, and what every template above is written for.
70 characters per segment. Triggered by a single Tamil or Hindi character, or by a curly quote pasted from a word processor.
Curly quotes and en-dashes are replaced with plain equivalents before sending, which keeps most messages inside one segment.
A message of 161 characters costs exactly twice as much as one of 160. The template editor shows the count for this reason.
Resetting returns every SMS setting to the template default, disconnects all providers and clears stored credentials. Templates, sender ID registrations and delivery logs are kept.
Audit History
Every change, with the name against it.
Audit history
Every change to SMS configuration, retained for 3 academic years
Messaging timeline
From the day the gateway was connected to what is still waiting to be published.
Gateway connected
14 Jan 2026MSG91 connected on the transactional route with an auth key held encrypted.
API verified
14 Jan 2026Endpoint reachable over TLS 1.3 and the key accepted on the first attempt.
Test SMS sent
14 Jan 2026One message to the IT administrator, submitted in 208 ms.
Message delivered
14 Jan 2026Receipt returned DELIVRD in 3.9 seconds, under sender ID PRSKOL.
Configuration updated
31 Jul 2026Daily ceiling raised to 25,000 and the homework reminder switched off. Two changes are still drafts.
Settings published
PendingPublishing applies the drafts to every outbound message within a minute.
MSG91 — gateway configuration
Default route · transactional · last changed 31 Jul 2026 by Ms. Latha Rao
Configuration details
MSG91 · Walkover Web Solutions
Transactional · domestic India
PRSK-441229
14 Jan 2026 by Mr. R. Venkatesh
30 messages per second
98.6% over the last 30 days
Current values
https://api.msg91.com/api/v5/flow/
4188••••••••••A1
PRSKOL
15 seconds
3, with backoff
How a message arrives
status DELIVRD
sender PRSKOL
segments 1
elapsed 4.02 s
Validation
Provider information
MSG91 Flow API v5
status.msg91.com — no incidents
Business · 2 hour response
₹20,196 · 1,12,200 messages
Dependencies
Changing the default route would move 7 notification rules and 10 templates onto a different provider. Every template would need its DLT id re-mapped first, so this is not a switch to make in term time.



