Most HR admin isn’t hard — it’s repetitive. “How many vacation days do I have left?” “How many hours have I worked this week?” “Can I take next Friday off?” Punchwell puts those answers in front of your staff, on the WordPress site you already run, so they stop landing in your inbox and on your desk.
It’s a set of front-end widgets — My Hours, My Time Off, a team directory, and a leave request form — each one scoped so an employee sees only their own data. No new app to roll out, no cloud account to provision, no per-seat fee as you add people.
Get Punchwell Pro — $99/yr → · See the feature tour
Free on WordPress.org. Unlimited employees. No card required.
The front-end widgets your staff actually use
Punchwell’s front-end add-on turns HR into shortcodes and Gutenberg blocks you drop onto any page of your site. Build a staff portal in an afternoon — or start from one of the three ready-made block patterns (Staff self-service portal, Lobby kiosk, Intranet home) and edit from there.
Every widget below is real and shipped. Place the ones you want, skip the rest.
My Hours — [hrm_my_hours]
Each employee sees only their own worked hours and an estimated gross for the current pay period — drawn straight from their real punches and pay rate. It’s an opt-in screen: you turn on “Employee self-service” in the payroll settings when you’re ready, and it needs the Payroll add-on active.
Honest boundary, stated plainly: this is a view, not a paycheck. Punchwell exports payroll data; it does not move money. Staff see what they’ve earned so far — they don’t get paid through it. That’s deliberate, and it’s why there’s no payment-processor or tax-custody risk anywhere in the suite. (Admins and managers get the full My Pay estimate inside wp-admin, and the company-wide payout report stays admin/manager-only.)
My Time Off — [hrm_my_timeoff]
Every employee sees their own paid leave balances at a glance, drawn straight from Punchwell’s PTO accrual engine. Balances build as time accrues (monthly, per hour worked, or as an annual grant) and draw down when paid leave is approved — so the number on screen is the number on the books. No spreadsheet, no “let me check and get back to you.”
Leave request — [hrm_leave_request]
Staff submit a time-off request from the front end, pick the leave type, and send it into the approval workflow. They can self-cancel a pending request before it’s decided — so a change of plans doesn’t become another message to you. Managers get an office-scoped approval inbox ([hrm_approvals]) to clear requests without digging through email.
The full HR app + deep links — [wpSpear_hrm]
Because employees are WordPress users, their record is already in the system you run — there’s nothing new for them to learn. The front-end app shortcode renders the whole self-service screen on a public page, and deep-link aliases ([hrm_dashboard], [hrm_attendance], [hrm_leave], and more) boot it straight onto a specific tab — so staff manage their own details without ever touching wp-admin.
And the small-but-useful ones
[hrm_clock]— clock in / out from the page (subject to your office-IP lock and any GPS geofence — see below).[hrm_whos_in]— who’s clocked in right now.[hrm_team]— the team directory (name, photo, job title, department — no pay or personal data).[hrm_holidays]and[hrm_notices]— the company holiday calendar and the announcement board.
Clock, Holidays, and Notices are also available as classic widgets; all of the above are Gutenberg blocks too.
What employees can — and can’t — see
Self-service only saves you time if it’s safe to hand to staff. Punchwell scopes every widget to the person logged in, and keeps the sensitive controls where they belong.
Employees can see:
- Their own worked hours and estimated gross for the period (when self-service is enabled).
- Their own paid time-off balances and history.
- Their own profile, hours, and attendance.
- The shared, non-sensitive stuff: holiday calendar, company notices, who’s in, the team directory.
- A leave request form — and the ability to cancel their own pending requests.
Employees can’t:
- See anyone else’s hours or balances. My Hours and My Time Off show the logged-in user and no one else.
- Set or change their own pay rate. A pre-launch audit caught exactly this and closed it — the payroll compensation fields now require a payroll capability and edit permission, so an employee can’t quietly bump their own rate on their own profile.
- See the employer payout report or any company-wide dollar figures — those are admin/manager-only.
- Approve their own leave. Requests go into the workflow; a manager or admin decides.
The result: staff self-serve the routine things, and the numbers that matter stay locked to the people who should touch them. For finer control over who sees which area, the Permission add-on lets you define custom roles and toggle access per tab — see the add-on modules.
Less HR back-and-forth
Every self-service answer is one you don’t have to give. The widgets quietly absorb the questions that usually interrupt your day:
- “How much vacation do I have?” → My Time Off, live balance.
- “How many hours have I worked this week?” → My Hours.
- “Can I take Friday off?” → Leave request form, straight into the workflow.
- “Plans changed — cancel that?” → Self-cancel, no message to you.
- “What’s the holiday schedule?” → Holidays widget.
- “Did my request go through?” → Manager approval inbox, no email thread.
And it works alongside Punchwell’s daily HR reminder digest, which surfaces birthdays, work anniversaries, probation ends, contract and visa expiries, and missed punches — so the dates you’d otherwise track by hand come to you, while the routine questions go to self-service. Fewer interruptions, fewer dropped balls, and a record in your own database either way.
It runs inside the WordPress site you already have
This is the part that makes self-service painless to roll out: there’s no second system.
- No new app to install for staff. It’s pages on your website. Send a link.
- No cloud account, no separate server. If you already run a WordPress site, you already have everything you need — Punchwell installs like any other plugin and updates from your dashboard.
- Your data stays on your server. Self-service reads from your own WordPress database. Nothing syncs to a vendor cloud — all of the original’s outbound network code was removed and verified, so there’s no data call-home — the free version makes no outbound calls at all, and Pro’s only outbound call is license validation, never your data. (The only external content is optional YouTube tutorial embeds and standard Gravatar avatars.)
- Unlimited employees, flat price. Roll self-service out to 12 people or 120 — the bill doesn’t change. Per site, never per seat — one flat $99/year.
And because self-service shares the same engine as the rest of Punchwell, the front-end clock obeys your office-IP clock-in lock — the flagship control that refuses an off-site punch server-side instead of just logging a location. Staff can self-serve their hours and time off from anywhere, while clock-in stays locked to your office network (with an optional GPS geofence on top, your call). See exactly how that works on the office-IP clock-in lock page, or how the GPS fence, kiosk, and mobile punch fit together on the GPS geofence, kiosk & mobile punch page.
For a privacy-sensitive buyer — a clinic, a dental practice, an agency — “self-service without a cloud” is the whole point.
FAQ
Do employees need their own login or a separate app? No separate app. Employees are WordPress users, so they sign in to the site you already run and the self-service widgets show their own data. On a shared device, the kiosk clock lets staff punch with a short code and PIN instead — see GPS geofence, kiosk & mobile punch.
Can an employee see another person’s hours or balances? No. My Hours and My Time Off are scoped to the logged-in user. The company-wide payout report and all dollar totals are admin/manager-only.
Can staff change their own pay rate through self-service? No. Pay rate and compensation fields require a payroll capability and edit permission to change — a pre-launch audit specifically tightened this so an employee can’t edit their own rate on their own profile. The self-service hours view is read-only for the employee.
Does the My Hours view actually pay people? No — and that’s by design. Punchwell exports payroll data (CSV, plus SurePayroll and Gusto connectors); it does not move money. Self-service lets staff see their estimated gross and hours; payment happens through your payroll provider, so there’s no payment-processor or tax-custody risk. More on the payroll export page.
Is my staff’s data sent to a cloud? No. Self-service reads from your own WordPress database. There’s no data call-home — all of the original’s outbound network code was removed and verified, and the only outbound call Pro makes is validating its license key, never your data. Your roster, hours, and balances stay on your server.
Do I have to build the portal from scratch? No. Drop in individual widgets (each is a shortcode and a Gutenberg block), or start from one of the three ready-made block patterns — Staff self-service portal, Lobby kiosk, or Intranet home — and edit to taste.
Hand the routine questions to your staff
Put My Hours, My Time Off, and leave requests on the site you already run — and get the repetitive HR questions off your plate. Per site, never per seat. Unlimited employees. Your data on your server.
Get Punchwell Pro — $99/yr → · See the full feature tour · How leave & PTO accrual works →
Free on WordPress.org. Per site, not per seat. Renewal price locked if you never lapse. GPL, self-hosted — your data stays on your server.
Punchwell, by Sturdyhaus, is an independent, third-party maintained fork of the GPL-licensed “WP Human Resource Management” plugin. Sturdyhaus is not affiliated with, endorsed by, or sponsored by wpspear, weDevs, or the original author. Product names are referenced descriptively only.