My task management system with Things, iCal, Mail, and a little magic

I have been using Cultured Code’s Things application for a while now. It is still in beta, but it is shaping up to be a wonderful task management app. What is “task management” you might ask? Think “to do lists.” But Things is more than just some lists with check boxes. Things has a wonderful tagging system, projects, “areas,” a Today list, a Next list, repeat tasks, and a bunch of other features that I’m just going to tease you with here. If you want to learn more about Things you should watch this video because this post isn’t about how great Things is, it’s about how I incorporate Things into my workflow.

As I said above, I use Things to handle my task management. I use Apple’s Mail application to handle my e-mail and I use iCal to keep up with my appointments. One of the big features in Apple’s Leopard operating system is “system-wide calendar.” This means that anything in iCal is available for other applications to read and manipulate. This also means that other applications can create things “in iCal” like events or tasks. I know, at first that doesn’t sound very interesting, but let me explain why that is a good thing. Things allows me to sync some of its “lists” with iCal calendars. This means that I can now create a new task in one application that syncs with iCal, and it will automagically appear in my Things list. If that doesn’t sound exciting let me demonstrate with a real world example… after the break.

A simple example

Let’s say I receive this e-mail:


This is something I definitely want to turn into a task so I remember to actually blog! I simply press CTRL-i and suddenly it pops into my “Inbox” in Things as a new task. Simple. Done. Later I will process everything I have collected in my “Inbox” with appropriate tags, deadlines, etc.


So how did this magic happen? I’m so glad you asked.

How to make it work

First of all, you have to tell Things to sync with iCal. Open up iCal and create a new calendar group by choosing File » New Calendar Group (or Shift-CMD-N). I call mine GTD. Next, create two calendars: Inbox and Today (note the capitalization). I like to color coordinate my calendars, so my Inbox is dark grey and my Today is red.


Now you need to open up Things and go to the preferences under Things » Preferences (or CMD-,). Under the “iCal” tab select your Inbox calendar from the list on the left and then select “Sync with Inbox” from the drop-down list on the right. Next select your Today calendar on the left and choose “Sync with Today” on the right. (The Today items are tasks you have flagged as things to get done today, so this is a nice list to have available for quick viewing in an app like Anxiety or Out of Mind.)


Now, any task that you put in your iCal “Inbox” calendar will go to Things, and any task that you put in your Things inbox will go to iCal. But, we aren’t done yet. We need that quick and easy way to get a Mail message into this inbox. For that we need a little magic. Mail Act-On is a Mail plug-in that allows you to create “mail rules” that only happen when you press a certain keyboard shortcut or select that option from a certain menu. This is how I made “CTRL-i” send my message to the Inbox.

While that is downloading you will also need to go to this page and click on the “Download” link on the right. This is an AppleScript file that will make the magic happen. Don’t worry about how this all works, just trust that it does.

If you have the time you may also want to download and read the Mail Act-On FAQ (PDF file). I’ll tell you everything you need to know for this tutorial, but the MAO plug-in is pretty powerful and you just might find other uses for it in the future.

Once the AppleScript file from the Pastie website is downloaded you will need to go to your Downloads folder and find it. It should be called something that starts with “pastie-” and then ends with a bunch of numbers and letters. Rename this file something like “MailToInbox.scpt” and move it to “~/Library/Scripts/Mail Scripts” (that’s your home folder » Library » Scripts » Mail Scripts). If the “Mail Scripts” folder doesn’t exist then create it inside your Scripts folder. If the “Scripts” folder doesn’t exist then create it inside your Library. If the “Library” folder doesn’t exist inside your home folder then you should see your local Mac genius immediately… your computer has issues. Seriously, though, the most important part of where to put this file is being able to find it later… it really doesn’t have to live in one specific folder.


Once that is finished and Mail Act-On has downloaded, run the MAO installer and then restart Mail. Next, open up Mail preferences by choosing Mail » Preferences (CMD-,). Go to the “Rules” tab and you should now see a mail rule called “Act-On: Stop Processing Receive Rules” which was created automatically by the plug-in. Make sure this rule is at the bottom of the list of mail rules. You will want to create all of your “Mail Act-On” rules below this one. Now, create a new mail rule by clicking the “Add Rule” button on the right. Under “Description” enter Act-On: i | Add to iCal Inbox. That syntax is important. Basically, the “Act-On: ” is necessary for the plug-in to see this rule, the “i” is the shortcut key you want assigned to this action (case sensitive). The ” | ” pipe character (located above the “\” character on your keyboard) tells the plug-in that the name of the action is coming up next. The last part “Add to iCal Inbox” can be anything you want.

Next choose “If Any of the following conditions are met: Every Message” from the two drop-down boxes.

