Appearance
Setting up SMS
Attendance alerts, fee reminders and login details all go by SMS. About 30 minutes, plus whatever your provider takes to approve you.
Decide who pays first
There are two ways SMS works here, and it is a business decision, not a technical one.
| You provide SMS | Each school brings its own | |
|---|---|---|
| Who has the provider account | You | The school |
| Who pays the provider | You | The school |
| How the school pays | Buys credit from you — the wallet tracks it | Directly to their provider |
| Your margin | You set the rate per message | None |
| Setup effort per school | None | Each school does its own |
Most platform owners do both: supply SMS as a paid service, and let larger schools plug in their own account if they already have one. A school with its own provider configured always uses it.
Choose a provider
32 providers are supported:
Africa's Talking · Beem · BulkSMS · BulkSMS BD · Clickatell · ClickSend · Fast2SMS · Gupshup · Hubtel · Infobip · Kaleyra · MessageBird · MSG91 · Msegat · Notify.lk · OneWaySMS · Plivo · Semaphore · Sinch · SMSAPI · Sparrow SMS · Telnyx · Termii · TextLocal · 360dialog · Twilio · 2Factor · Unifonic · Vonage · Zenvia · Zenziva — plus Custom, for any provider with a normal HTTP API that is not on the list.
Pick one that operates in your country. SMS is priced and regulated locally, and a provider that is cheap in one country is often unusable in another.
Schools in India: read this before you buy credit
Indian regulations require every sender to register with DLT before a single message can be delivered. You must register your business, your sender ID (the 6-character name recipients see) and each message template with the operator.
Messages that do not match an approved template are rejected by the network — not by this system — and the failure often shows as "sent" at your provider.
Allow several days for approval, and start it before you promise SMS to a school. Configuration lives under Sidebar → Comms Wallet → Meta / DLT Config.
Add your provider
Sidebar → Settings → SMS
- Add a gateway and choose your provider from the list
- Fill in the credential fields — these change per provider, and the form shows only the ones yours needs
- Save, then use the test send to send yourself a real message
You should receive an SMS within a few seconds. If it does not arrive, fix it now — everything else assumes SMS works.
Test with a number that is not yours
Providers often deliver instantly to the account holder's own number while failing for everyone else. Test with a colleague's phone.
Turn on delivery reports
Without this, the system knows a message was accepted by the provider — not whether it arrived. With it, failures are detected and the school's wallet is automatically refunded for messages that never landed.
On the same Settings → SMS page, open Delivery reports (DLR webhooks). It lists a URL for each provider that supports them. Copy the URL and paste it into that provider's delivery report or status callback setting in their dashboard.
That URL is specific to your installation
It contains a token unique to your system. Do not post it publicly, and do not copy one from another installation — it will not work and the reports will be rejected.
Not every provider supports delivery reports. Only those that do appear in the list.
Charging schools for SMS
If you are supplying SMS, this is where the money is managed.
Sidebar → Comms Wallet
| Screen | What it does |
|---|---|
| Wallet Oversight | Every school's balance and usage |
| Rate Cards | What you charge per message, per country |
| Meta / DLT Config | WhatsApp and Indian DLT settings |
Set your rate above what your provider charges you — that difference is your margin. Schools are blocked from sending once their balance runs out, so nobody can run up a bill you have to pay.
If SMS is not arriving
| Check | What it means |
|---|---|
| Is the cron job running? | SMS is queued, not sent instantly. No cron means nothing sends and nothing errors — check this first |
| Does the test send work? | If yes, your credentials are fine — the problem is the queue or the school's balance |
| Does the school have wallet balance? | Sending stops at zero. Check Wallet Oversight |
| India: is the template DLT-approved? | An unapproved template is rejected by the network, often reported as "sent" |
| India: does the message match the template exactly? | DLT matches the wording. Extra or altered text is rejected |
| Is the sender ID approved? | Unapproved sender IDs are dropped silently by most operators |
| Are messages marked failed but the balance not returned? | Delivery reports are not set up — see above |
Same trap as email
The test send goes out immediately, but real messages go through the queue. If your test arrives and real messages never do, it is the cron job — not the provider.