UPDATE: I’ve now implemented the email features described here.
My email is dysfunctional. I keep things in my inbox because I can’t afford for them to go out of sight, out of mind — but then that’s exactly what happens. They get buried deeper and deeper in my inbox by all the other messages I delusionally think I’m going to deal with. It’s a given that some things will fall through the cracks. I just need to make sure I have some control over which things those are.
Let’s start with a straw poll:
- The To-do Excuse. You’re going to need to deal with it but you’re not ready to yet. (Some of this is procrastination, some is legit.)
- The Waiting Excuse. It’s something you’ve replied to but you don’t want to forget about it in case the recipient drops the ball. I.e., you might need to deal with it later.
- The Reference Excuse. It has information that you’ll want to refer to. (Different than maybe needing to deal with it later in that there’s nothing for you to remember to do.)
- The Laziness Excuse. It’s one of many messages that has outlived its usefulness in your inbox but you haven’t yet slogged through and archived them all.
In other words, it’s either serving as a to-do item, a might-need-to-do item, an item for future reference, or there’s no reason for it to be there at all. Or, of course, you haven’t read it yet. Which brings us to…
Inbox Zero is a simple system devised by Merlin Mann for keeping your email inbox empty. The idea is that your inbox should really only be for messages you haven’t actually read. So every time you check your email, do something with every single message. Specifically, do one of the following:
- Archive: just get rid of it (originally Delete).
- Delegate: get someone else to deal with it.
- Respond: if it takes just a few minutes, fire off a reply right then.
- Defer: put it on a to-do list, archive it, and deal with it later.
- Do: handle whatever the email actually needs you to do, then archive it.
The first one, Archive/Delete, is huge and completely destroys the Reference Excuse for a message to sit in your inbox. If it’s ok for a message to go out of sight, out of mind — like because you’ll go looking for it when you need it — then archive it immediately. Modern email clients make it easier to search among a million messages than to scroll and scan through a thousand. But even if you don’t have decent search, you should still get it out of your inbox. Just put it in a folder called Reference and hunt through that when you need to find it.
The last one, Do, is dandy. It helps with the To-do Excuse. The procrastination part anyway.
It’s the middle three — Delegate, Respond, Defer — that aren’t actually so helpful for keeping your inbox small. None of them address very well the Waiting Excuse, the Laziness Excuse, or the other half of the To-do Excuse (legitimate need to defer dealing with an email). First, Delegate and Respond don’t get things out of your inbox if you need to make sure they get dealt with and follow up if not. And Defer also can’t get a message out of your inbox without some system for transferring it to a to-do list, which is often too much overhead. However easy it is to put something on your to-do list, you’ve still got to retrieve the email again when it’s time to deal with it. Chances are you’ll be inclined to just leave it in your inbox because you’ll be dealing with it Really Soon.
So of the four excuses for a message to sit in your inbox, only the Reference Excuse has a satisfactory solution. What can be done about the others?
Proposed Email Features
What if you had a snooze button for email — a way to easily make a message disappear from your inbox for 24 hours (or any number of days)? The To-do Excuse: eliminated.
And what if, when you sent an email or replied to one, you could have your own message re-ping you, i.e., appear in your inbox after a certain amount of time if the recipient failed to follow up? This, by the way, is one of the Getting Things Done (GTD) principles: have systems you can fully trust to remind you of things so you can put them out of your mind in the meantime. With luck the other person will deal with your message or respond in some way that helps move things forward. If not, the conversation will reappear in your inbox and you’re back where you started. The Waiting Excuse: eliminated.
Finally, what if you had a simple way (just a couple keystrokes) to, while reading a message, give it an expiration date, i.e., specify a number of days after which it should automatically leave your inbox and archive itself? The Laziness Excuse: if not eliminated, at least alleviated.
Even if I’ve convinced you in the abstract that these are good ideas, they hinge on the interface being very quick and easy. So how would they actually work?
Snooze (eliminates the To-do Excuse; makes it easier to Defer)
For any message, type “sN
Anti-procrastination tweak: It’s possible you’ll just keep snoozing a message indefinitely. Maybe that’s ok — at least it keeps being brought back to your attention, solving the out of sight, out of mind problem. But if it’s a problem, the snooze button could force you to double the snooze length each time you snooze a message. That way you will at some point not be able to snooze it again without admitting that you’re essentially never going to deal with it.
Re-Ping (eliminates the Waiting Excuse; makes it possible to Archive/Delete immediately after a Delegate or Respond)
Have an additional email header along with To, Cc, Bcc, and Subject for outgoing mail:
In N days, if there’s no reply yet, your own email shows up back in your inbox, and you can reply to it to nudge the person with a “just making sure you got this”. This could also be treated as just another form of snooze: “Put this conversation back in my inbox in N days if no new replies show up before then.” Again, when you get an email on an important topic, relating to a work project perhaps, you tend not to archive it even after replying because you need to make sure the thread doesn’t get dropped. By specifying a re-ping you can confidently archive the email after replying since the thread is now guaranteed not to end up out of sight, out of mind.
I propose this as a header because I think it should be part of composing an email and should work identically whether it’s a reply in an existing thread or a brand new message.
Auto-Expire (alleviates the Laziness Excuse; less inbox slogging)
It might even be valuable to cultivate the habit of setting an auto-expire for every message as you read it. Auto-expire 0 is the special case of archiving right now and auto-expire 999 (i.e., almost 3 years) would be the equivalent of choosing to just leave it in your inbox. Most messages probably have a much shorter horizon of possible relevance. If done right, you might never have to do any painful inbox housekeeping.
These features — Snooze, Re-Ping, and Auto-Expire — offer a quick way to confidently get stuff out of your inbox. Archive+search is a huge step in that direction, but many of us clearly need more than that. You might complain that Snooze and Re-Ping only temporarily remove things from your inbox, but it’s better than that. First, if you snooze everything till closer to when you’ll be acting on it, that alone shrinks the average size of your inbox a lot. Second, it will often be the case that when the message reappears it will be much easier to decide to just archive it. Maybe you delegated something and it actually got done. Or there was some event coming up but now that it’s closer you know that you have other plans.
The Snooze and Re-Ping features allow you to almost instantly get a message out of your inbox and out of your mind, while still having full faith that it will re-appear in time for you to take necessary action. Auto-Expire spreads out the work of inbox housekeeping. It helps keep down the size of your inbox to the extent that you put off the task of archiving messages that are no longer relevant. Whether this actually increases efficiency is an empirical question but the rationale is that it saves having to open up and think about a message twice. While you’re reading an email about a conference coming up in a couple months you can set it to auto-expire in 90 days. You’ve thus ensured that soon after the conference is over, that email will no longer be cluttering your inbox — with zero further action from you.
The only one of these I’ve actually tried so far is Snooze, which I hacked up in Pine (that’s right, I mainly use Pine for my personal email). I do sometimes find myself resnoozing indefinitely, so I probably need the anti-procrastination tweak mentioned above. But I believe (hope) that by adding Re-Ping and Auto-Expire I will finally achieve Inbox Zero Nirvana.
UPDATE: See the follow-up to this article, Email Snooze and Gmail Zero.
Thanks to Melanie Reeves, David Yang, Michael Tiffany, Patrick Jordan, Dave Pennock, Kevin Lochner, Mohammad Mahdian, Ed Fu, Sharad Goel, and Samson Yeung for reading drafts of this. I’ve also gotten some great comments on Hacker News. Thank you!
Image by Kelly Savage.
P.S. Since writing this I’ve learned of two relevant startups: Etacts.com is trying to solve the Re-Ping problem, among other things. And HitMeLater.com implements email snooze. I would prefer these to be simple client-side features though.
P.P.S. Thanks for the great suggestions in the comments! Here are the new services I’ve tried, none of which I’m entirely happy with:
- Boomerang for Gmail implements Snooze, awkwardly and cumbersomely. It also implements delayed sending.
- ActiveInbox is a monstrosity of a GTD system. I’ve barely tried this but it seems far too heavyweight for me.
- Gmail’s Priority Inbox seems entirely wrongheaded to me, if you’re striving for Inbox Zero. If you’ve resigned yourself to an ever-growing inbox then it’s helpful. Better to have Google’s fancy AI decide which messages go out of sight, out of mind than for it to be essentially random.
- Email Oracle [UPDATE: now defunct] implements Re-Ping as well as a crazy stalker-ish feature to try to tell you if the recipient opened your email. I prefer followup.cc:
- Followup.cc implements Re-Ping by just cc’ing (or bcc’ing), e.g., firstname.lastname@example.org to re-ping in 3 days. Works very well and I use this all the time now. I would just prefer to do this fully client-side. It also works ok as Snooze by forwarding messages to followup.cc, at least in Gmail with its thread-centricness (you actually get the original message back in your inbox, not just a forwarded copy of it).
Appendix: Notes on How to Hack Snooze, Re-Ping, and Auto-Expire into Email Clients
When you hit sN, where N is a real number, a client-side script applies the label “snooze-N” (or puts it in a folder called such) to the message and removes it from the inbox. A daemon checks all such labeled emails every so often and removes the label and puts it back in the inbox (applies the “Inbox” label) when the email’s date is >= N days in the past. Note that this means a proliferation of labels/folders of the form “snooze-N”. An open question is whether, when putting something back in the inbox, to also mark it unread. If you’re succeeding in keeping your inbox very small then this would be unnecessary.
There are two parts to the hackery here: creating the additional field, “Re-Ping:”, in the compose headers, and keeping track of whether there has been a reply. It should be fine if the Re-Ping header is included in the actual outgoing message. For the actual re-pinging, a partial solution in Gmail is easy due to its thread-centricness. Don’t actually check if there was a reply, just apply the Inbox label after the specified amount of time. If a reply is already in the inbox, fine. This works because a whole thread (conversation) is either in the inbox or not. In fact, all labels are applied to threads, not individual messages.
The only thing missing with the above hack is that you may have archived the conversation after a reply came in but before the re-ping time. In that case you don’t actually want the conversation to reappear in your inbox. So to do this right you have to actually keep track of each outgoing message with a re-ping set and do the re-ping conditional on no reply.
Implementation-wise this is basically the inverse of Snooze. Label the email “auto-archive-N” and remove it from the inbox at the appropriate time.
 I’ll always archive and never delete a message, simply because the cognitive cost of deciding that I’m certain that I’ll never need to look at it again is too high. Consider the economics: How much time will you save, cumulatively, by just always hitting “archive” without thinking about whether you might ever need to look at it again? And how much will it cost you to have your archive folder full of junk? The additional storage probably costs nothing, and if your email client’s search feature is decent it won’t slow down your searches either. In other words, there’s only upside. And that doesn’t even factor in the chance of accidentally deleting something important!
 If you sometimes delay responses so as not to seem overeager, or because you want your reply to arrive during business hours, or any number of other reasons, check out this clever idea. I think my proposed Snooze feature also partly solves this problem.
 I’m anti-folders for the same reason I never delete anything. I don’t want to waste time deciding what to do with a message that I might never look at again. Everything goes in one folder and that’s where I go to find anything.
 It would be even better if people set expiration dates on their own outgoing mail, but I can’t think of a way to get that convention to catch on.