Reminder emails that people do not hate
Nobody reads their 47th task reminder. We learned this the hard way building 77 email templates across 6 locales. The daily digest became our answer - an activity-stream approach that pulls people in instead of pushing them away. Here is the engineering story behind reminder emails that actually get opened.
Summary
- 77 email templates across 6 locales - This is our candid engineering story of building reminder emails that people actually open. The scale of the problem forced us to think differently about notification design
- Three frequency modes solve inbox overload - Electric (immediate), Mindful (every 3 hours), Chilled (every 24 hours). Users control their own notification load instead of us deciding what matters
- Per-item unsubscribe instead of global opt-out - “Stop watching this” instead of “Unsubscribe from all” preserves engagement while respecting preferences
- The daily digest became an activity stream - Instead of listing tasks, we show who did what. The approach mirrors how Facebook pulls you back in with at-mention notifications. See email integration options
The 2-hour reminder timing issue nearly broke our email engagement metrics. We had built what we thought was a helpful feature - automatic reminders when tasks approached their deadlines. What we actually built was an inbox assault weapon.
The problem with reminder timing
The original design seemed sensible. Task deadline approaching? Send a reminder. Simple.
Except it was not simple. A task due at 5pm would trigger a reminder at 3pm. Another user in a different timezone would get reminded at 3pm their time - which might be 8am for the original assigner. The math got weird fast.
From our internal discussions, one observation kept surfacing:
“The default today is that you follow everyone. It simply does not work.”
That was the core insight. Our notification system assumed everyone wanted to know everything. In practice, that meant nobody paid attention to anything.
The social pull strategy
I had been thinking about this problem in terms of engagement mechanics. In an early Basecamp discussion, I wrote:
“One solution is to copy the Facebook playbook. They pushed stuff your friends were doing to you - meaning you had to login.”
That sounds manipulative when you read it back. But the underlying insight was useful: you need to be “pulled in” by others, not pushed at by the system. The difference between “John completed task X” and “You have 47 tasks due” is the difference between social relevance and administrative spam.
The question became:
“There must be an automated way to drag back a disengaged invitee into the app using the actions of their coworkers.”
The activity of people you care about is inherently more interesting than generic system reminders. A daily digest should feel like catching up on what your team did, not like reading through your overdue homework list.
The daily digest pivot
Our daily digest had always been a simple task list. What you need to do today. What is overdue. Here are your reminders.
The feedback we got was predictable: people stopped reading it.
In a product discussion, I pushed for a fundamental rethink:
“The daily digest could be critical here… should take on a more activity-stream like approach.”
Instead of “here are your tasks,” the digest became “here is what happened.” Instead of a to-do list, an activity feed. Instead of obligations, updates.
The structure shifted from:
- You have 3 tasks due today
- Task A is overdue by 2 days
- Reminder: complete Task B
To:
- Sarah completed the proposal review
- Mark left a comment on your draft
- The client onboarding for Acme Co reached step 4
Same information, completely different emotional response.
In our discussions with enterprise clients, this pattern kept surfacing. One global real estate firm evaluating Tallyfy specifically mentioned wanting PowerBI integration for notification analytics - they needed to understand notification patterns across thousands of users in 80+ countries. The scale of the problem forced us to think about digests as data, not just emails.
The frequency design
When we built the watching system, we created three frequency options. From Issue #6034:
“Frequency options: Electric - Notify for every event immediately. Mindful - Notify for aggregated events every 3 hours. Chilled - Notify for aggregated events once every 24 hours.”
The naming was deliberate. Not “Real-time,” “Batched,” and “Daily.” Those are technical descriptions. “Electric” feels urgent. “Mindful” suggests thoughtful consideration. “Chilled” implies relaxed, low-pressure updates.
Words communicate behavior before you read the description.
This same philosophy applied to reminder emails. We stopped thinking about “reminders” and started thinking about “frequency preferences.” The user decides how often they want to hear from us. Not the system. Not their manager. Them.
The 77 template problem
Here is the scale challenge nobody talks about. From Issue #8876:
“Create comprehensive testing infrastructure for all 77 email templates.”
Seventy-seven templates. Each needs to work in 6 locales. Each has different content requirements, different trigger conditions, different personalization logic.
Multiply 77 by 6 and you get 462 email variations. Each one needs to render correctly, link properly, and not look broken in every email client from Gmail to Outlook 2007. Testing this manually was impossible. We built a testing infrastructure specifically for email templates because there was no other choice.
The complexity forced discipline. Every template had to follow the same structure. Every template had to use the same components. Every template had to fail gracefully when data was missing.
The styling philosophy
Thomas captured our design principle in a Basecamp discussion:
“Compact, non-intrusive styling that doesn’t appear ‘loud’.”
Email inboxes are crowded. Promotional emails scream for attention with big buttons and hero images. Our workflow notifications compete in that environment but should not participate in it.
The goal was emails that feel like messages from a colleague, not marketing from a vendor. Plain text where possible. Minimal images. Links that look like links, not CTAs disguised as links.
Issue #8840 formalized this:
“Compact, non-intrusive styling that doesn’t appear ‘loud’.”
Every time someone suggested “what if we added a banner” or “what if we made the button bigger,” we came back to this principle. The best reminder email is one that feels like information, not interruption.
The unsubscribe problem
Traditional email marketing has a global unsubscribe. Click it, you are done. No more emails ever.
That model fails for workflow software. If you unsubscribe from task notifications, you stop receiving assignments. You miss deadlines. You break processes. Global opt-out means global dysfunction.
Our approach, documented in our design spec:
“Instead of ‘Unsubscribe’ - use ‘Stop watching this’ to turn off that specific watch.”
Per-item granularity. You can stop watching a specific process without affecting your other notifications. You can mute reminders for one project without going dark on everything.
This required rethinking the email footer entirely. Instead of “Unsubscribe from all,” we show “Stop watching [ProcessName]” as a prominent link. Users can turn off what they do not need without nuclear options.
The tradeoff: more complexity in the email footer, more explanation needed. But the engagement numbers justified it. Users who can fine-tune their notifications stay subscribed longer than users whose only choice is all-or-nothing.
Magic links for one-click actions
The friction of “click link, log in, find task, complete task” was killing completion rates. Issue #5269 pushed us toward a better approach:
“Daily digest with magic links for one-click actions.”
The magic link architecture we had already built for guest access became the foundation. A unique, time-limited, cryptographically signed token embedded in the email. Click it, authenticated, action complete.
For simple task completions - especially acknowledge-type tasks with no required fields - this eliminated four steps of friction. The email becomes the interface. No app switch needed.
The daily digest could now include not just “Task X needs attention” but an actual “Complete Task X” button that worked without authentication.
The aggregation question
When you batch notifications, you have to decide what gets bundled together. Early implementation hit this question directly:
“Let us say a team member is watching process_A and process_B and we assume that mindful time is 2 hours. In two hours, some fellows completed two tasks of process_A and three tasks of process_B. Will we notify with two separate emails - one for process_A and another for process_B - or with a single email containing all watched objects?”
We went with separate emails per watched object:
“Each watch generates a completely separate notification to its own target for that specific object. We are not aggregating watches or mixing them up in any way. ProcessA has a watch and ProcessB has a watch in this example, each separate, and each watch has its own frequency.”
The reasoning: if you want to stop notifications for ProcessA, you should be able to do that without affecting ProcessB. Mixing them together makes the unsubscribe problem harder.
More emails but cleaner mental model. Each email represents one thing you chose to watch. Turn off that watch, turn off those emails. No side effects.
The daily digest structure
After several iterations, our daily digest settled on a specific structure.
Section 1: Activity stream. What happened since your last digest. Who did what. Tasks completed, comments added, processes started. This is the “pull you in” section - social information that creates curiosity about what your colleagues are doing.
Section 2: Your action items. Tasks assigned to you. Upcoming deadlines. This is the traditional reminder content, but it comes second. You get the interesting stuff before the obligatory stuff.
Section 3: Watching updates. Changes to things you are watching but not assigned to. Optional section that only appears if you have active watches generating updates.
The order matters. Leading with obligations feels like homework. Leading with activity feels like news.
The timezone complexity
Remember that 2-hour reminder timing issue? Timezones made it worse.
A task created by someone in London with a 5pm deadline means 5pm GMT. A team member in San Francisco sees that deadline at 9am their time. The 2-hour reminder for London fires at 3pm GMT, which is 7am in San Francisco.
Do you remind the San Francisco person at 7am? At 3pm their time (which is 11pm GMT)? The “2 hours before deadline” rule makes no sense across timezones.
We eventually moved to working-hours-aware reminders. Notifications respect the recipient’s timezone and working hours. A deadline at 5pm London time generates a reminder during San Francisco working hours, not at 7am.
This connects to the broader working hours rules we built for the system. Email timing is just one manifestation of timezone-aware scheduling.
Testing email at scale
The testing infrastructure for 77 templates across 6 locales deserves its own discussion. From Issue #8876:
“Create comprehensive testing infrastructure for all 77 email templates.”
We built a test harness that could render every template with representative data, capture screenshots, and flag rendering problems. Each deploy ran the full template suite. Each locale got tested independently.
The most common bugs:
- Translated strings too long for their containers
- Variables missing in certain locales
- Date formatting wrong for regional preferences
- Links breaking due to URL encoding issues with non-ASCII characters
Without automated testing, these would surface in production. With testing, they surfaced in CI before anyone saw a broken email.
What we learned about reminder cadence
The data taught us something counterintuitive. More frequent reminders did not increase task completion. Past a certain threshold, they decreased it.
In conversations with operations teams, we kept hearing the same pattern. One healthcare services company told us they switched from another tool specifically because it had no reminder capabilities at all - but then found that constant reminders were equally useless. The right frequency matters more than the feature existing.
Users who received immediate notifications for everything completed fewer tasks than users on daily digest. The constant stream created notification blindness. The daily batch created a ritual - check the digest, plan the day, work through the tasks.
This matched the Facebook insight from early discussions. Social platforms succeed because they create habits, not because they interrupt constantly. The daily digest became a daily habit. The constant ping became background noise.
The compact email wins
Our “compact, non-intrusive” philosophy proved out in click-through rates. Emails that looked like system messages outperformed emails that looked like marketing.
No hero images. No promotional banners. No “NEW FEATURE” announcements embedded in task notifications. Just the information needed to take action.
The instinct to add more - more context, more links, more opportunities - always made engagement worse. Every addition created decision fatigue. Every embellishment made the core action less clear.
Minimalism in email design is not aesthetic preference. It is conversion optimization.
What we left out
Smart prioritization of reminders - We considered analyzing task urgency, user behavior patterns, and historical completion data to send fewer, smarter reminders. The machine learning complexity did not justify the marginal improvement over simple frequency controls.
Reminder snoozing - “Remind me about this in 2 hours” sounds useful until you realize it creates a queue management problem. Users who snooze end up with growing snooze lists they never address. We opted for simple completion or deadline extension instead.
Channel preferences per task type - Some users wanted email for approvals but Slack for comments. The permutation explosion of task type times notification channel times frequency made this impractical to build or explain.
Predictive send timing - Sending emails when users are most likely to open them. The data science was interesting but the implementation fragmented delivery timing in ways that made debugging hard and created user confusion about “why did I get this at 3am?”
The ongoing tension
Every notification system lives in tension between completeness and respect. Users want to know everything. Users also want a manageable inbox.
“Electric” serves completeness - immediate, comprehensive, miss nothing.
“Chilled” serves respect - daily summary, minimal intrusion, sustainable engagement.
“Mindful” sits in between - not overwhelming but not too delayed.
Giving users the choice is the only answer that scales. Some people want their phone buzzing constantly. Some people want one email per day. Both are valid preferences that the system should accommodate without judgment.
The reminder email that people do not hate is the one they chose to receive at the frequency they selected. Everything else is spam with a workflow-shaped excuse.
Related questions
How do reminder emails differ from watching notifications?
Reminder emails trigger based on deadlines - “this task is due soon.” Watching notifications trigger based on changes - “something happened to this thing you care about.” You might get both: a reminder that your task is due tomorrow and a watching notification that a colleague commented on it. Different triggers, different information, complementary purposes.
Can I disable all reminder emails but keep other notifications?
Yes. Assignment notifications, watching notifications, and reminder notifications are independent streams. You can turn off deadline reminders while keeping notifications about assignments and watched items. The task notification settings let you control each stream separately.
Do reminder emails respect my working hours?
Yes. If you have configured working hours in your personal settings, reminder emails will send during those hours in your timezone. A task due at 5pm will not generate a 3am reminder just because that is when the deadline technically falls in GMT.
How does the daily digest handle different timezones?
The digest sends at the start of each user’s working day, based on their configured timezone. A team spread across London, New York, and Sydney will receive their digests at different absolute times but the same local time. Each digest contains activity from the previous 24 hours relevant to that specific user.
Can managers override someone’s notification frequency?
No. Notification frequency is a personal preference controlled by each user. Managers can assign tasks and set deadlines, but they cannot force someone to receive immediate notifications if that person prefers daily digests. The exception is system-critical notifications like security alerts, which ignore frequency preferences.
About the Author
Amit is the CEO of Tallyfy. He is a workflow expert and specializes in process automation and the next generation of business process management in the post-flowchart age. He has decades of consulting experience in task and workflow automation, continuous improvement (all the flavors) and AI-driven workflows for small and large companies. Amit did a Computer Science degree at the University of Bath and moved from the UK to St. Louis, MO in 2014. He loves watching American robins and their nesting behaviors!
Follow Amit on his website, LinkedIn, Facebook, Reddit, X (Twitter) or YouTube.
Automate your workflows with Tallyfy
Stop chasing status updates. Track and automate your processes in one place.