IT IS HERE! Get Smashing Node.JS on Amazon Kindle today!
Show Posts
← Back to homepage

Email you receive on a daily basis falls into two primary categories:

  • A. Mail written by someone on a Mail User Agent (MUA), like iOS Mail or Gmail.
  • B. Mail written by a computer program, normally transactional email.

Almost every web application you use on a regular basis will send you email when different transactions occur. If someone adds you as a friend on Facebook, you’ll likely receive an email about it sent by Facebook’s backend server.

And unlike category A, the information contained in a lot of email from category B also exists in a web application you can access with a web browser. Chances are good you could visit facebook.com and read the notification (and even act on it) before you check your inbox, yet that same message will still be waiting for you in your inbox in an unread state.

You’ve probably found yourself reading chat email digests of messages you’ve already read in the original chat client (ironically, this even happens with Gmail’s own Google Talk). You might have even read emails about “new” pull requests you actually merged on Github hours ago.

The solution is actually a quite simple one: enable applications to dismiss email they’ve sent in the past, once they know that the email is no longer relevant.

A rough implementation could be as follows:

  1. Outgoing transactional email would contain a dismissal id in the form of a proprietary SMTP header: X-Read-ID: <hash>
  2. Once the information is “read” from the website or application, a new email is emitted with a custom format read({user}, {token})@host.com.

For example, if I’m sending Guillermo (rauchg@gmail.com) a notification email I would include a header like this: X-Read-Id: 55765639d46104a0de.

If Guillermo then goes to the website and reads the notification, I would now send a new empty email to read(rauchg, 55765639d46104a0de)@gmail.com. The email provider can then decide what to do with this amazing information. Gmail could archive those emails for you. Non-compliant email servers will simply bounce the email, making this completely “backwards compatible”.

9 Comments

stelt said

When people share a mail account, or a web account, things are not that easy. Though if it’s an option I can turn on/off, count me in.

Years ago I had a similar thoughts, maybe you can combine them somehow:
- I get an e-mail for every update of something, why not combine all updates since the last one I read already. Though as I might want to know the timeline of intermixing mail, that could also be a styling option.
- Why not just show me the live website right there in my mail message window, if I’m on-line. Also a styling option, you can easily toggle preferably

anton said

this could finaly make email notifications usable again. Really like this idea

Paul Jensen said

This is a good idea. The scope of this problem also extends to multiple Twitter clients and push notifications to devices. I’m amazed that Apple haven’t implemented such a feature for their internal push notification API.

Aaron Parecki said

I love the idea. Not so sure about the exact implementation details, but I think this is on the right track!

I wonder who would have to make the first move for this to become widely implemented. Facebook? Gmail? If Gmail and Google Plus teamed up they could jumpstart it.

Jeffrey Paul said

We already have an email-address-extension syntax for this:

user+extratag@example.com

Guillermo Rauch said

@Jeffrey

The problem is that non-compliant servers could yield 2x the amount of email. That would be quite ironic :P

Mohammad said

I think your inbox should be completely independant to web transactions – so I actually think this is a bad idea. It feels like I am giving an outside application the power to alter my inbox.

Erik said

Along the lines of what Jeffery said, GMail already allows this using the syntax he describes above. It is then easy to set up a filter using the {+ExtraTag} and send the email wherever you want it to go.

Charlie said

I like the idea. Also, I have the same problem with iOS notifications. If I’ve already read the update within the app, the notification should be cleared across all my devices where I have that app installed.

Your thoughts?

About Guillermo Rauch:

CTO and co-founder of LearnBoost / Cloudup (acquired by Automattic in 2013). Argentine living in SF.