Review and Approve Hours
Goal: Move hours from "logged" to "counts" — approve what's correct, reject what isn't, and fix the entries that need a small adjustment, so reporting and homeowner sweat equity reflect reality.
Where the queue lives
From the Volunteer hub, open Review Hours. The card shows a count of pending entries — the same number you should be working down each week. Direct link: /volunteers/hours-review.
Hours land in this queue from two places:
- Event close-outs — when a coordinator closes an event, every checked-in volunteer gets a pending hours entry sized to the time they were on site
- Manual entries — when a coordinator logs hours on a volunteer's behalf (or when a volunteer self-reports against an event)
Until you approve them, those hours don't count in engagement reports, grant reporting, annual figures, or homeowner sweat equity totals.
Filtering the queue
The page opens on Pending by default. The tabs let you switch to Approved, Rejected, or All if you need to look something up after the fact.
The filter bar persists in the URL — you can bookmark or share a filtered view:
- Date range — useful for "everything from last weekend's build day" or end-of-month reconciliation
- Activity type — Construction, ReStore, Office/Admin, Event Support, Training, Community Outreach, Other
- Event — pick a specific event to see only the hours generated by that close-out
- Volunteer — type to find one volunteer's pending entries
Clearing all filters returns you to the unfiltered pending list.
Approving a single entry
The green check on each row approves that entry. The volunteer's totals update immediately, the entry moves out of the pending tab, and the hours start counting toward reports.
Approve when:
- The volunteer was on site for the time logged
- The activity type matches what they actually did
- Nothing else looks off
If the entry is close-but-not-quite, fix it first (see Editing) and then approve.
Rejecting an entry
The red X opens a rejection dialog. The reason is required and it's visible to the volunteer on their My Hours page — write it like a note to them, not a private comment to yourself.
Reject when:
- The hours are wrong and you don't have enough information to fix them yourself
- The volunteer wasn't actually present (e.g., a check-in error)
- The entry is duplicate of one already approved
- The entry was logged against the wrong event
Good rejection reasons explain what to do next — "Re-log against the May 18 build day, not the 17th" beats "Wrong event."
Editing duration or notes
The pencil icon opens an edit dialog. Use it for small corrections — duration, activity type, the date, the description. The link to the originating event stays the same.
Common edits:
- A shift was scheduled for 8 hours but the volunteer left after 5 — adjust hours to 5 and approve
- The activity type defaulted to "Construction" but the volunteer spent the day in the ReStore — change it
- The description is missing context that would help future reporting — add it
Editing keeps the entry in its current status. If the entry was pending, it stays pending until you approve.
Bulk operations
For events you trust outright — the post-build-day cleanup is the canonical example — bulk approval saves time:
- Filter the queue to the entries you want to action (typically by event)
- Tick the header checkbox to select everyone on the current page
- If there are more matches across pages, a banner appears: Select all N matching
- Click Approve selected (or Reject selected if you need to push back on the whole batch with one shared reason)
After a bulk action, a summary tells you how many succeeded and lists any that didn't — common reasons are that an entry was already actioned, deleted, or moved out of pending while you were reviewing. Everything that succeeded leaves your selection; everything that failed stays selected so you can retry or look closer.
Bulk operations are capped at 500 entries at a time. If you need to action more than that, narrow the filter and run two passes.
Deleting an entry
The trash icon deletes the entry permanently. Use it when:
- The entry is a clear duplicate
- The entry was created in error (wrong volunteer, wrong event, no work was done)
For anything the volunteer should know about, reject instead of delete. Rejection leaves a record visible to them; deletion just makes the entry vanish. The system only allows deleting pending entries — once approved, hours need to be rejected (which retains the audit trail) rather than deleted.
Common reasons hours get flagged
- Mismatched check-in / check-out times — the volunteer forgot to check out, so the close-out estimated their time
- Activity type mismatch — coordinators sometimes pre-fill an activity type that doesn't match what actually happened
- Wrong event — a volunteer registered for two events the same week and the hours landed against the wrong one
- Missing description — required for grant reporting on certain activity types
A weekly triage of pending hours keeps these from piling up and keeps your reports trustworthy.
How approved hours flow downstream
Once approved, an entry counts toward:
- Engagement reports — total hours per volunteer, per period, per activity type
- Grant reporting — the figures funders see come exclusively from approved hours
- Annual summaries and recognition — milestone tracking (100, 500, 1000 hours) fires off the running total of approved hours
- Homeowner sweat equity — when the activity_type and event are tied to a homeowner's project, approved hours roll up to the partner-family record
Pending hours are invisible to all of the above. Rejected hours are excluded permanently.
Related
- Close an Event and Record Hours — how hours arrive in the pending queue
- Run Hours and Engagement Reports — what approved hours feed into
- Maintain Volunteer Profiles — fix the underlying record when hours keep getting flagged for the same volunteer