And finally under “Perform the following actions” select: “Set Color of background Red” and “Run AppleScript” (here is where it is important to be able to find the script file from earlier). Click OK. Mail will ask “Do you want to apply your rules to messages in selected mailboxes?” Just click “Don’t Apply” and move on. (If you accidentally click “Apply” instead nothing should happen.)


So what does this mail rule do? The first action here colors the message background red in my list of messages. This isn’t overly important since you are probably just going to delete the message anyway (since its contents are now in your to do list), but I think it’s a nice touch. The second action runs that AppleScript file from earlier which actually does the hard work of creating the task in your Inbox calendar of iCal using your message subject as the title and body and the notes.


That’s it! You’re done. Now whenever you receive an e-mail that needs action, all you have to do is select it and press “CMD-i” and it will be whisked away to your iCal/Things Inbox. You can also press the “`” key (next to the “1” key) within Mail to open up a window with all available Mail Act-On actions.

Congratulations! You are now an e-mail task management machine! Hopefully this method will help reduce your stress, shrink your e-mail inbox, and help you be productive.

In the future I am hoping that the Things developers will incorporate support for another great Mail plug-in called MailTags which would allow users to tag e-mails in Mail before sending them to the Things Inbox.

For some other great uses for Mail Act-On read this post on 43folders from Merlin Mann.

This post was inspired by all of the wonderful solutions that other people smarter than me came up with in the Things forum. The AppleScript used here was modified by me from this script created by Marcel van der Boom.

  • bog

    Hi. I followed all of the steps mentioned in this blog post.

    But now I’m getting two additional duplicates of certain items in Things. The duplicates have notes with mailitem link in them.

    Did you come across this problem as well?

  • benstewart

    I have not encountered this problem at all. I have recently updated the AppleScript file (actually I have created a couple of other scripts to add tasks in different ways) but even before doing so I never received duplicates.

    When you find a solution please let me know so I can help anyone else with this same problem.


  • bog
  • Enyko

    I don’t have Mail Act-On but tried to do these steps without it. Of course it didn’t work. But I am wondering what part of the script (MailToInbox.scpt) is looking for MAO? When creating the rule, I assumed it would still work.

  • benstewart

    @Enyko – The script will work without MAO, however it will automatically be applied to all messages that meet your mail rule’s criteria–which in my case is “all messages.” I don’t want every email to go into my Things inbox and so I use MAO to control which messages I send to Things with a keyboard shortcut.

    Although I haven’t posted an update to this post, I now have two separate scripts to do this. One automatically adds the email in Things without ever leaving The other script stops during the process and lets me edit the new Things entry before it is saved.

  • Enyko

    Hey Ben, I appreciate the reply! Thanks for the explanation. I have two follow up questions if that’s ok.

    1.) I also have MailTags. Is there a way you integrate this in your workflow? I’m not sure the best way to utlilize this app but I think it has lots of potential.

    2.) I’ve been trying to share my Things database between two Macs. I’m not sure if your doing this but I thought I’d ask anyway. Ideally, I open up Things on my desktop (Mac Pro) and make some changes. Then when I’m at the office I fire up Things on my laptop (Macbook Pro) and the changes are automatically there. (Cloud Computing?).

    Thanks Ben!

  • benstewart

    1. I installed MailTags but didn’t find it useful for me. From what I read you can assign tags to a message first and then have those tags carry over to iCal/Things so that your messages are “pre-tagged” so to speak. However, I prefer to assign tags when I process the messages in my Things Inbox rather than in my Mail inbox.

    2. I only use Things on one Mac. I have seem some forum posts about syncing the database between two computers but I have not kept up with that conversation. As long as there are several people trying to accomplish this goal I am sure it is a feature that will be included soon. Actually, task syncing is a common problem. Google has practically solved the problem of sharing a calendar but they still do not support tasks (todo’s). Some people use Remember the Milk, Sandy, or other online solutions but I don’t think any of them seamlessly sync with desktop apps like Things.

  • abberdab

    Has anyone figured out how to make this also create a link to the original message URL included in the task created in Things? Would be *very* handy when the task requires a followup.

  • Ryan Flynn

    Excellent work – thanks!

    I added a bit more to the script to allow the URL of the message to be saved in the URL field of the event. I used this snippet from DaringFireball:

    …and mashed it with Ben’s script to form a new version that puts the message URL into the URL field. You can use it in exactly the same way as before.

    Get the updated script here:



  • benstewart

    Thanks, Ryan. I’ve tweaked mine since this post as well. Maybe these additions will warrant a follow-up post soon.

  • Pingback: My iPhone home screen apps | Ben Stewart()