How to Recover Billable Hours You Forgot to Track
A practical 30-minute workflow for reconstructing lost billable hours from your existing artifacts — and the simple system that stops the problem from recurring.
It is Friday afternoon. You are looking at the invoice you need to send by Monday, and the timer log only accounts for about 60% of the week. The rest is somewhere in the gap between Monday morning's plan and Friday's exhaustion — real work, billable work, that you forgot to log because Tuesday's meeting ran long, or Wednesday's bug consumed an afternoon, or Thursday's call ended with you straight into deep work.
This post is for everyone who has invoiced themselves shorter than the week they actually worked. It walks through a practical reconstruction workflow for hours you have already lost, and the system that prevents the problem from recurring next week.
Why this keeps happening
Manual time tracking fails predictably. The timer model assumes you will remember to start it before each task and stop it at every interruption. Real freelance work is the opposite — you context-switch six times an hour, meetings run over, you swap projects to handle a client emergency, and by 6pm the timer reflects maybe two of those eight hours.
Common failure modes — none of which are your fault:
- You forgot to start the timer when a meeting ran into a deep-work block
- You started a timer, got pulled into Slack, and never stopped it
- You were on a phone call away from your computer for ninety minutes
- You did billable thinking on a walk, in the shower, or while making lunch
- The timer was running on the wrong project and you noticed three hours in
The result is the same: at the end of the week, the log under-counts. You either invoice short (losing real revenue) or you make up a number from memory (losing accuracy and inviting client friction).
What this is actually costing you
A simple calculation, run honestly, is usually sobering:
| Variable | Typical freelancer | |---|---| | Hourly rate | $75 | | Hours under-logged per week | 3-5 | | Working weeks per year | 48 | | Annual revenue lost to forgotten hours | $10,800 – $18,000 |
The hourly figure varies, the missed-hours number is consistent. Most freelancers under-bill by 6-10% of their actual worked time, every single week, for years. That is a paid month of work disappearing annually without anyone noticing.
Recovering even half of it is worth more than most productivity tools, software subscriptions, and bookkeeping software combined.
Three ways to reconstruct lost hours
Once a week is over, you have three options for filling gaps in the log. They produce different qualities of recovery:
Method 1: Memory + calendar (worst)
You sit down on Friday and try to remember what you did. You stare at your calendar, mentally walking each day. You estimate.
- Recovery rate: maybe 40% of actual lost hours
- Accuracy: poor — humans systematically under-estimate non-meeting work
- Defensibility: low — if a client asks "what specifically were you doing for that 90-minute block on Tuesday?" you cannot answer
- Friction: high — every Friday becomes invoice forensics
This is what most freelancers do because they do not have other options. It is also why most freelancers under-bill.
Method 2: Reconstruction from artifacts (better)
You ignore memory and use the digital evidence your week left behind. Most of your real work generated artifacts you can timestamp:
- Email: sent timestamps tell you when you were responding to clients
- Git commits: authored time tells you when you were coding
- Slack messages: sent time bookends meetings and async work
- Calendar: scheduled meetings (but not the prep before or follow-up after)
- Browser history: when you read that documentation page
- Editor recent files: when you opened the design files
- Notion / Linear / Jira: edit timestamps on tickets
A careful pass through these artifacts can recover 60-80% of forgotten hours. It takes about 30 minutes per week and produces defensible records. Walk through the actual workflow below.
Method 3: Passive capture (best)
The tool records the activity as it happens — every app, window title, browser tab, with start and end timestamps. Friday becomes a review, not a reconstruction.
- Recovery rate: ~98% of actual worked time (you only lose work done away from the computer)
- Accuracy: the data is the data
- Defensibility: complete timestamped trail
- Friction: zero during the week, 5-10 minutes on Friday
This is the system you want long-term. Sections later in this post cover how to set it up.
The 30-minute reconstruction workflow
If you do not yet have passive capture and you have a week to recover, here is the workflow. Plan to spend 30 minutes; it will save 30-60 minutes of guessing while producing a better invoice.
1. Open a blank spreadsheet (3 minutes)
Five columns: Date, Start, End, Client/Project, What. One row per session. Do not overthink the schema; you are reconstructing, not designing.
2. Anchor on calendar events (5 minutes)
Copy each calendar event from the week into the spreadsheet. These are the easy ones — you have explicit start and end times.
For each meeting, add the prep block (typically 15 minutes before) and the follow-up (typically 15-30 minutes after) as separate rows. Both are billable. Most people under-log these.
3. Walk through git commits and editor history (5 minutes)
For developer or design work:
git log --since="last monday" --author="your name" --pretty=format:"%ai %s"shows every commit you authored this week with timestamps- VS Code: File → Open Recent shows files in last-edited order
- Figma / Adobe: their version history pages show edit sessions per file
Each cluster of activity within ~90 minutes of consecutive commits or edits is a billable session. Log the start of the first commit and the end of the last as the session bounds.
4. Check sent email for each client (10 minutes)
In Gmail or your email client: from:me to:client@domain.com after:2026-06-09 before:2026-06-13. The earliest and latest sent times each day bracket your active client interaction.
If you sent an email at 10:47am on Tuesday and another at 12:14pm, you were probably actively working on that client between those times even if you do not remember the specific tasks. Add a row.
5. Check Slack DMs and channel activity (5 minutes)
For each active client/project channel, view your sent messages for the week. Cluster them into sessions the same way as commits — consecutive activity within 90 minutes is one session.
6. Add the residual: deep-work blocks (3 minutes)
What you have so far accounts for meetings, code/design output, email, and chat. Look for the gaps. Tuesday between 2pm and 4pm shows no calendar event, no commits, no emails — but you remember it was the day you wrote the strategy doc.
If you have ANY artifact (the doc itself in Google Docs version history, a notes file in Notion, a sketch in Figma) timestamp it and log the session.
If you cannot find artifacts but you remember the work happened, log it conservatively (round down to the nearest 30 minutes) and note it as "deep work — [topic]" in the What column. You are not committing fraud; you are recovering hours you actually worked.
7. Final pass for sanity (3 minutes)
Sum the hours per day. Compare to what a normal workday looks like for you. If Tuesday came out to 11 hours and you remember it was a normal day, you over-counted somewhere. If Friday came out to 3 hours and you remember working through lunch, you missed something.
Iterate once. The goal is a defensible reconstruction, not a perfect one.
Preventing recurrence: pick a system
Once the current week is reconstructed, the real question is: how do you stop this from happening every Friday for the rest of your freelance career?
There are three sustainable systems. Pick one that fits your work style:
| System | Setup effort | Daily friction | Recovery rate | Good for | |---|---|---|---|---| | Strict timer discipline | Low | Very high | Variable | People with linear, single-task days | | Daily journaling | Medium | Medium | 70-85% | People with reflective habits already | | Passive activity tracking | Low | Near zero | 95-98% | Everyone else |
The first option is what failed you in the first place — discipline works for some weeks and breaks down in others. Most freelancers oscillate between strict timing and falling off, then reconstructing.
The second option (writing a brief log entry at end of day) works if you already have a daily journaling practice. If you do not, adding one purely for time tracking rarely sticks.
The third option — passive capture that records app, window, and browser activity automatically while you work — is the one that stays in place even on bad weeks. The tool tracks while you focus on the work. At end of day, you spend 2-5 minutes confirming session boundaries and categorizing.
For a deeper take on why timer-based systems fail and what replaces them, see How to Track Work Hours Without a Timer.
What "fixed" looks like
A working time-tracking system means Friday afternoon is for review, not forensics. The actual outputs to expect:
- You can answer "what did I do from 2pm to 4pm last Tuesday?" in 30 seconds or less
- Your invoice for the week takes 5-10 minutes to prepare from the system's export
- Client questions about specific hours are answerable in real time, not anxious
- The hour-count you invoice matches the hour-count you actually worked, within 1-2%
- Friday afternoon is back to being yours
Anything that does not produce this is not actually solving the problem.
DayReplay's role in this
For full disclosure: I built DayReplay specifically because reconstruction workflows like the one above are wasted hours every Friday. The version I shipped runs in the background on macOS and Windows, captures app + browser tab + window title activity locally, and produces a session timeline you can review and export in minutes.
A few specific design choices that relate to this post:
- Data stays local on your machine. There is no cloud sync of your activity log; nothing leaves the device by default
- No screenshots, no keystroke logging — only the metadata needed to answer "what app/site, when, how long"
- Idle detection pauses tracking automatically when you step away
- CSV export of any time range, organized by client/category, ready to paste into your invoicing tool
If you want to see how the workflow looks end to end, the macOS guide and Windows guide walk through it. The security page covers what data is captured and where it lives.
If DayReplay is not the right fit, that is fine — the reconstruction workflow above works with any artifact-based recovery, and the prevention principle applies to any passive-capture tool. The point is not which tool you use. The point is to stop losing 6-10% of your billable revenue every week.