School objectives β
An objective is a single line item a student must complete before they're considered done with the school. For a Foundations course, objectives might be "Attend session 1", "Complete homework week 2", "Pass final assessment". For a leadership track, "Shadow a small-group leader for 3 weeks", "Submit testimony", "Pass interview". The objectives list is the curriculum that defines what "graduating" actually means.
Adding objectives to a school β
Open Schools β [School] β Objectives. The list starts empty for a brand-new school. Click Add objective to start.

Each objective takes:
| Field | Notes |
|---|---|
| Title | The line item β e.g. "Attend session 1: Who is Jesus?" |
| Order | Numeric position; reorder by drag |
| Required for graduation | If checked, the student can't be graduated until this is marked complete |
| Notes | Optional β additional context, expectations, due timing |
Save and the objective appears on every student's enrolment view.
Reordering and renaming β
Drag objectives by their handle to reorder. Reordering only affects display β it doesn't reset anyone's completion. Renaming an objective rewrites the title on every existing enrolment row that references it; the completion status for each student stays the same.
Per-student completion β
Open any student's enrolment row and you'll see the objectives list with a checkbox next to each:

Check an item and it's marked complete with your user ID and a timestamp. Uncheck and it's reverted (the row stays for audit purposes but the completion is nulled out). Each completion writes to student_objective_completions:
| Column | Value |
|---|---|
enrolment_id | The enrolment row |
objective_id | The objective |
completed_at | Timestamp |
completed_by | Who marked it |
grade | Optional letter or numeric grade |
notes | Optional per-completion notes |
Optional grading β
If your school awards grades, turn on Settings β Grading per school and pick a scheme (letter, percentage, pass/fail). When grading is on, checking an objective opens a small dialog where you enter the grade. The grade shows on the student's transcript and is averaged for the cohort report.
Required vs optional objectives β
The Required for graduation flag lets you build a curriculum with some "graded" items and some "encouraged" items. A student missing an optional objective can still graduate; missing a required one blocks graduation.
When you try to record a graduation for a student with unchecked required objectives, the confirmation dialog lists them and forces you to acknowledge before proceeding. You can override with a note ("graduated by petition") β the override is logged.
Don't make every objective required
A common mistake is marking 15 of 15 objectives as required, then having to constantly override. Better: mark the 4-5 truly load-bearing objectives as required (final assessment, attended X of Y sessions, submitted testimony) and let the rest be "encouraged".
Bulk-checking objectives β
For session-by-session schools where everyone attending session N gets that objective checked, use Schools β [School] β Bulk update objectives. Filter to attendees, pick the objective, and check it across the whole list at once. The action shows up in the bulk-actions monitoring page.
Workflows β
You can trigger a workflow on objective completion β for instance, send a "You've completed week 3! Here's the homework for week 4" WhatsApp message. See Workflows β Triggers.
Permissions β
Adding, editing, or reordering objectives requires schools.write. Marking student completions requires schools.write_completions β which is normally granted to school leaders specifically rather than every Administrator, so that classroom volunteers can mark attendance without being able to restructure the curriculum.
Next steps β
- Recording a graduation β what happens when a student completes the required objectives.
- Reports β completion rate, time-to-completion, transcript per student.
- Workflows β automate follow-up when objectives are completed.
- Bulk actions β Monitoring β for session-wide bulk completion updates.