Every “how many hours did I work last week?” and “how much PTO do I have left?” is a small interruption — and across a team they add up to a steady drip of Slack messages, texts, and hallway questions landing on whoever runs HR. Employee self-service is the fix: give staff a place to answer those questions themselves, and the drip stops.
If you already run a WordPress site, you don’t need a separate portal or another cloud login to do it. This is a look at what employee self-service for WordPress actually means, what staff can see and do, and how to set it up without handing anyone the keys to information that isn’t theirs.
What “self-service” means when employees are WordPress users
The foundation matters here. In Punchwell, employees are WordPress users — a person with the hrm_employee role is an employee, and their profile, hours, and leave live in your own WordPress database. Self-service isn’t a bolt-on portal syncing to a vendor cloud; it’s information the site already holds, shown to the person it belongs to.
That has three nice consequences:
- No new logins. Staff sign in to the site they already use. Nothing new to provision, nothing new to forget.
- The data stays yours. Self-service reads from your database on your server — it doesn’t ship anything out. There’s no outbound sync to a third party.
- You place it wherever you want. Because the pieces are ordinary widgets and blocks, you drop them onto an internal page, a private dashboard, or an intranet home — no separate app to send people to.
What staff can see and do themselves
Self-service is delivered as a set of widgets — each one also available as a Gutenberg block, and the clock, holidays, and notices also as classic widgets — so you assemble exactly the view you want. The building blocks include:
- A clock to punch in and out (
[hrm_clock]). - My hours — an employee’s own worked-time summary, so “what did I do last week?” is self-serve (
[hrm_my_hours]). - My time off — their own leave and PTO balances, drawn from the accrual ledger, so “how many days do I have left?” answers itself (
[hrm_my_timeoff]). - Leave requests — submit a request, and self-cancel one that’s still pending (
[hrm_leave_request]). - Who’s in — a live view of who’s currently clocked in (
[hrm_whos_in]). - Team, holidays, and notices — the roster, the holiday calendar, and the company announcement board (
[hrm_team],[hrm_holidays],[hrm_notices]).
Managers get a piece of their own: an approvals inbox ([hrm_approvals]) that’s office-scoped, so a manager sees the requests that are actually theirs to action rather than the whole company’s.
To make assembly quick, Punchwell ships three ready-made block patterns — a Staff self-service portal, a Lobby kiosk, and an Intranet home — so you can start from a sensible layout instead of a blank page and adjust from there.
Letting people see their own pay — carefully
Hours and PTO are one thing; pay is more sensitive. Self-service handles that boundary explicitly.
There’s an opt-in “My Pay” view where each employee sees only their own rate, hours, estimated gross, payment method, and key dates — never anyone else’s, and never the company-wide totals. Those aggregate dollar figures on the payroll report stay admin/manager-only. So you can give people a straight answer to “what’s my rate and roughly what will I be paid?” without exposing the payroll for the whole team. It’s off by default; you turn it on when you’re ready.
Why this beats a group chat or a shared spreadsheet
Plenty of small teams run “self-service” informally — a pinned message, a shared sheet, a manager who fields the questions. It works until it doesn’t. A few reasons a proper self-service surface is worth the small setup:
- Fewer interruptions. The routine questions — hours, balances, who’s on today — answer themselves, so HR isn’t the lookup service.
- One source of truth. Balances come straight from the accrual ledger, not a spreadsheet someone forgot to update, so the number an employee sees is the number that’s real.
- Cleaner requests. A leave request through the widget lands in the right approver’s inbox with a record attached, instead of a text that gets lost. And because staff can self-cancel a pending request, plans that change don’t require a second message to someone else.
- Less shoulder-surfing risk. People see their own information, scoped by role — not a shared document where everyone can see everyone.
A note on trust and control
Self-service is only comfortable if you trust where the data lives and who can see what. Two things make that easier here.
First, it’s self-hosted. Employee hours, balances, and pay details never leave your WordPress site — no cloud service in the middle, no data call-home. For a clinic, agency, or any business that would rather not put staff data in someone else’s cloud, that’s the whole point.
Second, visibility is role-scoped by design. Employees see their own records; managers see their office’s approvals; the sensitive dollar totals stay with admins and managers. Self-service widens access to your own information without widening access to everyone’s.
The bottom line
Employee self-service for WordPress turns the steady stream of “how many hours / how much PTO / who’s in today” questions into something staff answer themselves — from the site they already sign in to, with their data staying on your server. Add a clock, a “my hours” and “my time off” view, a leave-request form, and — if you want it — an opt-in “My Pay” view, and HR stops being the help desk for questions people can answer on their own.
If you’d like to see the full set of self-service widgets and how they fit together, start with the employee self-service feature page, or take the broader product tour to see where it sits alongside the time clock and leave tools.
Punchwell, by Sturdyhaus — a self-hosted WordPress time clock and HR suite. Your employee data stays in your own WordPress database: no cloud, no data call-home.