Habit Tracking with Custom Properties: Beyond Simple Checkboxes
Most habit trackers reduce your progress to a simple checkbox: Did you work out today? ✅ or ❌. But real habits aren't binary. A 20-minute walk isn't the same as a 90-minute strength training session. Reading 5 pages differs from finishing 50. Meditation for 10 minutes versus 45 minutes—both "count," but the impact varies wildly.
Quantitative habit tracking captures what checkbox apps miss: intensity, duration, quality, and metrics that reveal real progress. When you track how many reps, how heavy the weights, how long you studied, or how you felt during the activity, you build a data-rich history that shows improvement over time.
To-Track's custom properties system transforms a task manager into a powerful habit tracker. With 19 default properties (Duration, Reps, Weight, Mood, Energy Level, and more) plus unlimited custom properties, you can track any metric that matters—then analyze trends to optimize your habits.
This guide shows you how to move beyond checkboxes and build a quantified self-tracking system for fitness, learning, health, and productivity habits.
The Problem with Binary Habit Tracking
Traditional habit trackers (Habitica, Streaks, Done) focus on streak maintenance: did you do it today, yes or no? This creates problems:
1. All Completions Are Equal
You did 10 pushups? Great! Checkbox checked. ✅ You did 100 pushups? Same checkbox. ✅
Both show "completed," but one represents 10x more effort. Your progress chart shows identical results, hiding real improvement.
2. No Context Captured
- Workout: Did you lift heavy? Light? Mix? Who knows.
- Reading: 5 pages of a textbook ≠ 50 pages of fiction
- Meditation: Eyes closed for 5 minutes ≠ deep practice for 45 minutes
Without context, you can't distinguish low-effort check-the-box days from breakthrough performances.
3. Missed Insights
When you only track completion, you miss patterns:
- Does heavier weight correlate with lower reps (as expected)?
- Do morning workouts have higher energy levels than evening?
- Does mood improve on days with longer meditation?
- Does reading speed increase over time?
These insights require quantitative data, not checkboxes.
4. Arbitrary "Streaks" Gamification
Habit apps prioritize unbroken streaks. Miss one day due to illness or travel, your 47-day streak resets to zero. This punishes reasonable breaks and creates anxiety around "maintaining the streak" rather than actual progress.
Better approach: Track metrics over rolling averages. If your average weekly workout duration increases from 180 minutes to 240 minutes over 3 months, that's real progress—even if you skipped a few days.
To-Track's Custom Properties: Quantitative Tracking
To-Track approaches habits differently: tasks can have custom properties that log numeric or categorical data on completion.
How It Works
- Create a recurring task (e.g., "Morning Workout")
- Assign properties (e.g., Duration, Reps, Weight, Energy Level)
- Complete the task and log property values (e.g., 45 minutes, 50 reps, 185 lbs, High energy)
- Task auto-resets to TODO (if using "any-time" recurring mode)
- Property logs accumulate in the database for trend analysis
Each completion creates a property log entry with timestamp, allowing you to:
- Chart progress over time
- Calculate averages, trends, and personal records
- Identify patterns (e.g., "I lift heavier on Mondays")
- Export data for external analysis
Default Properties: 19 Ready-to-Use Metrics
To-Track includes 19 pre-configured properties across two types:
Numeric Properties (11 total)
- Duration: How long did it take? (e.g., 45 minutes)
- Quantity: How many? (e.g., 100 pages read)
- Distance: How far? (e.g., 5.2 miles)
- Weight: How heavy? (e.g., 185 lbs)
- Reps: How many repetitions? (e.g., 50 pushups)
- Score: Numeric rating (e.g., 87/100)
- Sets: How many sets? (e.g., 3 sets)
- Calories: Energy burned/consumed (e.g., 450 kcal)
- Heart Rate: BPM (e.g., 145 bpm)
- Temperature: Degrees (e.g., 98.6°F)
- Money: Currency amount (e.g., $12.50)
Enum Properties (8 total)
These have predefined dropdown values:
- Difficulty: Very Easy / Easy / Medium / Hard / Very Hard
- Energy Level: Low / Medium / High
- Quality: Poor / Fair / Good / Excellent
- Focus: Low / Some / High / Deep
- Priority: Lowest / Low / Medium / High / Highest
- Mood: Very Negative / Negative / Neutral / Positive / Very Positive
- Weather: Sunny / Cloudy / Rainy / Snowy / Stormy
- Satisfaction: Very Dissatisfied / Dissatisfied / Neutral / Satisfied / Very Satisfied
Mixing Properties for Rich Context
The power comes from combining properties:
Workout task:
- Duration: 60 minutes
- Reps: 75 (total across exercises)
- Sets: 5
- Weight: 200 lbs (max lift)
- Difficulty: Hard
- Energy Level: Medium
- Mood: Positive
This single log entry captures far more than ✅ "worked out."
Use Case 1: Fitness Tracking
Let's build a comprehensive workout tracking system:
Setup
Task: "Strength Training" (recurring: any-time) Properties:
- Duration (numeric)
- Weight (numeric) - max lift of the session
- Reps (numeric) - total reps across all sets
- Sets (numeric)
- Difficulty (enum)
- Energy Level (enum)
- Mood (enum)
Logging a Session
Monday, January 13, 2026:
- Duration: 75 minutes
- Weight: 225 lbs (deadlift PR!)
- Reps: 120 (total across bench, squat, deadlift)
- Sets: 6
- Difficulty: Very Hard
- Energy Level: High
- Mood: Very Positive
Wednesday, January 15, 2026:
- Duration: 60 minutes
- Weight: 200 lbs
- Reps: 100
- Sets: 5
- Difficulty: Medium
- Energy Level: Medium
- Mood: Positive
Friday, January 17, 2026:
- Duration: 45 minutes
- Weight: 185 lbs
- Reps: 80
- Sets: 4
- Difficulty: Easy
- Energy Level: Low
- Mood: Neutral
Analysis After 3 Months
Export property logs to CSV, analyze trends:
Insights:
- Progressive overload: Max weight increased from 185 lbs (Jan) to 245 lbs (March)
- Volume correlation: Higher energy level days = more reps (r = 0.71)
- Recovery patterns: "Very Hard" workouts require 48+ hours before next "High energy" session
- Mood boost: 89% of workouts end with Positive or Very Positive mood (vs. pre-workout Neutral)
Actionable changes:
- Schedule intense workouts Monday/Thursday to allow 72-hour recovery
- Morning workouts consistently show higher energy levels—prioritize AM sessions
- Track caffeine intake to test correlation with performance
This depth of analysis is impossible with checkbox habit trackers.
Use Case 2: Learning & Study Habits
Track study sessions beyond "I studied today" ✅.
Setup
Task: "Study for Exam" (recurring: daily) Properties:
- Duration (numeric)
- Quantity (pages/problems completed)
- Focus (enum)
- Difficulty (enum)
- Quality (enum) - how well you understood the material
- Satisfaction (enum)
Example Logs
Week 1 Average:
- Duration: 45 minutes/session
- Quantity: 12 pages/session
- Focus: Some (lots of distractions)
- Difficulty: Hard
- Quality: Fair
- Satisfaction: Dissatisfied
Week 6 Average:
- Duration: 90 minutes/session
- Quantity: 28 pages/session
- Focus: Deep (flow state)
- Difficulty: Medium (material getting easier)
- Quality: Excellent
- Satisfaction: Satisfied
Insights:
- Efficiency: Pages per minute increased from 0.27 to 0.31 (15% faster reading)
- Comprehension: Quality improved from Fair → Excellent
- Focus mastery: Deep focus sessions increased from 20% → 75% of study time
- Difficulty perception: Material feels easier as knowledge compounds
Study optimization:
- Deep focus correlates with 90+ minute sessions (shorter sessions = more "Some" focus)
- Morning study: Quality = Excellent (85% of time)
- Evening study: Quality = Good (50%) or Fair (40%)
- Action: Schedule intensive study 8-10 AM, lighter review evenings
Use Case 3: Meditation & Mindfulness
Move beyond "I meditated" ✅ to understanding meditation quality.
Setup
Task: "Morning Meditation" (recurring: daily) Properties:
- Duration (numeric)
- Focus (enum) - how present you were
- Mood (before → after tracking via two enum properties)
- Energy Level (enum)
- Quality (enum) - overall session quality
Advanced: Before/After Mood Tracking
Create two separate mood properties:
- Mood (Before): enum property "pre_mood"
- Mood (After): enum property "post_mood"
Log both on completion to track meditation's emotional impact.
Example Log
Day 1:
- Duration: 10 minutes
- Focus: Low (mind wandered constantly)
- Mood Before: Negative
- Mood After: Neutral
- Energy: Medium
- Quality: Poor
Day 30:
- Duration: 30 minutes
- Focus: High
- Mood Before: Neutral
- Mood After: Very Positive
- Energy: High
- Quality: Excellent
3-Month Analysis:
- Duration growth: 10 min → 35 min average (3.5x increase)
- Focus improvement: Low/Some (60% of sessions) → High/Deep (75%)
- Mood shift: 87% of sessions show mood improvement (negative → neutral, neutral → positive)
- Optimal duration: Sweet spot = 25-30 minutes (longer ≠ better quality)
Insight: Meditation quality plateaus after 30 minutes for you. Don't force longer sessions—focus on depth, not duration.
Use Case 4: Reading Habits
Track reading beyond pages-per-day streaks.
Setup
Task: "Read Non-Fiction" (recurring: daily) Properties:
- Duration (numeric) - time spent reading
- Quantity (numeric) - pages completed
- Focus (enum)
- Difficulty (enum) - text complexity
- Satisfaction (enum)
Metrics to Track
Pages per minute: Quantity ÷ Duration Focus correlation: Deep focus sessions = higher pages/minute Difficulty impact: Hard texts = slower reading, but higher satisfaction
Example Insight
After 60 days of data:
- Average speed: 1.8 pages/minute (108 pages/hour)
- Deep focus sessions: 2.3 pages/minute (38% faster!)
- Difficulty sweet spot: "Medium" difficulty = highest satisfaction (challenging but not frustrating)
- Retention test: Quality = Excellent only when Focus = High or Deep
Optimization:
- Read complex material during peak focus times (morning)
- Switch to lighter reading when energy drops (evening)
- Aim for "Medium" difficulty texts for sustained engagement
Creating Custom Properties
Beyond the 19 defaults, create unlimited custom properties for niche tracking:
Examples
Language Learning:
- Vocabulary Words Learned (numeric)
- Conversation Duration (numeric)
- Fluency Rating (enum: Beginner / Intermediate / Advanced / Native)
Cooking:
- Calories (numeric)
- Cooking Time (numeric)
- Recipe Difficulty (enum)
- Taste Rating (enum)
Creative Writing:
- Word Count (numeric)
- Editing Passes (numeric)
- Writing Quality (enum: Draft / Revision / Polished / Final)
Household Chores:
- Rooms Cleaned (numeric)
- Cleaning Duration (numeric)
- Clutter Level Before (enum: Very Cluttered → Very Clean)
The possibilities are endless—if you can measure it, you can track it.
Property Logging Workflow
Here's how property logging integrates into your task workflow:
1. Create Recurring Task
Set up task with appropriate repeat mode:
- Any-time: Habits without fixed scheduling (workout when convenient)
- Scheduled: Fixed timing (daily meditation at 7 AM)
2. Assign Properties
Tap "Manage Properties" in the task detail view:
- Select from 19 defaults
- Create custom properties
- Add/remove as needed
3. Complete Task & Log Values
When marking task DONE:
- For numeric properties: Enter values (e.g., 45 for duration)
- For enum properties: Select from dropdown (e.g., "High" energy)
Properties appear as form fields during completion.
4. Task Auto-Resets
For "any-time" recurring tasks:
- Task immediately returns to TODO state
- Dates clear
- Property values reset (ready for next log)
For scheduled recurring:
- Task returns to TODO
- Dates advance to next occurrence (e.g., tomorrow for daily tasks)
5. Logs Accumulate
Each completion creates a property_log entry:
- Task ID
- Property ID
- Value (numeric or enum reference)
- Timestamp
Over time, you build a comprehensive dataset.
Analyzing Property Data
To-Track stores property logs in SQLite. Access your data:
Built-In Charts (Pro Feature)
Use AI statistics generator to create custom charts:
- "Show average workout duration per week"
- "Chart mood before vs after meditation"
- "Display total reading pages per month"
Manual Export
Export property_log table to CSV:
SELECT
t.todo,
p.name AS property,
CASE
WHEN tp.value_numeric IS NOT NULL THEN tp.value_numeric
ELSE pv.value
END AS value,
tp.created_at
FROM property_log tp
JOIN todos t ON tp.todo_id = t.id
JOIN properties p ON tp.property_id = p.id
LEFT JOIN property_enum_values pv ON tp.value_enum_id = pv.id
WHERE t.todo = 'Morning Workout'
ORDER BY tp.created_at DESC
Import into Google Sheets, Excel, or Python for analysis.
Example Analysis in Google Sheets
- Import CSV
- Create pivot table: Date (rows) × Property (columns) × Average value
- Chart trends: Line graph showing Duration over time
- Calculate correlations: =CORREL(Duration, Mood_After)
Advanced: Python Analysis
import pandas as pd
import matplotlib.pyplot as plt
# Load data
df = pd.read_csv('property_logs.csv')
# Filter workout logs
workouts = df[df['task'] == 'Strength Training']
# Plot weight progression
plt.plot(workouts['date'], workouts['max_weight'])
plt.title('Strength Progression Over Time')
plt.xlabel('Date')
plt.ylabel('Max Weight (lbs)')
plt.show()
# Calculate average reps per difficulty level
avg_reps = workouts.groupby('difficulty')['reps'].mean()
print(avg_reps)
Habit Tracking Best Practices
1. Start Simple
Don't track 15 properties per habit. Begin with 2-3 core metrics:
- Workouts: Duration + Difficulty + Energy Level
- Reading: Duration + Quantity + Focus
- Meditation: Duration + Quality + Mood After
Add properties as you identify what matters.
2. Log Immediately After Completion
Memory fades fast. Log property values right after finishing:
- Good: Finish workout, immediately log 75 min + Hard + High energy
- Bad: Try to remember 3 days later ("Was Monday's workout 60 or 75 minutes? 🤔")
3. Define Enum Values Clearly
For subjective properties (Difficulty, Quality), create clear definitions:
Difficulty scale:
- Very Easy: No challenge, could do 2x more
- Easy: Light effort, comfortable
- Medium: Moderate challenge, sustainable
- Hard: Significant effort, near limits
- Very Hard: Maximum effort, exhausted after
Consistent definitions = consistent data.
4. Review Weekly
Don't just log—analyze:
- Every Sunday, review the week's habit data
- Look for patterns (energy dips, performance peaks)
- Adjust habits based on insights
5. Focus on Trends, Not Daily Variance
One bad day doesn't erase a positive trend. Use rolling averages:
- Weekly average duration: Smooths daily variance
- 30-day average quality: Shows long-term improvement
- Month-over-month comparison: Reveals growth
Comparing To-Track to Dedicated Habit Trackers
How does To-Track stack up against specialized habit apps?
| Feature | To-Track | Habitica | Streaks | Done | Streaks (iOS) |
|---|---|---|---|---|---|
| Quantitative tracking | ✅ 19 properties + custom | ❌ No | ❌ No | ❌ No | ❌ No |
| Recurring modes | ✅ 3 types | ⚠️ Limited | ✅ | ✅ | ✅ |
| Data export | ✅ Full SQLite | ⚠️ Limited | ❌ | ⚠️ CSV | ❌ |
| Privacy | ✅ Offline-first | ❌ Cloud | ✅ iCloud | ❌ Cloud | ✅ iCloud |
| Property logging | ✅ Built-in | ❌ | ❌ | ❌ | ❌ |
| Time tracking | ✅ State-based | ❌ | ❌ | ❌ | ❌ |
| Custom workflows | ✅ States + tags | ❌ | ❌ | ❌ | ❌ |
| Trend analysis | ✅ SQL export | ⚠️ Basic | ⚠️ Charts | ⚠️ Basic | ⚠️ Basic |
Verdict: If you want quantitative self-tracking beyond checkboxes, To-Track is unmatched.
Conclusion: Your Habits Deserve Better Than Checkboxes
Binary habit tracking—did you do it, yes or no—is better than nothing. But it leaves so much on the table:
- No context (intensity, quality, duration)
- No insights (patterns, correlations, trends)
- No optimization (data-driven improvement)
Quantitative habit tracking with custom properties transforms your habits into a self-improvement laboratory. You're not just "working out"—you're progressively overloading, tracking volume, monitoring energy levels, and optimizing recovery. You're not just "reading"—you're measuring comprehension, analyzing focus patterns, and finding your ideal reading speed.
To-Track's property system makes this accessible:
- 19 default properties cover 90% of use cases
- Unlimited custom properties for niche tracking
- Property logs create a historical dataset
- SQLite storage enables deep analysis
Whether you're a fitness enthusiast tracking PRs, a knowledge worker optimizing study patterns, or a meditator measuring practice quality, custom properties give you the data you need to improve.
Your habits aren't checkboxes. They're complex, multidimensional activities that deserve sophisticated tracking. Go beyond ✅ and start measuring what truly matters.
FAQ
Q: Do I have to log every property every time? A: No. Properties are optional. If you skip a property (e.g., don't log "Mood" one day), it's simply not recorded. Log what's meaningful in the moment.
Q: Can I edit property logs after the fact? A: Yes. Property logs are editable via the task history timeline. Long-press any log entry to update values if you made a mistake or remembered additional details.
Q: How many properties should I track per habit? A: Start with 2-3 core metrics. Add more only if you find them valuable. Tracking 10 properties per habit creates logging fatigue.
Q: Can I create custom enum values? A: Yes! Enum properties let you add new values. For example, the default "Difficulty" has 5 values, but you can add "Extremely Hard" if needed.
Q: What happens to property logs when I delete a task? A: Property logs are preserved in the database even if you delete the parent task. Export data before deletion if you want to retain access via the UI.
Q: Can I track habits without recurring tasks? A: Yes, but recurring tasks are ideal because they auto-reset after completion. For non-recurring tasks, you'd manually create a new task each time (inefficient for daily habits).
Q: How do I calculate averages or trends? A: Export property_log table to CSV and analyze in spreadsheet software (Google Sheets, Excel) or use To-Track's AI statistics generator (Pro feature) for custom charts.
Q: Is there a limit to custom properties? A: No limit on creating custom properties. However, each task can only have a subset assigned (choose the properties relevant to that specific habit).
Ready to transform your habits? Download To-Track and start tracking the metrics that matter.
Try To-Track free
Offline-first tasks, custom states, time tracking. No account required.