Last updated 2026-05-04

IT helpdesk

A simple in-app ticketing system. Any employee can submit, IT staff triage from a shared queue. Tickets support screenshot/PDF attachments, deadlines, priority queue, and a morning digest email.

Turning it on

Per-tenant module flag: admin → /admin/settings/modules → toggle IT helpdesk ON. Default is OFF for new and existing tenants (it doesn't show up in anyone's sidebar until you enable it).

To make someone an IT-staff member, set their department field to IT at /admin/employees/<id>/edit. They'll start seeing the IT queue automatically.

What employees see

A single sidebar link in Your work:

  • 🛠️ IT tickets → opens /it/mine which has both:
  • The list of their own tickets with current status + due date
  • A prominent "+ Report an issue" button at the top

Click the button → fill in title + category (Hardware / Software / Network / Account / Other) + description → submit. Attach up to 5 screenshots or PDFs (≤ 5 MB each, image/* or application/pdf) on the form or on any follow-up comment. The IT team is emailed immediately.

When IT updates the ticket — comments, status changes — the reporter gets an email with a direct link.

What IT-staff and admins see

A dedicated IT sidebar section with three items:

  • 🛠️ Report IT issue — same form as above
  • ◆ My tickets — tickets they've personally submitted
  • ≡ IT queue — the shared triage queue

The queue shows every ticket sorted by priority (Urgent → High → Medium → Low), then by due date (overdue surfaces first), then last-update time. Overdue dates render in red. Filter by status (Open / In progress / Resolved / Closed / All) and by category. A 📎N badge in the title column shows attachment count.

Triaging a ticket

Open a ticket from the queue. As IT-staff you get an "IT actions" panel:

  • Claim this ticket — one-click; sets you as assignee, status flips to In progress
  • Status dropdown — Open → In progress → Resolved → Closed
  • Priority dropdown — Low / Medium / High / Urgent
  • Due date picker — sets a deadline; overdue tickets surface in red
  • Assignee dropdown — reassign to another IT-staff member
  • Comment box — visible to the reporter; firing a comment also emails them. Supports attachments.

Logging time on a ticket

Every ticket gets a matching task, IT-<id>: <title>, under the IT Department project, and the ticket's status carries over to the task (resolved or closed → done). Time is not logged automatically. The assignee is added to IT Department so the task shows in their My Day picker.

The quickest way is the ⏱ Log time form on the ticket page: enter the minutes you spent (plus an optional note), and an entry ending now is added to the ticket's task. The page shows the running total next to the linked task. You can still log it from My Day by picking the IT-<id> task.

Logging time doesn't close the ticket; set the status to Resolved or Closed as before.

Manager priority/deadline overrides

Anyone with role manager (or admin) gets a Manager actions panel on a ticket they can view, with just two controls:

  • Priority — promote/demote so urgent items surface
  • Due date — set a deadline to commit to

Managers can't change status or reassign — those stay with IT-staff — but they can flag importance and ETA from any ticket they have access to (their own team's submissions, or all of them if they're admin).

Status semantics

  • Open — fresh ticket, not yet picked up
  • In progress — someone's working on it
  • Resolved — IT thinks it's fixed; reporter gets emailed and can reply if wrong
  • Closed — done, no further activity expected

Morning digest

Every morning at 07:00 UTC, every IT-staff member (and admin) gets one email per company listing all open + in_progress tickets, grouped by priority and sorted by due date. Overdue tickets are flagged inline. The digest is skipped for companies with zero open tickets.

If you want a different time, that's a single line in the prod crontab (/api/cron/it-morning-digest).

Email notifications

When Who gets emailed
Ticket submitted Every IT-staff member + admins (broadcast)
Status change The reporter
Comment added The "other party"
Daily 07:00 UTC All IT-staff for any tenant with open tickets

Attachment policy

  • Allowed types: image/png, image/jpeg, image/gif, image/webp, image/heic, application/pdf
  • Max size: 5 MB per file, 5 files per upload (per submit/comment)
  • Storage: content-addressed via app/storage.py (deduped by sha256)
  • Access: only the reporter, IT-staff, and admins can fetch via /it/attachment/<id>

Out of scope for v1: SLA timers, internal-only comments, asset register, knowledge base, escalation rules. Add as needed via /feedback.


See something wrong or outdated in this article? Report it →