Docs Menu

Docs

How To Mark Student Attendance

Record day-wise student attendance with class-section filters, row-level status controls, bulk actions, attendance history, and export-ready roster tools.

Search docs

Search by workflow, module name, or operational keyword.

Documentation search is ready.

Last updated: March 14, 2026

This guide explains how to mark daily student attendance from the Student Day Wise Attendance page in Migdafa Smart School.

Best for

Class teachers, attendance officers, and academic operations teams handling daily attendance entry and follow-up.

Requires

Permission to view and mark student attendance, plus the correct session, class, section, and date filters.

Result

The selected class roster is loaded for the chosen date so attendance status, notes, follow-up, and exports can be handled from one screen.

Before you start

  • Confirm the academic session you want to mark attendance for.
  • Make sure the target class and section already have active students in that session.
  • Decide whether you will mark individually, use bulk actions, or both.
  • Prepare any late, half-day, leave, or remark information that teachers expect to capture.

Important: the roster is filter-driven. If the session, class, section, and date do not match an active student group, the page will load but the roster will remain empty.

Attendance -> Student Day Wise Attendance

Step 1: Open Student Day Wise Attendance

Go to Attendance in the sidebar and choose Student Day Wise Attendance. This page combines filtering, statistics, row-level attendance controls, notifications, history, and export actions.

Student Day Wise Attendance page showing filters, summary cards, bulk action buttons, and a student roster table.
The day-wise attendance workspace combines filter controls, summary cards, bulk actions, and a row-based roster for the selected class-section.

Step 2: Set the roster filters

Use the filter bar to define the working context:

  1. Session
  2. Class
  3. Section
  4. Date

The page is designed to load the roster only when the required context is complete. The filter bar also includes a search field for narrowing the roster by admission number, name, or email after the student list is loaded.

Step 3: Load the roster

Click Load after the filters are correct.

When the roster is available, the page shows:

  • summary cards for total students, present, absent, late, half day, and attendance percentage
  • bulk action buttons
  • the student roster table
  • pagination controls

If the selected filters do not match active students, the page shows a no-students state instead of the roster table.

Step 4: Understand the roster columns

Each student row includes:

  • roll number
  • admission number
  • student identity
  • Status
  • In Time
  • Out Time
  • Remark
  • View History

The Status control is the main attendance input. Available attendance states in the current UI include:

  • Present
  • Late
  • Absent
  • Half Day
  • Holiday
  • On Leave

Step 5: Mark attendance row by row

Use the Status dropdown on each row to mark the student.

What to expect from the row controls:

  • attendance is intended to save from the row-level action
  • In Time and Out Time fields are available for applicable statuses
  • time inputs are disabled for states such as absent and holiday/half-day-type records where timing should not be captured
  • Remark can be used for extra operational context

This row-level method is best when attendance outcomes are mixed across the class.

Step 6: Use bulk actions when the whole class matches

The page also exposes bulk buttons:

  • Mark All Present
  • Mark All Absent
  • Notify Absentees
  • Export CSV

Use bulk actions when most or all students share the same attendance outcome for the day. This is faster than updating every row manually.

Step 7: Review summary cards and percentages

After the roster loads, the summary cards help you monitor the attendance distribution for the selected date:

  • total students in the roster
  • current present count
  • current absent count
  • late count
  • half-day count
  • attendance percentage

This is useful for quickly checking whether the day has been fully marked or still needs review.

Step 8: Open attendance history when needed

Use View History on a student row when you need a quick attendance review for that student.

This is useful for:

  • checking repeated absences
  • verifying whether a leave or half-day pattern is consistent
  • confirming the student’s recent attendance before contacting guardians

Step 9: Export or notify after review

After the roster is marked:

  • use Export CSV when attendance records need to be shared or archived
  • use Notify Absentees when absent guardians or contacts should receive follow-up communication

These actions keep the attendance page connected to reporting and operational communication instead of making it a dead-end data-entry screen.

Verify the result

Use this checklist after attendance entry:

  • confirm the correct session, class, section, and date are still selected
  • review a few rows to ensure the intended status was applied
  • confirm the summary cards reflect the class outcome
  • add remarks where the school needs later follow-up
  • export or notify only after the roster looks correct

Expected result: the selected class roster is loaded for the chosen date and attendance can be managed from one place using row-level status updates, bulk actions, history checks, and export or notification tools.

Troubleshooting

IssueLikely causeWhat to do
Roster stays emptyThe selected session, class, section, or date does not match active studentsRecheck the filter combination and reload
Section options do not match the classThe class filter was changed and the section list refreshedRe-select the correct section after changing class
In Time and Out Time remain disabledThe selected attendance status does not accept time inputUse a status such as Present or Late when time fields are required
Bulk actions are disabled or not usefulThe roster has not been loaded yet, or follow-up should be handled row by rowLoad the roster first, then choose the correct action path
Row-level update returns a class-section mismatch errorThe current environment may have a filter-state mismatch between the loaded roster and the submitted rowRefresh the page, reload the roster, and confirm the active filters before retrying

Related docs