Skip to content

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 SMSEach school brings its own
Who has the provider accountYouThe school
Who pays the providerYouThe school
How the school paysBuys credit from you — the wallet tracks itDirectly to their provider
Your marginYou set the rate per messageNone
Setup effort per schoolNoneEach 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

  1. Add a gateway and choose your provider from the list
  2. Fill in the credential fields — these change per provider, and the form shows only the ones yours needs
  3. 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

ScreenWhat it does
Wallet OversightEvery school's balance and usage
Rate CardsWhat you charge per message, per country
Meta / DLT ConfigWhatsApp 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

CheckWhat 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.