Guide

Emergency Mass Notification for School Districts

Every vendor in this category will tell you their emergency send is fast. Almost none will tell you what happens between the button and the handset, or what their targeting silently cannot do. This page does both, including the parts where we come off badly.

Last reviewed 2026-08-04 ยท Kastr is pre-launch; we publish dated status rather than logos.

Between pressing send and a phone ringing — the mechanics, and the honest column
StageWhat happensWhat it protects againstWhat it does not do
Audience resolutionRecipients are resolved at send time from current records, not from a saved listMessaging families of students who withdrew in OctoberSend-time suppression of withdrawn or opted-out records is not enforced today
Queue claimWorkers claim rows with SELECT FOR UPDATE SKIP LOCKED under a five-minute claim TTLA crashed worker stranding its share of the districtNothing about it is instantaneous; we publish no send-time figure
IdempotencyUnique key per broadcast, person and channelA retry after partial failure double-sending at 6amIt cannot deduplicate two separate broadcasts a human sent twice
Network I/OCarrier calls happen outside the database transactionA slow carrier holding locks across the whole send
SMS attemptPer-segment send to each validated mobile contact pointCarrier filtering of unregistered 10DLC traffic, which is silent
Voice failoverTerminal SMS failure triggers a voice attempt, linked back to the original rowA dead mobile number ending the attemptIt is a failover, not a simultaneous multi-channel blast
Quiet hoursDefault 21:00–07:00, bypassed only for emergency-flagged sendsRoutine traffic training families to mute you
Emergency flagOverrides per-family channel preferences and quiet hours, gated on a separate capabilityAnyone who can send a newsletter triggering an alertThere is no two-person authorisation and no separate emergency console

The targeting problem, stated plainly

This is the part of the page that costs us deals, and it belongs above the pricing rather than below it.

Kastr resolves two audience shapes today: everyone in the district, and an explicitly selected set of people. Grade-level, school-level, bus-route and language presets do not resolve. Our API rejects them with a 400. If your emergency plan depends on messaging one campus while the other eleven carry on, Kastr cannot do that for you today and you should not buy it on the promise that it will.

We are writing that down because the alternative is that you discover it during an incident. When you evaluate any vendor in this category, the test is not whether the dropdown exists. It is whether you watched a message go to one school's families and not another's, in a demo tenant with your own roster loaded.

The related question, which almost nobody asks: what happens at send time to a student who withdrew last month? In our case the audience resolver does not currently check suppression, enrolment status or consent state at send time. That is a real gap, it is on our list, and it is the kind of thing that only surfaces when a family gets an alert about a school their child left.

Cost, and seeing it before you send

SMS and voice are metered. Email is effectively free. That means the cost of an emergency send is decided by two choices made in the composer — which channels, and how long the message is — and in most platforms neither choice shows you a number until the invoice.

Kastr's composer shows a live per-channel dollar estimate as you tick channels and type. Not because cost should govern an emergency send — it should not — but because it changes behaviour on the four hundred routine sends a year that surround it, and because a district-wide voice call is materially more expensive than districts expect. The estimate is a deliberate upper bound, so the real charge lands under it rather than over.

The segment boundary is the part people miss. An SMS runs 160 characters in GSM-7. A message that spills three characters past the boundary becomes two segments across every recipient, which is why the holding statements on the holding statements page are written to fit inside one.

What it costs, without a sales call

Every named competitor in this category makes you ask. ParentSquare's pricing page, fetched 4 August 2026, contains three tiers, four add-ons, 510 words and no dollar figure of any kind; all three columns share the button "Contact sales". Bloomz does publish $3/$5/$7/$9 — but voice and auto-notices start at the $5 tier, and their pricing page canonicalises to their own homepage, so it cannot rank. ClassDojo is free to districts and monetises families directly instead.

Ours: $3.50 per student per year under 5,000 students, $3.25 from 5,000 to 14,999, $3.00 at 15,000 and above. One tier. Emergency sending, voice, translation and the API are included at every size — there is no emergency module to add on. The per-student rate is fixed for 36 months under clause 3.2, and year four onward is capped at the lesser of CPI-U or 5%. Clause 9.4 says we will never market or sell to your families, and clause 11.2 gives you a 90-day exit with a prorated refund if we are acquired or materially change our data terms.

Two questions worth asking every vendor on your shortlist, including us. "Will you write your maximum annual increase into the agreement as a number?" and "Does your delivery report count carrier acceptance as delivery?" Both have one-word answers. Both change the figure you are comparing.

What we do not have

For an emergency evaluation specifically, these are the gaps that matter, and they are all things a competitor will happily raise:

  • No SSO of any kind. No SAML, no OIDC, no MFA. Magic link is our only authentication. For a district standardised on Entra ID that is a genuine operational objection.
  • No mobile push notifications. The family app is a web app.
  • No attachments. You cannot attach a reunification site map to a message. You link to it.
  • No SOC 2. Not audited — we are pre-launch and we publish no uptime figure, because we do not have one worth publishing.
  • No customer references. None. We are recruiting design partners.
  • No load-test numbers. Other vendors publish "40,000 families in 90 seconds" style figures. We have not run that test, so we do not have that number, so we are not going to print one.

What we do have that is unusual in this category: 28 documented REST endpoints, signed outbound webhooks with an HMAC over timestamp and body plus a DNS-resolving SSRF guard, an MIT-licensed CLI and MCP server, a tamper-evident hash-chained audit log, and a published price. Weigh that against the list above honestly. For some districts the list above wins, and that is a legitimate outcome.

Questions people actually ask

What happens between pressing send and a parent's phone ringing?

The audience resolves against current records, delivery rows are written, workers claim them with SKIP LOCKED under a five-minute claim TTL, and each row is attempted per channel with network calls made outside the database transaction. A terminal SMS failure triggers a voice attempt linked to the original row. Row-level idempotency keyed on broadcast, person and channel means a retry cannot double-send.

Do emergency messages override quiet hours?

Yes. An emergency-flagged send bypasses both quiet hours, which default to 21:00 to 07:00, and per-family channel preferences. That override is gated on a separate capability so that routine senders cannot trigger it. Routine messages should never use it — districts that route ordinary traffic through the emergency path train families to ignore the emergency path.

Can we target a single school for an emergency message?

Not in Kastr today. Only district-wide and explicitly-selected-recipient audiences resolve; grade, school, route and language presets do not, and the API rejects them rather than silently expanding. That is a real limitation and we would rather you knew before signing than during an incident.

What does emergency notification cost per student?

$3.50 per student per year under 5,000 students, $3.25 for 5,000 to 14,999, and $3.00 at 15,000 and above, with emergency sending, voice and translation included at every size. There is no emergency add-on module and no per-message fee. The rate is fixed for 36 months and capped afterwards at the lesser of CPI-U or 5%.

What happens when a parent's number is invalid or has not consented?

Contact points carry a validation state and a consent state separately, so a deliverable number that has not consented is distinguishable from a number that is simply dead. Be aware that unregistered A2P 10DLC traffic is filtered by carriers silently rather than rejected with an error, which is the most common invisible failure in school messaging.

One price. Every feature. Locked for three years.

$3.50 per student per year under 5,000 students. No tiers, no add-on modules, no per-message fees. Published on the site because you should not have to book a call to learn a price.