How IFTTT, Reminders and Drafts Enable Inter-Platform Communication between iOS Apps and Web Services

Yesterday, we saw the release of IFTTT app for the iPhone. If you're not familiar with IFTTT, it's a web service that lets you create powerful connections with one simple statement: if this then that. Since its first launch in Dec 2010, the number of web services that support IFTTT continues to increase. As of today, there are 67 channels, ranging from social networks and cloud storage services to RSS feed parsers and smart devices like the WeMo Switch.

The service allows you to define a trigger and an action that you want to be executed when such trigger happens. Each trigger/action combination is called a recipe. With the large number of channels available on IFTTT, the possibilities for recipes are almost unlimited. To give you an illustration, here's a couple of public recipes that I have modified for my IFTTT accounts:

  • Recipe #5539: Tweet whenever a new blog post has been published on the site
  • Recipe #14475: When I like a photo on Instagram, save a copy in my Dropbox folder

The new IFTTT app for the iPhone brings three new channels that you can use as triggers. They are exclusive to the iOS platform, i.e. Contacts, Photos, and Reminders. Here are a few examples of public recipes that use the new channels:

If you want to know more about what the new triggers are and a few other examples on how the new triggers can be used, I'd highly recommend you check out Federico Viticci's excellent review on MacStories.

Setup the built-in Reminder action in Drafts to use the first line of the post as the title of the reminder.

Using Reminders App to Bridge the Communication

I've always been interested to extend many of my workflows on iOS to other platforms: OS X and the web. Until today, the options to connect my iOS workflow with the web services on IFTTT are quite limited. But with the introduction of the new Reminders triggers, I see a great opportunity to connect both worlds.

I have been using Drafts as the engine for all of my iOS workflows. Since Drafts 2.1, you can add a new entry in Reminder app through the built-in Reminder action. The action can take two forms of input:

  • A single line of text that will be converted as the new reminder, or
  • Two lines of text where the first line indicates the title of the reminder, and the second line indicates the reminder notes

For the use case that I'm about to share, I will use the second form of input. To tell Drafts to process the first line as the reminder title, you need to enable it in Settings > Manage Actions > Reminder > First Line as Title.

Then, I'd suggest you to create a new (and dedicated) list in the Reminders app that will act as the communication hub between Drafts and IFTTT. For the examples, I'm using a list named "IFTTT". Then, go to the Settings app, and set the Default List of the Reminders app to the newly created list. The idea here is to create a well-formatted text in Drafts, push them to the default list in Reminders app, and have an IFTTT recipe that scans the Reminders for a new entry in that list.

The IFTTT app allows you to create new recipes directly on your iPhone.

Building your own Expense Tracker

For the first example, I'd like to create my own Expense Tracker using a Google Spreadsheet where I would add new entries using Drafts on my iPhone. The Google Drive channel in IFTTT allows you to add a row to a spreadsheet with the following parameters: the spreadsheet name, the folder path in Google Drive, and the formatted row.

First, I'd like to name my spreadsheet as Expenses. And, I'd like to store it in a folder named "IFTTT". Then, I want the new rows to be created with the following columns: Date, Time, Category, Description, and Amount.

Similar to the action parameters in the Google Drive channel, IFTTT also defines a list of parsed information, called ingredients, that you can use to fill the parameters in your action. For example, the new reminder added to a list trigger in the iOS Reminder channel offers up to five ingredients that you can use. For the examples, I will use two of them: {{Title}} and {{Notes}}. This fits nicely with the way I setup my custom URL Action in Drafts, which I named Track Expense to Google Spreadsheet:

Open this link if you want it installed on your iOS device automatically.

In the action above I'm creating a new post in Drafts where the first line is hard-coded as Expenses, and the second line is a string of text with the following format:


I'm using the strftime date formatting to have the date/time formatted as I want them to be. In case you're wondering what the ||| characters mean, they're actually a set of characters that will be interpreted as a column separator by the Google Drive channel processor in IFTTT.

With this approach, I can simply create a new post in Drafts with the following three lines:

the expense category, e.g. food, entertainment, apps, etc.
the description of the expense
the total amount

But before the magic happens, I need to create a new recipe in IFTTT. Here are the details that I used for the recipe:

(Trigger) List Name: IFTTT
(Action) Spreadsheet Name: {{Title}}
(Action) Folder Path: IFTTT/
(Action) Formatted Row: {{Notes}}

The List Name parameter is the name of the list in Reminder app that you want IFTTT app to monitor. Then, the Spreadsheet Name is the actual file name that you want Google Drive channel to create/append. The {{Title}} will resolve to the reminder title, i.e. "Expenses". Finally, I'm using the second line of the reminder, as indicated by {{Notes}}, to populate the formatted row.

Take note that I do not define the formatted row with ||| column separator in the IFTTT recipe, because I have pre-formatted the {{Notes}} entry before Drafts sends it to Reminder app.

Now the magic will happen as soon as you trigger the Track Expense to Google Spreadsheet action in Drafts. Even though the app doesn't switch you to the IFTTT app, rest assured that the information you've just entered has been successfully converted into a new row in Google Spreadsheet. Once the action is completed, you will be redirected to a new post in Drafts, ready to process your next entry. Repeat the process until you've entered all of your expenses.

You can verify that your recipes are triggered as you expect them by looking at the timeline feed in IFTTT app.

Updating my Log Gas Fill Up workflow

You may be wondering why I'd go to all the troubles of setting up a two-line entry in Reminder only to have the first line set as the spreadsheet name. Well, that's because I want to reuse both the IFTTT list in the Reminder app and the new recipe I just created to add a different set of rows to a different Google Spreadsheet.

My second example shows how I'd reuse the previous setup (the Reminder setting and the IFTTT recipe) to switch my previous Log Gas Fill Up workflow from Dropbox to Google Spreadsheet. I used this workflow to log all my gas fill up events in a Dropbox text file. Each event consists of the following information: date/time, location, amount spent, price per gallon, and the last position of my odometer. No matter how hard I tried to make it pretty, the information just isn't made for a text file to handle. Instead, it's more appropriate to log these events in a spreadsheet.

Because the new spreadsheet will have a different structure to the Expense Tracker one, I want to name it differently as well. That's the reason why I use the {{Title}} ingredient as the spreadsheet name. By doing so, I can now reuse the same IFTTT recipe and IFTTT list in my Reminder app to log many types of events to any number of Google spreadsheets. The fact that {{Notes}} ingredient has already been formatted by the Drafts action helps too.

Now all I need to make this work is to create a new URL Action in Drafts that would take my input and convert it into the appropriate format for the Google Drive channel. I named this action Log Gas Fill Up to Google Spreadsheet.

Open this link if you want it installed on your iOS device automatically.

The action above will process a post in Drafts assuming the following format:

the total amount spent
the price per gallon
the location of the gas station
the last position of the odometer

Because the Google Spreadsheet action doesn't have any pre-defined format, you can actually define your own set of information, and order them as you'd naturally input them in. The only requirement is for you to be consistent with it. If you mix the order, you will get rows that have swapped column entries.


The new channels and triggers in the IFTTT app has enabled a new communication hub from the world of iOS automation with the ever-growing list of web services supported by IFTTT. The combination of three iOS apps (Drafts, Reminders and IFTTT) has made it all possible. Now, it's your turn to extend and improve your existing workflows using this new inter-platform communication.

To find my other workflows, please visit my Productivity and Workflows blog.