If you run a dental office or a small medical practice, your timekeeping problem is specific. Your front desk, hygienists, assistants, and back-office staff are almost all on-site — they’re physically in the building during their shift. So the question isn’t “where in the world is this person?” It’s simpler and stricter: were they actually at the practice when they clocked in?
That single difference shapes everything below. This is a practical guide to time tracking for a dental or medical practice on WordPress — with two things most generic time clocks get wrong for healthcare: keeping staff and operational data on your own server, and enforcing on-site clock-in instead of just recording a GPS dot.
If your practice already runs a WordPress site (for your booking page, patient info, or a brochure site), you can add HR and a time clock to it without signing up for another cloud service.
Why dental and medical practices have a unique time-tracking problem
A few things make practice timekeeping different from, say, a field-service crew:
- Almost everyone is on-site. Hygienists, assistants, and front-desk staff work in the operatory or at the desk. There’s rarely a legitimate reason to clock in from a parking lot or a couch at home.
- Shifts are tight and overlapping. Early-bird hygiene appointments, a front desk that opens before the dentist, staggered lunch coverage. Small rounding and grace differences add up across a year.
- Buddy punching is the real leak. “Clock me in, I’m running five minutes late” is a common form of time theft in close-knit small teams. A coworker punching for someone who isn’t there yet is exactly what an honest clock should refuse.
- Data sensitivity is high. Healthcare practices are careful — by habit and by obligation — about where employee and operational data lives. Putting your roster, schedules, and timesheets in yet another vendor’s cloud is one more place to worry about.
Most SMB time clocks were built for the first kind of business (mobile crews), not the second (a fixed location with on-site staff). They lead with GPS geofencing — which needs a phone app and can be faked. For a practice where everyone is supposed to be in the building anyway, there’s a tighter control available.
The on-site control most time clocks skip: an office-IP clock-in lock
Your practice connects to the internet through a known network. That network has a public IP address (or a small, predictable set of them). An office-IP clock-in lock uses that fact: you flag a staff member as “office-only,” and the clock will refuse a punch that doesn’t come from your practice’s network.
This is the flagship feature of Punchwell, a self-hosted WordPress time clock. A few things worth being precise about, because the difference matters:
- It refuses the punch server-side — it doesn’t just log a location. When a flagged employee tries to clock in from off-network, the punch is rejected, not quietly recorded for someone to notice later.
- It’s per employee. Lock your on-site hygienists and front desk to the building, while leaving a remote biller or a practice manager who works from home free to clock in from anywhere. One setting per person.
- The allowlist has real depth. Single IPs, whole CIDR blocks (a range like
203.0.113.0/24, useful if your ISP rotates within a block), and address ranges — IPv4 and IPv6. You can set allowed addresses company-wide, per office (handy if you run two locations), and per employee. Those scopes are unioned — adding an address only ever widens access, it never locks someone out by accident. - You choose how strict. Block (hard refuse), warn, or flag modes, plus an optional clock-in time window so punches are only accepted around shift start. There’s also an optional email to your office manager when an off-site punch is refused.
Here’s the honest framing, because it’s the reason this works: GPS can be spoofed from a phone sitting at home; an office-IP lock can’t be faked that way. Punchwell does also ship a GPS geofence, a kiosk clock, and a mobile/PWA punch screen if you want them — a lobby tablet your staff tap with a short code and PIN is a popular setup for a front desk. But treat GPS as a deterrent and the IP lock as the hard control. For a fixed-location practice, the IP lock is usually all you need.
A note on multiple locations: if you run a two-office group practice, each location can carry its own allowed IPs, so staff are locked to whichever building they actually work in.
Patient-data privacy: why self-hosted matters for healthcare
A time clock isn’t your practice management system, and it isn’t where patient records live. But it does hold your staff roster, schedules, hours, and sometimes pay data — and for a healthcare practice, “where does this data physically sit?” is a question worth asking of every tool you adopt.
A typical SaaS time clock answers: in our cloud. Punchwell answers differently — it’s self-hosted, which means it lives inside the WordPress site you already run and your data stays in your own database:
- No cloud holds your timesheets. Employees are just WordPress users; attendance records are rows in your own database.
- No data call-home. All of the original’s outbound network code was removed from the plugin and verified — the free version makes no outbound calls at all, and there are no background syncs; the only outbound call Pro makes is validating your license key against our own billing server, never your data. (The only external content is optional YouTube tutorial embeds and Gravatar avatars, both standard WordPress.) The code has been security-audited and is PHP 8 / WordPress 7 / MySQL 8 clean.
- It’s GPL and yours. You’re not locked into a vendor that could disappear or get acquired.
To be clear and honest about this: self-hosting is not a HIPAA certification. No plugin can hand you compliance — that comes from how you configure your server, access controls, backups, and agreements. What self-hosting does is keep your staff data on infrastructure you already control instead of adding another third party to the picture, which removes one variable from your privacy obligations. That distinction matters, and any vendor claiming a plugin “makes you HIPAA compliant” is overstating it.
What else a practice actually needs from an HR plugin
A time clock alone isn’t enough to run the people side of a practice. The good news is the on-site clock-in is one feature in a broader self-hosted HR suite, so you’re not stitching together five tools:
- Shift policies, rounding, and grace per department — so your 7:00 a.m. hygiene start and your 8:30 a.m. front-desk open are each handled correctly, with auto-clock-out for the assistant who forgets to punch at the end of a long day.
- Leave and PTO accrual with an approval workflow and a one-click holiday import — accrue PTO monthly, per hour worked, or as an annual grant, with caps and carryover, and let staff see their own balances.
- Payroll export that calculates the period (regular plus weekly and daily overtime, double-time, and holiday pay) and hands you a clean CSV — or a SurePayroll or Gusto file — for your payroll provider. Worth saying plainly: it exports payroll data, it does not move money. There’s no payment processing and no tax custody, which is deliberate — it keeps that risk off your plate. You take the file to whoever cuts the checks.
- Day-by-day attendance reports with manual punch edits, for the inevitable “I forgot to clock back in from lunch.”
- HR reminders and onboarding checklists — birthdays, work anniversaries, contract and credential expiry dates (useful for tracking when a hygienist’s certification is due), and a tick-off list for new-hire paperwork.
- Employee self-service — staff check their own hours, time-off balances, and pay estimate without emailing the office manager.
Because employees are ordinary WordPress users, there’s nothing new for your team to log into — and unlimited employees on every tier, so a growing practice doesn’t get billed for hiring.
What it costs versus a SaaS time clock
This is where a practice on WordPress can save real money, because most cloud time clocks bill per user, per month — a model that punishes you for growing.
For a 25-person practice (front desk, hygiene, assistants, and back office), here are approximate annual costs as of June 2026 — vendors change pricing often, so confirm current rates before you decide:
- Buddy Punch — roughly $1,520/year. (Notably, Buddy Punch does ship IP restriction and GPS — it’s a capable product — but it’s per-user SaaS and your data lives in their cloud.)
- Deputy — roughly $1,950/year.
- When I Work — roughly $2,100/year.
Punchwell is a flat annual price: a free community tier on WordPress.org (base HR plus a basic single-office IP lock), then $99/year per site — everything bundled, unlimited employees, no per-seat fee. A second location doesn’t change your bill the way a per-user cloud clock would.
If you’re comparing WordPress options specifically: WP ERP is the closest, but its attendance IP whitelist is global only — it’s everyone or no one — whereas Punchwell’s lock is per-employee and per-office, which is the whole point for a practice with a mix of on-site and remote staff.
Setting it up: a realistic order of operations
- Confirm your office IP. Most small practices have a static public IP from their ISP; if yours rotates, ask for the CIDR block it lives in. (Punchwell shows a one-click “use this IP” helper on the setup screen.)
- Add your staff — they become WordPress users with an
hrm_employeerole. Assign each to a department and give that department a shift policy. (Those three steps, in order, are what enables clock-in.) - Flag your on-site staff as office-only and add your office IP to the allowlist. Leave genuinely remote staff unflagged.
- Start in “warn” mode for a week if you want to see who’s punching from where before you switch to hard “block.” Then turn on block once you’re confident the allowlist is right.
- Set leave types and a holiday calendar, and connect payroll export to whatever provider you already use.
That’s a practice-ready setup. The flagship control — on-site staff can’t punch from home or cover for each other — comes from steps 1 and 3.
The short version
For a dental or medical practice, the right time clock on WordPress is one that (a) keeps staff data on your server rather than a vendor’s cloud, and (b) enforces on-site clock-in for the people who are supposed to be in the building — refusing an off-site punch, not just noting it. That combination is exactly what most cheap, GPS-only SaaS clocks can’t do, and it’s what makes a self-hosted, IP-locked time clock a natural fit for a fixed-location practice.
If your practice already runs WordPress, the lowest-risk first step is to try the free version and lock one on-site role to your office network — then decide from there.
Try it: Download the free version on WordPress.org, or see exactly how the IP lock works and read about the self-hosted, no-data-call-home design.
Punchwell is an independent, third-party maintained GPL fork of the “WP Human Resource Management” plugin. Sturdyhaus is not affiliated with, endorsed by, or sponsored by wpspear, weDevs, the original author, or any other prior maintainer. Buddy Punch, Deputy, When I Work, and WP ERP are referenced descriptively (nominative fair use); all third-party names and trademarks belong to their respective owners. Competitor prices are approximate as of June 2026 — confirm current rates before purchasing. Self-hosting is not a compliance certification; HIPAA and other obligations depend on your own configuration.