Appearance
Plans & subscriptions
Do this first. You cannot add a single school until at least one plan exists — the system will refuse and send you here. About 15 minutes.
No plan means no schools
Try to add a school before creating a plan and you get:
Please create a subscription plan before adding a school.
This is the first thing to do after installing. Even if you never charge anyone, you still need one plan for schools to sit on.
What a plan is
A plan is what a school is signed up to: a name, a price, and some limits. Each school is on exactly one.
Sidebar → Plans
Creating a plan
| Field | Meaning | Notes |
|---|---|---|
| Name | What schools see — "Starter", "Standard", "Enterprise" | Must be unique |
| Max students | The student count this plan is sold for | See the warning below |
| Price monthly | Monthly price | Enter 0 for a free plan |
| Price yearly | Yearly price | Usually 10–12 months' worth |
| Storage limit (MB) | Space the plan is sold with | Minimum 100 |
| Description | Short summary | Optional |
| Features | Bullet points shown to schools | Optional |
| Trial plan + trial days | Marks this as a trial, 1–365 days | Optional |
| Popular | Highlights it in the list | Optional |
Limits are shown, not enforced
Max students and storage limit are displayed to schools and shown on staff dashboards — but nothing in the system blocks a school from exceeding them.
A school on a 500-student plan can add 600 students. Nobody is stopped and nothing warns you.
Treat these as commercial limits you check and act on, not technical ones. If you need them enforced, that is a development task.
A sensible starting set
| Plan | Max students | Monthly | For |
|---|---|---|---|
| Trial | 50 | 0 | 14-day evaluation, marked as a trial |
| Starter | 300 | your price | Single small school |
| Standard | 1000 | your price | Typical school |
| Enterprise | 5000 | your price | Large school or a group |
Yearly priced at about ten months' monthly is the usual way to reward paying up front.
You can add plans later, and move a school between them at any time.
What happens when a subscription runs out
This is automatic, and it runs off the cron job. Three stages:
| Stage | What happens | Default timing |
|---|---|---|
| Reminder | The school is emailed that renewal is due | 7, 3 and 1 days before |
| Expired | Status changes to expired, school notified | On the end date |
| Suspended | Status changes to suspended, school notified | 3 days after expiring |
Both timings are configurable in settings — the reminder days and the grace period length.
No cron job means no expiries at all
Schools whose subscriptions ended will stay active indefinitely, with no reminders sent, because this runs on the scheduler. Another reason the cron job matters.
Setting a school's end date
When you create a school you can set a custom subscription end date. That is what these three stages count from.
For a school paying you outside the system — bank transfer, cash, an invoice — just extend the end date when they pay. The subscription machinery does not care how the money arrived.
Renewals paid through the system
If you have a payment gateway configured, schools can renew themselves: they pay, the order is marked paid, their end date extends and the status returns to active without you touching anything.
Common questions
Can I change a plan's price later? Yes. Existing schools stay on the plan and pick up the new price at their next renewal.
Can I move a school to a different plan? Yes, at any time, from the school's record.
What if I never want to charge anyone? Create one plan at price 0 and set end dates far in the future. Everything else works normally.
Does a suspended school lose data? No. Suspension blocks access; nothing is deleted.