Adding Staff and Changing Their Role
Inviting a staff member and assigning them a role uses Manage Team — a different permission from the one needed to design the roles themselves (see Creating and Editing Custom Roles).
Adding a staff member
Go to Team → Users.
Choose Add staff.
Enter their name, email, and the role to assign.
Save — a branded invite email goes out with a Supabase set-password link.
If a staff member has no email of their own
Every staff member needs their own login, so each one needs a different email address. If some staff don't have a personal email, you can give them an address that still arrives in the school's own inbox, by adding a plus sign and their name before the @.
- School email: creativekids@gmail.com
- Bursar: creativekids+bursar@gmail.com
- Front desk: creativekids+frontdesk@gmail.com
- Or by name: creativekids+tunde@gmail.com
Fees101 treats each one as a separate login, but every invite and password-reset email is delivered to the school's inbox (creativekids@gmail.com in this example). Whoever reads that inbox opens the invite, then lets the staff member set their own password.
Each staff member still logs in with their own address and password, so the audit log shows exactly who did what. Never let two people share one login.
The cap-delegation rule
One login (one email) works across the whole platform — the same rule that applies to parent-family phone matching applies here to staff emails: each one is unique.
Changing a staff member's role
Open the staff member from Team → Users.
Choose Change role, select the new role, and type a reason for the change.
The same owner-only and cap-delegation rules apply to a role change as to the initial assignment.
Resetting a password or changing a login email
Reset password sends a Supabase recovery email. Changing a login email requires a typed reason; when it's admin-initiated it skips the usual double-opt-in confirmation, and a notice goes to both the old and new address so neither side is surprised. You can also resend an invite, and "last signed in" is read live from Supabase Auth rather than cached.
