The Ultimate Guide to Time Tracking in Task Management Apps
Ever wondered where your day actually goes? You start Monday morning with a clear plan, but by Friday afternoon, you're not entirely sure how you spent 40+ hours. Tasks that "should take an hour" somehow consume entire mornings. Projects estimated at "a few days" drag on for weeks.
The problem isn't your work ethic—it's time blindness. Without accurate time tracking, we consistently underestimate how long tasks take, overcommit to deadlines, and struggle to identify productivity bottlenecks.
Most task managers treat time as an afterthought—due dates exist, but actual time spent is invisible. You mark tasks "done" without knowing if they took 20 minutes or 3 hours. For freelancers billing by the hour, this is catastrophic. For productivity enthusiasts seeking optimization, it's frustrating.
This guide explores time tracking in task management apps, with a deep dive into To-Track's state-based time tracking system—a unique approach that automatically tracks time in different workflow stages without manual timers or constant logging.
Why Time Tracking Matters
Before exploring how to track time, let's understand why it's essential:
1. Accurate Estimation
When you know tasks actually take 2.5 hours (not your estimated 45 minutes), future planning improves dramatically. Over time, you build a database of real-world task durations that inform better scheduling.
2. Billable Hours Transparency
Freelancers and consultants need audit trails for client invoicing. Saying "I spent 8 hours on your project" is weak. Showing detailed logs—"2.5 hours in development, 1 hour in code review, 0.5 hours blocked waiting for feedback"—builds trust and justifies rates.
3. Productivity Pattern Recognition
Time data reveals patterns:
- Which tasks consistently take longer than expected?
- When during the day are you most productive?
- How much time is lost to context switching?
- What percentage of time is spent "blocked" vs. actively working?
4. Deadline Confidence
On-time completion tracking shows whether you're hitting deadlines consistently or chronically late. This feedback loop enables realistic commitment management.
5. Process Optimization
Seeing that tasks spend 60% of their total time in "REVIEW" state highlights a process bottleneck. You can't fix what you can't measure.
Traditional Time Tracking Approaches
Let's examine how most apps handle time tracking:
Manual Timers (Toggl, Clockify, RescueTime)
How it works: Start a timer when beginning a task, stop when finished.
Pros:
- Simple concept
- Works with any task manager via integrations
Cons:
- Requires manual start/stop (easy to forget)
- Doesn't capture context (what state was the task in?)
- Overhead of managing separate tool
- Interruptions require manual pause/restart
Real-world friction: You start a timer for "Update website," get pulled into a meeting, forget to stop the timer, return 2 hours later to realize you've logged 2 hours for a 30-minute task.
External Integrations (Todoist + Toggl, Notion + Time Tracking)
How it works: Connect task manager to time tracking service via Zapier or API integrations.
Pros:
- Centralized time data
- Works across tools
Cons:
- Additional subscription costs
- Complex setup and maintenance
- Sync delays and failures
- Data split between multiple services
Real-world friction: Your integration breaks, time entries don't sync, you're manually reconciling data across two platforms before invoicing a client.
Pomodoro Technique (Focus apps)
How it works: Fixed 25-minute work blocks with 5-minute breaks.
Pros:
- Encourages focus
- Built-in break reminders
Cons:
- Arbitrary time blocks don't match actual task durations
- Doesn't track time per task, just generic "work sessions"
- Interruptions break the rhythm
Real-world friction: You're deep in flow state at minute 24, alarm interrupts, you lose train of thought. Meanwhile, you have no idea which specific tasks consumed those Pomodoros.
To-Track's State-Based Time Tracking: A Better Approach
To-Track takes a fundamentally different approach: automatic time tracking tied to task states.
Instead of manually starting/stopping timers, time tracking happens passively based on your workflow:
The Core Concept: States as Time Boundaries
Every task in To-Track exists in a state (TODO, IN-PROGRESS, DONE, or custom states like BLOCKED, REVIEW, TESTING, etc.). When a task moves between states, To-Track automatically logs:
- What state the task entered
- Exactly when (timestamp)
- How long it stayed in that state
This creates a state log—a complete timeline of the task's journey through your workflow.
Example: Software Bug Fix
Let's walk through a real-world scenario:
Monday 9:00 AM: Create task "Fix login redirect bug"
- State: TODO
- Logged: Task created
Monday 10:30 AM: Start working on the bug
- Action: Change state to IN-PROGRESS
- Logged: Entered IN-PROGRESS state at 10:30 AM
- Automatic: Live timer starts (00:00:00 → 00:00:01 → ...)
Monday 11:45 AM: Discover you're blocked waiting for API access
- Action: Change state to BLOCKED
- Logged: Left IN-PROGRESS (spent 1h 15m), entered BLOCKED state
- Result: You worked for exactly 1 hour 15 minutes before being blocked
Tuesday 2:00 PM: API access granted, resume work
- Action: Change state back to IN-PROGRESS
- Logged: Left BLOCKED (spent 26h 15m waiting), re-entered IN-PROGRESS
Tuesday 3:30 PM: Fix complete, submit for code review
- Action: Change state to REVIEW
- Logged: Left IN-PROGRESS (spent 1h 30m total across two sessions)
Wednesday 10:00 AM: Code review approved, deploy to production
- Action: Change state to DONE
- Logged: Left REVIEW (spent 20h 30m), entered DONE
Final state log:
- TODO: Task creation to 10:30 AM Monday
- IN-PROGRESS: 1h 15m (Monday) + 1h 30m (Tuesday) = 2h 45m total active work
- BLOCKED: 26h 15m waiting time
- REVIEW: 20h 30m review time
- DONE: Completed Wednesday 10:00 AM
Insights:
- Actual hands-on work: 2h 45m
- Total calendar time: 49 hours (Monday 10:30 AM to Wednesday 10:00 AM)
- Bottleneck: Review process (20.5 hours for a <3 hour fix)
This is the power of state-based time tracking—you see both active work time and process delays without touching a timer.
How To-Track Implements Time Tracking
Let's break down the technical implementation:
1. State Logs: The Foundation
Every state change creates an entry in the state_log table:
| id | todo_id | state_id | created_at | is_completed_on_time |
|----|---------|----------|------------|---------------------|
| 1 | bug-123 | TODO | 2026-01-14 09:00 | null |
| 2 | bug-123 | IN-PROGRESS | 2026-01-14 10:30 | null |
| 3 | bug-123 | BLOCKED | 2026-01-14 11:45 | null |
| 4 | bug-123 | IN-PROGRESS | 2026-01-15 14:00 | null |
| 5 | bug-123 | REVIEW | 2026-01-15 15:30 | null |
| 6 | bug-123 | DONE | 2026-01-16 10:00 | 1 (yes) |
Each row represents a state transition. To calculate time in a state, you subtract the created_at of the next entry from the current entry.
2. Real-Time Elapsed Timers (For Active States)
When a task is in an ACTIVE state category (like IN-PROGRESS), To-Track displays a live timer:
Visual: ⏱️ 01:23:45 (updating every second)
This timer shows elapsed time since entering the current active state. It's not a manual timer you start/stop—it's automatic based on state.
Why this matters: Glancing at your task list, you immediately see which tasks are actively running and for how long. No guessing, no manual tracking.
3. Total Time in State (Historical Aggregation)
For any state, To-Track calculates total accumulated time:
- IN-PROGRESS: 2h 45m (across multiple sessions)
- BLOCKED: 26h 15m
- REVIEW: 20h 30m
This aggregation handles scenarios where tasks bounce between states (IN-PROGRESS → BLOCKED → IN-PROGRESS) and accurately sums time per state.
4. Last Active Date Tracking
For each state, To-Track records the most recent date the task entered that state:
- IN-PROGRESS: Last active Tuesday 2:00 PM
- BLOCKED: Last active Monday 11:45 AM
Combined with relative time display ("2 days ago"), this shows task recency at a glance.
5. On-Time Completion Tracking
When a task moves to a CLOSED state (DONE, CANCELLED, etc.), To-Track calculates whether it finished on time:
Logic:
- Has start and end times: Completed within that window?
- Has start time only: Completed same day as start?
- Has end time only: Completed before end time?
- No times set: Always considered on-time
Result: is_completed_on_time flag (1 = yes, 0 = late, null = in-progress)
Why this matters: Track your deadline success rate. If you're only hitting 60% of deadlines on-time, your estimation needs calibration.
Custom Properties: Quantitative Time Tracking
Beyond state-based tracking, To-Track supports custom properties for logging quantitative data on task completion.
Default Time-Related Properties
To-Track includes these out-of-the-box:
- Duration (numeric): How long did it take? (e.g., "2.5 hours")
- Difficulty (enum): How hard was it? (Very Easy / Easy / Medium / Hard / Very Hard)
- Energy Level (enum): How much energy did it require? (Low / Medium / High)
- Focus (enum): How much concentration? (Low / Some / High / Deep)
Example: Tracking Workout Duration
Create a recurring task "Morning Workout" with:
- Repeat mode: Any-time (completes → auto-resets to TODO)
- Properties: Duration, Energy Level, Difficulty
Monday: Complete workout, log:
- Duration: 45 minutes
- Energy Level: High
- Difficulty: Medium
Tuesday: Complete workout, log:
- Duration: 30 minutes
- Energy Level: Medium
- Difficulty: Easy
Over weeks, you build a dataset:
- Average workout: 38 minutes
- High energy workouts: 12/20 (60%)
- Difficulty trending easier (fitness improvement!)
This quantitative tracking goes beyond binary done/not-done.
Use Cases: Time Tracking in Action
Freelancers: Billable Hours with Audit Trails
Scenario: Web developer billing $100/hour needs to invoice a client for website redesign.
To-Track workflow:
Create parent task "Website Redesign" with child tasks:
- Design mockups
- Frontend development
- Backend integration
- Client revisions
Work through tasks, moving states naturally:
- TODO → IN-PROGRESS → REVIEW → DONE
Generate invoice from state logs:
Time breakdown:
Design mockups:
- IN-PROGRESS: 4.5 hours
- REVIEW: 0.5 hours (client feedback)
Total: 5 hours × $100 = $500
Frontend development:
- IN-PROGRESS: 8.25 hours
- BLOCKED: 2 hours (waiting for design approval)
Total billable: 8.25 hours × $100 = $825
Backend integration:
- IN-PROGRESS: 6 hours
Total: 6 hours × $100 = $600
Client revisions:
- IN-PROGRESS: 3.25 hours
Total: 3.25 hours × $100 = $325
Grand total: 22.5 billable hours = $2,250
Client sees:
- Transparent breakdown of time per phase
- Blocked time (not billed)
- Review time (shows iteration process)
Result: Justified invoice, happy client, no disputes.
Project Managers: Identifying Bottlenecks
Scenario: Software team consistently missing sprint deadlines.
To-Track analysis:
- Review state logs for last 10 completed tasks
- Calculate average time per state:
- TODO: 24 hours (waiting to start)
- IN-PROGRESS: 6 hours (active development)
- BLOCKED: 18 hours (dependencies, waiting)
- REVIEW: 36 hours (code review delay)
- TESTING: 4 hours (QA)
- DONE
Insight: Tasks spend 36 hours in code review on average, while active development takes only 6 hours. The bottleneck isn't coding speed—it's review capacity.
Action: Assign dedicated code reviewers, set review SLA, automate portions with linters.
Result: Average delivery time drops from 88 hours to 52 hours (40% improvement).
Productivity Enthusiasts: Pattern Recognition
Scenario: Knowledge worker wants to understand deep work patterns.
To-Track setup:
- Create custom state "DEEP WORK" (focused, no interruptions)
- Track tasks with DEEP WORK state
Data after 1 month:
- Deep work sessions average: 2.1 hours
- Peak deep work time: 9 AM - 11 AM (83% of deep work occurs here)
- Deep work % of total: 35% (22 hours / 63 total weekly hours)
Insight: Only 35% of time is deep work. The rest is meetings, shallow work, admin.
Action: Block 9-11 AM daily as "Deep Work Only," decline morning meetings, batch shallow tasks in afternoons.
Result: Deep work % increases to 52%, output quality improves, projects ship faster.
Comparing Time Tracking Across Task Managers
How do popular task managers handle time tracking?
| Feature | To-Track | Todoist | Things 3 | Notion |
|---|---|---|---|---|
| Native time tracking | ✅ Built-in | ❌ No | ❌ No | ⚠️ Manual |
| Automatic timers | ✅ State-based | ❌ | ❌ | ❌ |
| Historical logs | ✅ State logs | ❌ | ❌ | ⚠️ Custom database |
| Time per state/status | ✅ Yes | ❌ | ❌ | ⚠️ Manual setup |
| Billable hours tracking | ✅ State logs export | ⚠️ 3rd party | ❌ | ⚠️ Formula fields |
| On-time completion | ✅ Automatic | ❌ | ❌ | ❌ |
| Integration needed | ❌ None | ✅ Toggl/Clockify | ✅ Toggl/Harvest | ⚠️ Third-party |
| Extra cost | ❌ Included | ✅ $10+/month | ✅ $10+/month | ⚠️ Depends |
Verdict: To-Track is the only task manager with comprehensive, automatic, state-based time tracking built-in.
Advanced Time Tracking: Pro Tips
1. Create Custom States for Workflow Stages
Default TODO/IN-PROGRESS/DONE is too simplistic. Add states that reflect your actual workflow:
For developers:
- TODO → IN-DEVELOPMENT → CODE REVIEW → TESTING → STAGING → DEPLOYED
For writers:
- IDEA → OUTLINE → FIRST DRAFT → EDITING → FINAL REVIEW → PUBLISHED
For designers:
- BRIEF → RESEARCH → SKETCHING → DESIGN → CLIENT REVIEW → REVISIONS → APPROVED
Each state becomes a time tracking category, revealing bottlenecks specific to your process.
2. Use Parent-Child Tasks for Project Rollup
Track time for an entire project by summing child task times:
Parent task: "Launch Marketing Campaign"
- Child: Design graphics (IN-PROGRESS: 3h)
- Child: Write copy (IN-PROGRESS: 2.5h)
- Child: Set up ads (BLOCKED: 12h, IN-PROGRESS: 1h)
Total project time: 18.5 hours (6.5 hours active, 12 hours blocked)
3. Filter by State to Find Long-Running Tasks
Create a custom list:
- Filter: State = IN-PROGRESS
- Sort: By state change time (oldest first)
This surfaces tasks that have been "in progress" for days/weeks without movement—potential abandoned work or forgotten items.
4. Log Properties for Recurring Task Metrics
For recurring tasks (workouts, study sessions, client calls), log:
- Duration: How long it took
- Quality: How well it went (1-5 scale)
- Energy Level: How much energy required
Over time, chart these metrics to spot trends (e.g., "My energy level is declining—maybe I need more sleep").
5. Export State Logs for External Analysis
To-Track stores everything in SQLite. Export state logs to CSV and analyze in:
- Google Sheets: Create pivot tables, charts, trend lines
- Excel: Statistical analysis, forecasting
- Python/R: Advanced data science (time series analysis, predictions)
Limitations & Considerations
State-based time tracking isn't perfect for every scenario:
When Manual Timers Are Better
Multi-tasking across apps: If you switch between task manager, email, Slack, and code editor constantly, state-based tracking won't capture time outside the task manager.
Solution: For deep analysis, combine To-Track with automatic time tracking apps like RescueTime that monitor all computer activity.
When States Don't Reflect Work
If your workflow doesn't have clear states, state-based tracking is less useful:
Example: Creative work (brainstorming, writing poetry) doesn't fit TODO/IN-PROGRESS stages cleanly.
Solution: Create custom states that match creative flow (IDEA → DRAFT → POLISH) or use properties instead (log "2 hours brainstorming").
Overhead of State Changes
If you're constantly switching contexts (answer email, write code, hop on call), manually updating task states becomes burdensome.
Solution: Batch similar work to stay in one state longer, or accept that time tracking will be approximate for chaotic days.
Conclusion: Time Tracking as a Superpower
Accurate time tracking transforms task management from a glorified checklist into a productivity intelligence system. When you know:
- How long tasks actually take (vs. estimates)
- Where time is wasted (BLOCKED, REVIEW bottlenecks)
- When you're most productive (deep work patterns)
- Whether you hit deadlines (on-time completion rates)
...you gain unprecedented control over your schedule, commitments, and work quality.
To-Track's state-based time tracking makes this possible without the friction of manual timers, external integrations, or constant logging. It's automatic, passive, and deeply integrated into your workflow.
For freelancers, it provides billable hours transparency. For project managers, it reveals process bottlenecks. For productivity enthusiasts, it enables data-driven optimization. For anyone who wonders "where did my day go?" it provides answers.
Time is the one resource you can't get back. Track it wisely.
FAQ
Q: Do I have to manually start and stop timers? A: No! To-Track's time tracking is automatic. When you move a task to an active state (like IN-PROGRESS), the timer starts automatically. Move it to another state, the timer stops and logs the duration. Zero manual intervention.
Q: What if I forget to change the task state? A: State logs are editable. Long-press any state change entry, select "Change Time," and update the timestamp to reflect reality. The system recalculates durations automatically.
Q: Can I track time for recurring tasks? A: Absolutely. Each completion of a recurring task creates new state log entries. Over time, you build a dataset showing how long each iteration took (e.g., "Morning workout averages 38 minutes").
Q: How do I export time data for invoicing? A: State logs are stored in SQLite. Export to CSV from the database, filter by client tags or parent tasks, and import into invoicing software. Or manually calculate totals from the To-Track state log timeline.
Q: Does time tracking work offline? A: Yes! To-Track is offline-first. All time tracking happens locally on your device. State changes, logs, and timers work perfectly without internet.
Q: What's the difference between state time and property duration? A: State time is automatic (IN-PROGRESS: 2h 15m logged by system). Property duration is manual (you log "took 2 hours" on completion). State time is more accurate; properties are useful for recurring tasks where you want to record exact durations after the fact.
Q: Can I see total time spent on a project? A: Yes, via parent-child task rollup. Create a parent task for the project, add child tasks for each piece of work. Sum the IN-PROGRESS (or total active) time across all children to get project totals.
Q: Is there a limit to how many state logs are stored? A: No limit. Every state change is logged permanently. This creates a complete audit trail of task history, valuable for analysis and compliance.
Ready to see where your time really goes? Download To-Track and experience automatic time tracking that actually works.
Try To-Track free
Offline-first tasks, custom states, time tracking. No account required.