Add Employee
Bulk Import Employees (CSV)
One employee per line: userId,name,password,standardTime,role — e.g.
agent001,Jane Smith,Pass123,09:00,user. A header row is skipped automatically.
Standard time defaults to 09:00 and role to user if blank. Existing User IDs are
updated (name/password/time/role overwritten); new ones are added. Every imported
employee is also pushed to the Master Data tab in Google Sheets.
All Employees (0/100)
| User ID | User Name | Standard Time | Access | Times Late | Times Early (Left Early) | Last Login | Actions |
|---|
Record an Early Departure
There is no logout button in this tracker, so early departures are logged manually here — kept in a separate record from login times.
All Early Departure Records
| User ID | User Name | Date | Time Left | Reason | Actions |
|---|
Overview — All Employees
Fixed to today and the current calendar month, across every employee — unaffected by the Range/Employee filters below.
Devices — All Time, All Employees
One row per browser/computer that has ever logged in (identified by a per-browser ID, not hardware — see Settings for the caveats on that). A device used by more than one User ID is flagged Shared — that's the buddy-punching signal: the same computer being used to log in multiple different employees.
| Device | First Seen | Total Logins | Users Seen On It |
|---|
| User ID | User Name | Date | Login Time | Access | Status | Device |
|---|
Early Departures in Range
| User ID | User Name | Date | Time Left | Reason |
|---|
Late Login Grace Period
A login within the grace period after the standard time is still counted as on time.
Google Sheets Export
A browser page cannot write to Google Sheets directly, and it cannot use the spreadsheet's normal edit link either.
You must deploy the Apps Script below as a Web App from inside your target spreadsheet
(this one,
if that's the sheet you're using), then paste the resulting URL here (it ends in /exec, not /edit).
The script writes to three tabs: Login, Early Departure, and Master Data.
The Master Data tab is matched by its internal sheet ID (gid=9681607) so it lands in the correct existing tab
with headers User ID / User Name / Password / Standard Login Time / Access regardless of what that tab is named —
if no tab with that ID exists in the spreadsheet the script is deployed on, it creates a new one called "Master Data" instead.
Every employee add/edit, login, and early departure entry is pushed automatically the instant it happens — no button
press needed. The Reports tab reads directly from this spreadsheet (not this browser's local storage), so it reflects
everyone's logins across every device. The backfill buttons in Reports and here only push this browser's local
records up — use them to catch up old data, not for normal viewing.
If new employees are showing up in the Login tab instead of Master Data, the live deployment is still running an older version of this script. Editing the code here does nothing to the live URL by itself — you must go to Deploy → Manage deployments → Edit (pencil) → New version → Deploy for the fix to take effect.
Device tracking added two columns — Device ID and Device Label — to the Login tab. The script only writes headers when it CREATES a sheet, so if your Login tab already exists, add "Device ID" in G1 and "Device Label" in H1 yourself; the script won't retroactively add them. Then redeploy as above (New version → Deploy) so the live URL actually runs this updated code.
Passwords are stored and synced as plain text, per your setup — anyone with edit or view access to this spreadsheet can see every employee's password. Restrict sharing on this sheet accordingly.
Every employee added or edited on the Employees tab is pushed automatically to the Master Data tab in this spreadsheet (matched by User ID, so editing someone overwrites their row instead of duplicating it). Use the button below only to push everyone already stored in this browser — e.g. right after saving the URL for the first time, or if an employee was added before the URL was configured.
Data
Employees, standard login times, and passwords are stored in this browser's local storage only — they do not sync across devices and are cleared if browser data is cleared. The Reports tab is the exception: it reads live from the Google Sheet, so it reflects logins and early departures recorded on any device, as long as this browser and the device recording the event both point at the same Sheets URL. Passwords here are stored as plain text for admin visibility/reset — do not reuse sensitive personal passwords.