Reply Tracker
Reply Tracker (Reply Zero) helps users track which emails need replies and which emails they're awaiting replies on. It automatically manages Gmail/Outlook labels based on email flow.
Core Components
Database Models:
- •
ThreadTracker- stores tracking state and timestamps - •
EmailAccount.outboundReplyTracking- enables outbound reply detection - •
ActionType.TRACK_THREAD- action that removes "Awaiting Reply" labels
Labels:
- •
"To Reply"- emails that need your response - •
"Awaiting Reply"- emails you sent that need their response
How It Works
Inbound Flow (Receiving Emails)
- •Adding "To Reply": Regular rules with LABEL action add "To Reply" labels
- •Removing "Awaiting Reply": Rules with TRACK_THREAD action remove "Awaiting Reply" labels when replies arrive
Outbound Flow (Sending Emails)
- •Removing "To Reply": Always removes "To Reply" label when you reply (if
outboundReplyTrackingenabled) - •Adding "Awaiting Reply": AI decides if your sent email needs a response and adds label accordingly
Settings
Users control this via one unified setting:
- •"Reply tracking": Controls both outbound tracking (
outboundReplyTracking) and automatically adds TRACK_THREAD actions to "To Reply" rules
Key Files
- •
apps/web/utils/reply-tracker/outbound.ts- handles sent emails - •
apps/web/utils/reply-tracker/inbound.ts- handles received emails - •
apps/web/utils/ai/actions.ts- executes TRACK_THREAD action
Future Improvements
The current implementation works but has some architectural complexity that could be cleaned up:
- •TRACK_THREAD action is hidden from users but managed via settings
- •Two separate systems (outbound tracking + TRACK_THREAD actions) that need to stay in sync
- •Hard-coded label names ("To Reply", "Awaiting Reply") - users can't customize these
- •Could potentially be simplified to a more unified label-based approach in the future
- •May want to support todos