For people who track time inTopTrackerand manage the work inJira
Gets your TopTracker time into Jira.
macOS 12.0+ · 0.7.2 · native AppKit app · no Electron, no bundled browser
Worklogs
Tracking DEMO-42
| Post | Jira Issue | Title | Tracked | Jira Status |
|---|---|---|---|---|
| DEMO-42 | Checkout fails on an expired card | 6h 12m | 4 sessions | |
| 1h 46m | Tracked | |||
| 2h 5m | Tracked | |||
| 1h 40m | Tracked | |||
| 41m | Tracked | |||
| OTHER-7 | Migrate billing webhooks | 1h 22m | Tracked | |
| OTHER-12 | Retry queue alerts | 3h 10m | 2 sessions | |
| Unassigned | 1h 4m | Ignored for Jira |
8 sessions · Tracked 11h 48m
Select Worklogs to PostWhy I built this
I'm a contractor. The company I work for tracks time in TopTracker — their rule, not mine. The actual work lives in Jira.
So every week I'd open TopTracker, copy the sessions into a spreadsheet, clean out the duplicates, add up the hours per ticket, and type the totals into Jira one by one. Then do the invoice on Sunday.
And I kept forgetting to log things. Those hours were just gone.
TopTracker had recorded all of it the whole time. It just never got to Jira. So I built the bit in between.
Konstantin Zotov · Spain
Capture is automatic. Posting is not.
DEMO-42 Checkout sweep maps to DEMO-42. A Jira URL works too. Anything without a key stays Unassigned — never guessed at. Assign it yourself, and make it a rule if that description comes back every week. Recognised keys are shown with the issue's own title, fetched from Jira and cached for a day. Worklogs · Day
A preview you can argue with before Jira sees it.
One row per session. An issue you came back to becomes a group that says what Jira will get: one worklog per issue per day, rounded once. Everything postable is ticked; untick what should wait.
Worklogs
Tracking DEMO-42
| Post | Jira Issue | Title | Tracked | Logged | To Post | Estimate | Jira Remaining | Jira Status |
|---|---|---|---|---|---|---|---|---|
| DEMO-42 | Checkout fails on an expired card | 1h 13m | 0m | 1h 13m | 4h | 2h 30m | Posts as 1 worklog · 1h 13m | |
| 41m | 0m | 41m | 4h | 2h 30m | Part of 1h 13m worklog | |||
| 31m | 0m | 31m | 4h | 2h 30m | Part of 1h 13m worklog | |||
| <1m | 0m | <1m | 4h | 2h 30m | Part of 1h 13m worklog | |||
| OTHER-7 | Migrate billing webhooks | 1h 22m | 30m | 30m | — | — | Ready | |
| OTHER-12 | Retry queue alerts | 25m | 0m | 25m | 6h | 3h 10m | Possible manual worklog — confirm match or review | |
| OTHER-3 | Rotate staging certificates | 18m | 18m | 0m | 1h | 0m | Complete | |
| Unassigned | 1h 4m | 0m | 0m | Assign issue / at least 1m, at most 24h |
Tracked 4h 22m · Logged 48m · Not logged 3h 34m
Post 3 Worklogs · 2h 8m…It checks
Only yours, by itself. Your own Jira worklogs for that day, checked as Worklogs opens, after an edit, and on ⌘R.
One row per session. An issue tracked more than once becomes a group that says what Jira will get.
Logged by hand? Pin it. Only the matched minutes count as done.
It posts
Pre-ticked, you confirm. Everything postable is selected. Untick, then confirm the count.
One issue, one worklog a day. 4m, 3m and 10m on DEMO-42 post as a single 17m worklog.
Part of a day is fine. Lower To Post; the rest stays for another issue.
It holds back
Never twice. A private Jira property marks what was posted, even from another Mac.
Estimates untouched. Jira's estimate is shown, not reduced, unless you turn that on.
Under a minute? Folded in. It counts toward that issue's worklog for the day, and never posts alone.
Reminders, columns, ⌘R and the rest of the small print: how Worklogs decides.
The figure you have to retype somewhere else.
--invoice <file>. Local session history. Clear connections to Jira.
- TopTracker's application.log
- TopTracker.db — read-only, WAL included
- TopTracker authentication tokens
- TopTracker settings
- Screenshots
- Keyboard and mouse counters
~/Library/Application Support/TopTrack. Jira credentials go to the macOS Keychain, never to a file the app writes. What it does not do yet.
Durations are estimates
Displayed time is the interval between source timestamps, not an authoritative billed total.
No mappings out of the box
No company or project rules ship with it. A description carries the key, or you assign the issue yourself — and write your own rule if it repeats.
Jira needs a setup step
First launch walks through the TopTracker folder and Jira, but connecting still needs a registered Atlassian integration and an authorization service — the hosted default, or your own HTTPS origin.
Earnings are an estimate
Hours at your current rate, converted at a cached reference rate. Not an invoice, and not a statement of what anyone owes you.
It cannot track while quit
No tracking while the app is quit or the Mac is asleep. Launch at login is not implemented yet.
A missing stop is not a running timer
Starts recovered after a crash or a log rotation are labelled last-reported, never assumed live. TopTracker's once-a-minute heartbeat confirms one within about ninety seconds.
Tied to TopTracker's shape
Log and schema strings were read on TopTracker 1.7.8. An upgrade there may need an update here.
Stop retyping your week into Jira.
Install it, open Worklogs on Friday, tick the day, confirm. That is the whole routine.
macOS 12.0 or newer
Apple silicon and Intel
Requires TopTracker installed
Updates itself from toptrack.app · Settings → About
2.0 MB · released 6 October 2026