For people who track time inTopTrackerand manage the work inJira

Gets your TopTracker time into Jira.

A small Mac menu-bar app. It watches TopTracker, finds the Jira issue in each session, and posts the worklogs you confirm. Nothing posts on its own.

macOS 12.0+ · 0.2.0 · native AppKit app · no Electron, no bundled browser

Wi-Fi100%14:26

Tracking · 0:41:18

DEMO-42 · Checkout regression sweep

StartedJira issueAssignmentDescriptionDurationJira submission
Mar 4, 13:45:02DEMO-42Captured issueDEMO-42 Checkout regression sweep0:41:18
Mar 4, 11:02:19UnassignedSprint planning1:04:00Ignored for Jira
Mar 4, 09:31:40OTHER-7AssignedOTHER-7 Migration follow-up1:22:07

3 sessions · durations are source intervals, not billed totals · hover for details

Why 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

How it works

Capture is automatic. Posting is not.

The tracker runs unattended in the menu bar. The write to Jira waits for you — because a timer interval is not a billable total, and nobody enjoys un-posting a worklog.
It follows TopTracker
Reads the app's log and SQLite database read-only, WAL included. File events coalesce at 250 ms; a 15-second metadata check catches anything a watcher missed, including a replaced file.
It finds the issue key
A session described 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.
You confirm the day
The review window compares against your own Jira worklogs as it opens. Edit an issue, its time or its comment in the row, tick what should post, confirm the count. Only then does it write.

Jira · Review worklogs

A preview you can argue with before Jira sees it.

Issue, time and comment are editable in the row. Time you have already logged in Jira is named in the status, for context, and is never subtracted for you.

PostJira IssueTitleTimeCommentJira Status
DEMO-42Checkout fails on an expired card41mNew — no worklog of yours today
OTHER-7Migrate billing webhooks1h 22mRetried the failed batchYou already logged 30m — check before posting
Unassigned1h 4mSprint planningNo issue key — not eligible to post

Short sessions

Anything under a minute stays out of the review list. A setting turns that off; a second one also hides them from the history window.

Only your worklogs

Comparison looks at entries under your own Jira account, nobody else's.

Already logged by hand

Time you entered in Jira yourself can be pinned to that worklog, or the session ignored outright. Both are reversible.

Five-minute freshness

Opening the window compares on its own, reusing a comparison from the last five minutes. Anything older is compared again before it can post.

Grouped by local day

Entries group by session start date in this Mac's timezone. Split overnight work yourself. The date rolls over at midnight while the app stays running.

Asked, not assumed

Optionally, a prompt after a Jira issue switch or a TopTracker stop offers to log that session. Later dismisses it, Skip excludes it. Off until you turn it on.

Never posted twice

Each worklog carries a private Jira property keyed to the session id TopTracker assigns account-wide, so a second Mac recognises what the first already posted without adding text to the comment.

Invoice week

The figure you have to retype somewhere else.

Tracking a week is one job. Getting its total and its activity list into whatever pays you is another one, and it is the part that used to mean a spreadsheet.
Drop it on the icon
Drag the invoice PDF onto TopTrack in the menu bar — the icon lights up while a file is over it. Also File → Read Invoice…, the Finder, or --invoice <file>.
Two fields, two buttons
The week's billed total, and the activity descriptions with duplicates removed and the rest sorted. A copy button beside each, because both are going into a form on another site.
It refuses to guess
The parsed rows must add up to the total the invoice itself states. When they do not, nothing is shown — a wrong figure on a payment submission is worse than no figure. The file is read locally and discarded; nothing is stored or sent.
What it touches

Local session history. Clear connections to Jira.

It reads
  • TopTracker's application.log
  • TopTracker.db — read-only, WAL included
It never reads
  • TopTracker authentication tokens
  • TopTracker settings
  • Screenshots
  • Keyboard and mouse counters
It stores
Session history in Application Support. The Mac App Store build uses its sandbox container; the direct build uses ~/Library/Application Support/TopTrack. Jira credentials go to the macOS Keychain, never to a file the app writes.
It sends
Confirmed worklogs to your Jira site, and nothing before you press Post. Sign-in codes to the authorization server, which keeps nothing. A currency pair to a rates service, only if you turn conversion on. That is the whole list — no analytics, no telemetry, no account. Every destination, explained.
Before you install

What it does not do yet.

A utility, not a system of record. The honest list, so nothing surprises you on day one.

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.

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 the review window on Friday, tick the day, confirm. That is the whole routine.

Download 0.2.0 for macOS

macOS 12.0 or newer
Apple silicon and Intel
Requires TopTracker installed
1.9 MB · released 11 September 2026

Release notes for 0.2.0