Cron Jobs
Cron Jobs
Section titled “Cron Jobs”The Cron Jobs feature lets you create unique endpoint URLs that, when triggered, automatically close all active time-tracking logs for a specific set of workstations. This is useful for ending shifts, closing out unfinished timers at the end of the day, or coordinating with external schedulers (server cron, automation platforms, scheduled webhooks).

Overview
Section titled “Overview”Each cron job consists of:
| Field | Description |
|---|---|
| Name | A friendly label that describes what the cron job does (for example, “End of day — assembly team”). This name is also used as the subject of the summary email. |
| Endpoint URL | A unique, automatically generated URL containing a secret token. Anyone with this URL can trigger the cron job, so treat it as a credential. |
| Notification email (optional) | If filled in, a summary email is sent to this address every time the cron job is triggered. Leave it empty to disable email notifications. |
| Workstations | One or more workstations whose active time-tracking entries will be closed when the URL is called. |
| Last triggered | Timestamp of the most recent successful trigger. |
You can create as many cron jobs as you need, each with its own set of workstations and its own URL. This makes it easy to close logs at different times for different teams or departments — for example, one cron job for the assembly line at 4 PM and another for the paint shop at 6 PM.
When to use it
Section titled “When to use it”Common scenarios:
- End-of-shift cleanup — automatically stop any time-tracking entries an employee forgot to stop before leaving.
- Per-team schedules — different departments finish at different times, so each gets its own cron job and its own time of day.
- Integration with automation platforms — schedule a Zapier, Make.com, or similar workflow to hit the URL on a recurring basis.
- Server cron — call the endpoint from a Linux cron job, Windows Task Scheduler, or any HTTP-based scheduler.
Managing cron jobs
Section titled “Managing cron jobs”Open App Settings → Cron Jobs to manage the list.
Create a cron job
Section titled “Create a cron job”- Click Add cron job.
- Give it a descriptive Name — this is also used as the subject of the notification email.
- Optionally enter a Notification email. If filled in, a summary email is sent to that address every time the cron job is triggered. Leave it blank to disable email notifications.
- Tick one or more Workstations in the list. Only those workstations’ active time logs will be closed by this URL.
- Click Save.
A unique endpoint URL is generated for you automatically.
Edit a cron job
Section titled “Edit a cron job”Click the pencil icon next to a cron job to change its name or workstation assignments. The endpoint URL stays the same — existing integrations keep working.
Delete a cron job
Section titled “Delete a cron job”Click the trash icon and confirm. The endpoint URL stops working immediately. This is permanent and cannot be undone.
Copy the endpoint URL
Section titled “Copy the endpoint URL”Click the copy icon next to the URL. The icon flips to a green check for a moment to confirm the URL is on your clipboard.
Triggering the endpoint
Section titled “Triggering the endpoint”The endpoint URL accepts both GET and POST requests — pick whichever is easier for your scheduler. No authentication header is required; the token in the URL is the credential.
Examples
Section titled “Examples”curl
curl https://your-board.example.com/cron/abc123xyz...Linux crontab (close shift every weekday at 5 PM)
0 17 * * 1-5 curl -fsS https://your-board.example.com/cron/abc123xyz... > /dev/nullZapier / Make.com / n8n — use the built-in Webhooks / HTTP Request action and point it at the URL.
Response
Section titled “Response”A successful trigger returns a JSON payload like:
{ "success": true, "closed": 3, "cron_job": "End of day - assembly"}closed is the number of active time-tracking entries that were stopped.
If the cron job has no workstations assigned, the response will be:
{ "success": true, "closed": 0, "message": "No workstations assigned."}What happens when triggered
Section titled “What happens when triggered”When the endpoint is called, the system:
- Finds every active time-tracking entry (a started timer with no stop time) whose workstation is assigned to this cron job.
- Sets
stopped_atto the current time and records the elapsed duration. - Writes an automatic log entry on each affected task, noted as
Auto-closed by cron job: {name}, so the recorded time is preserved on the workstation log. - Updates the cron job’s Last triggered timestamp.
- If a Notification email is set, sends a summary email (see below).
Entries that are not active (timers already stopped, or running on workstations not in this cron’s list) are not touched.
Email notifications
Section titled “Email notifications”If the Notification email field on a cron job is filled in, every trigger of that endpoint sends a summary email to that address.
The email contains:
- Subject — the cron job’s Name, exactly as configured.
- Triggered at — the date and time the trigger ran.
- Closed logs — a table listing every active time-tracking entry that was closed, with the employee’s name, the workstation, and the elapsed duration.
If no active entries were found at the time of the trigger, the email is still sent but the body notes that no logs were closed. This is useful as a heartbeat to confirm the scheduler is firing.
Example email body:
Triggered at: 2026-05-26 17:00:03
Closed logs (2):
Employee Workstation Duration Jan Kowalski Assembly 1 3h 12min Anna Nowak Paint Booth 45min
To disable email notifications, simply clear the field on the cron job and save.
Email delivery uses the same mail transport (SMTP, etc.) configured for the rest of the app. If delivery fails for any reason, the failure is logged and the trigger response still returns success — closing the time logs is not blocked by mail problems.
Security notes
Section titled “Security notes”- The endpoint URL contains a 40-character random token and is the only thing standing between the public internet and the action. Treat it like a password.
- If a URL is leaked, delete the cron job — that revokes the URL immediately — and create a new one to issue a fresh URL.
- The endpoint is rate-limited to 60 requests per minute per IP to prevent abuse.
- The action is per-tenant: a token only ever affects time entries belonging to the tenant that created the cron job.
- Give each cron job a name that reflects both the team and the schedule (for example, “5 PM weekdays — assembly”) so you can tell them apart at a glance.
- Use a different cron job per team rather than one big one — it gives you finer control over schedules and makes it easier to disable or change behaviour for just one team.
- Test the URL once manually (from your browser or curl) after creating it to confirm it returns a
success: trueresponse.