IFTTT for iPhone: A Different Kind of iOS Automation

IFTTT for iPhone

I used to heavily rely on IFTTT for my daily automation workflows that involved appending bits of text to files in my Dropbox, forwarding tweets to my OmniFocus inbox, generating PDFs, or archiving Instagram photos to my Dropbox account. IFTTT, acronym of If This Then That, is a web service that lets you connect other web services together to create automated workflows that run every time a piece of data is triggered: by leveraging a variety of APIs from compatible channels (such as Facebook, Dropbox, Evernote, Feedly, and more), IFTTT lets you automate the web in powerful (and sometimes unexpected) ways. Browsing Popular recipes on the IFTTT website can give you an idea of the scope of web automation that’s made possible by the service, and we’ve covered IFTTT in the past on MacStories as well.[1]

However, I stopped depending on IFTTT because, once I got more comfortable with my own Mac mini server as a remote automation assistant, I wanted to control the pipes of my personal data. I’m still using IFTTT for things like receiving an email if it’s going to rain tomorrow or a new SMS for press releases published by Apple (just an example of the power of IFTTT channels and recipes), but it’s not the primary system that I rely upon for automating daily tasks. The new IFTTT app for iPhone, which I have been testing and has been released today on the App Store, may make me (partially) reconsider my decision.

IFTTT for iPhone lets you interact with various aspects of the service, but the IFTTT team also built some iOS-exclusive features for the app, namely notifications for triggered recipes and integration with iOS Photos, Contacts, and Reminders. I was skeptical about the app at first – I didn’t think I’d need a mobile IFTTT client to edit my recipes – but I now believe that the native iOS features will turn out to be terrific additions for the iOS automation landscape.

IFTTT for iPhone

I had a good first-run experience with IFTTT for iPhone as soon as I launched the app and swiped through the Intro screen. With a series of delightful and fun transitions, IFTTT explains the concept of recipes and new iPhone channels, describing the new kinds of integrations that are now available: in the example recipes, IFTTT shows that you can upload any new photo taken with the front-facing camera to Flickr tagging it with #selfie; send new contacts a “Nice meeting you” email; or, track completed reminders in an UP feed.

IFTTT for iPhone

The main screen of the app is a daily log of recipes that were triggered in your IFTTT account, sorted in reverse chronological order on a timeline. You can tap on recipes to view a summary of the content that was processed by IFTTT, and, for bits of data like URLs, you can use an “Open in Safari” button to view that content again in the browser. A summary of a triggered recipe can also be shared via Mail, Messages, or Twitter. If you’re a heavy IFTTT user, the main screen can be a nice way to catch up on the status of your account and see which recipes were triggered, when, and why.

The core aspect of the app is the Recipes area, available in a sidebar on the right side of the screen that can be accessed by swiping to the left or tapping the pestle and mortar button in the top right corner. In this sidebar, you’ll see a full list of every recipe already configured in your account, with switches to turn a recipe On/Off directly from the iPhone. An eyeglass icon in the upper left may catch your attention, but you’ll want to check out the “+” button instead, as that’s where you’ll be able to start playing around with IFTTT’s new iPhone channels.

As MacStories readers know, iOS’ inter-app communication features are limited to URL schemes, a handful of SDKs from third-party developers, and an “Open In” menu that doesn’t solve iOS’ real problems with sharing data and documents. Aware of these limitations, the IFTTT team still figured out a way to make IFTTT access iOS content that Apple makes available at a system-wide level for third-party apps; to grant IFTTT access to your photos, contacts, and reminders, you’ll be presented with Apple’s default Privacy alerts that you may have seen in other iOS 6 apps.

The new iPhone channels come with triggers that you can configure in your recipes, and they work by monitoring the following types of content on your device:

Photos

Any new photo

New photo with the front camera

New photo with the rear camera

New screenshot

New photo added to album

Reminders

Any new reminder

Any reminder completed

New reminder added to list

Reminder completed in list

Contacts

Any new contact

With these native integrations, IFTTT opens up to a whole new layer of interesting possibilities for on-device automation that mixes local data with web services. To better illustrate how IFTTT for iPhone works, I’ll show you the recipes that I have created and that I’ve been running on my iOS 6 device.

I’m a big fan of Photo Stream, but it often doesn’t work in that it takes several minutes to “catch up” and display my latest photos on the Mac. With IFTTT for iPhone, I can create my own Dropbox-based photo stream for screenshots and photos that I want to access on OS X through a folder in Dropbox.

In the IFTTT app, I created a recipe that checks for any new photo added to an album I called “ToUpload”; when a new photo is found in the album, IFTTT will take it and upload it to a specific folder in my Dropbox, using the photo’s timestamp for the file name. If you’re familiar with how IFTTT works, this should sound like an easy recipe, but there are couple of new iPhone features worth noting.

You can tweak, test, and delete recipes in an Edit screen, available by tapping on a recipe’s name in the sidebar; for my ToUpload recipe, I just had to type the iOS album name’s in the Album field of the recipe, then instruct IFTTT to save a photo in Dropbox starting from the “PublicPhotoURL” ingredient. Ingredients are pieces of a trigger’s data – in the case of photos, it can be the photo URL, the album name, or the taken date. As you’ll see when testing IFTTT for iPhone, photo URLs are links to the online storage space that IFTTT is using to upload photos and pass them around, located at locker.ifttt.com. In my recipe, I used {{TakenDate}} as the ingredient for the file name, and manually typed the name of the Dropbox folder where I wanted photos to end up in. I saved the recipe, and turned on notifications for it.

Now, every time I move a photo or screenshot into the ToUpload album, IFTTT will automatically send it to Dropbox, but with a catch: because iOS 6 apps can’t run in the background for an unlimited time, IFTTT will only monitor Photos for the first 10 minutes even if closed, but after that I’ll have to launch the IFTTT app to manually trigger the recipe.

IFTTT for iPhone

Lack of continuous background monitoring isn’t IFTTT’s fault, but it’s nevertheless become the most notable missing feature of the app for me. I’ve often tried to move photos to an album, thinking that IFTTT would take care of uploading them to Dropbox, only to remember that the app wasn’t running the recipe because it hadn’t been launched in a while. This doesn’t hinder the basic convenience of the Photos/Dropbox recipes – after all, the IFTTT app is only a tap away – but it’s something I have noticed.

When the app can run in the background, it’ll send a local notification to inform you of a recipe that’s been triggered and executed; if you have the app in the foreground, status updates will be displayed with a custom message in the status bar.

IFTTT for iPhone

To overcome the lack of true background refresh, IFTTT has created an option to trigger recipes when your location changes – a feature similar to the one used by apps like Instapaper and Downcast. This isn’t a panacea for the lack of proper background refresh, but it’s a handy hack. Speaking of the Settings, I like how they show a blurred and mirrored version of the main screen behind the content.

I have a second recipe for iPhone screenshots that I use for composited images I create in Pythonista and need to embed in articles for the site. The recipe is similar to the first one as it uploads files to Dropbox, but I’ve decided to let IFTTT create the folder in my Dropbox account by using an ingredient in the “Dropbox folder path” field.

IFTTT for iPhone

The Ingredients menu, shown below, could use a custom design in line with the rest of the app – it feels rushed and unfinished. The experience of editing recipes on the iPhone has been kept as straightforward as possible, but I have come across some strange scrolling behaviors that make me question whether some parts of the app are actually web views.

IFTTT for iPhone

My favorite recipe that’s based on one of the new iPhone channels keeps tracks of completed reminders and appends them to an Evernote note called “Completed Reminders”. Leveraging IFTTT’s built-in “Append to note” IFTTT action, the recipe uses Reminders-specific ingredients to dynamically insert text into my Evernote log.

Reminders in IFTTT come with the following ingredients:

Title

Notes

List

Priority

Created Date

Completed Date

In the Body field of the recipe, I can have a mix of HTML, plain text, and ingredients (effectively, variables) that will be used by IFTTT to append text to Evernote. This is what a series of completed reminders looks like in my Evernote:

IFTTT for iPhone

Perhaps more impressively, because Apple’s Reminders can sync with iCloud in the background, if you happen to be within the 10 minutes when IFTTT can also run in the background and you complete a reminder from another device, you’ll witness the magic of iCloud syncing reminders immediately and IFTTT triggering Reminders-based recipes after a few seconds. When that works, the result is impressive, and it makes me wish for an IFTTT app capable of always running in the background.

The recipes that I’m using on my device are quite simple; there are far more advanced possibilities opened up by IFTTT’s new channels and triggers:

Send me an SMS for any new reminder added to a specific list. Useful to be alerted on my phone whenever a reminder is added to an important list I share with someone else (again, the benefit of background iCloud syncing and lack of IFTTT background monitoring are both obvious here).

Upload any new photo taken with the rear camera to 500px.

Create a new Evernote image note from any new screenshot, with tags and inside a specific notebook.

Log any new reminder completed in a specific list in a Google Drive spreadsheet.

Any time I add a new contact, quickly mark it with an event in Google Calendar.

Log completed reminders in text files stored in Dropbox, named by Created Date.

Any time a photo is added to a specific album, update my Twitter profile picture.

Add a new contact to a Twitter list (alas, there’s no ingredient for the Twitter field of the Contacts app. This will only work if you add the Twitter username to Notes field of a contact).

Tweet new screenshots added to an album.

A recipe that I’m working on essentially replaces CameraSync to upload every new photo I take on my iPhone to a folder in Dropbox, letting the Mac mini (running Hazel) rename it. See also: moving from iPhoto to Dropbox.

Wrap-Up

I was skeptical when I first got the IFTTT beta, but now I’m surprised by how well the app works with native iPhone channels considering the limitations of iOS 6. The IFTTT team cleverly took advantage of the non-sandboxed areas of iOS 6 to create useful new channels that can be integrated with the service’s existing web channels and actions. For Photos support alone, IFTTT has already become a useful tool in my workflow thanks to automatic Dropbox uploads. I look forward to seeing what other users will come up with – and I believe this will be easy thanks to the app’s Browse section (where you can see popular recipes and the ones featured by IFTTT) and Recommended recipes.

IFTTT seems like a great candidate for the background app refresh technology coming in iOS 7, although I don’t know if monitoring Photos, Reminders, and Contacts is something that can be plugged into the new background services. Time will tell whether the IFTTT team will manage to take advantage of iOS 7’s new APIs; what’s clear is that IFTTT could immensely benefit from the possibility of running silently in the background all the time.

I couldn’t get an official explanation by the IFTTT team during the beta, but, based on my tests, it appears that the iPhone channels get the “quick triggers” that let the app launch recipes as soon as new data is detected. For my recipes, I typically have to wait between 10 and 30 seconds for a notification to be displayed (assuming the app is active or still in the background) and around a minute for larger photo uploads; overall, upload times of full-res photos and screenshots have been fast; recipes that were triggered multiple times in a row (for multiple reminders or multiple photos) worked fine.

There are some features that I think would considerably enhance the app. I’d like to see access to the Calendar, as well as GPS or location triggers that could help me build actions to log my position during the day to text files or Evernote (something that I’ve been wishing to do for quite a while). An “Open URL” iOS action would come in handy to launch specific URLs when a recipe has been triggered – you can imagine how I would integrate it with ingredients and URL schemes to build an inter-app communication layer based on IFTTT. Right now, the app is iPhone-only, it doesn’t support videos, it’s free, and there’s no sign of new Premium features coming soon. I would like to give my money to IFTTT eventually – even better, if that money will be used to extend the availability of quick triggers and offer more channels to paying subscribers.

Aside from improvements to scrolling in the editing screen and a redesign of some screens, it’d be nice to have some sort of reporting for photos that IFTTT already uploaded in the past and that aren’t recognized as new[2], a setting to choose whether screenshots should be converted to JPEG or not (right now, they are by default), and more notification sounds.

IFTTT brings a different kind of automation to iOS that doesn’t need URL schemes or bookmarklets, but that instead looks into native pieces of data to connect services together. It’s an innovative approach to monitoring photos, contacts, and reminders that are added or modified on an iPhone, but it should be familiar to users who already rely on IFTTT for their daily web automation tasks. While I’m not leaving my Mac mini anytime soon, my photo sharing workflow is faster thanks to IFTTT, and I look forward to seeing how the app will evolve over time both in terms of community recipes and new features. I am especially excited for its future on iOS 7, which could broaden the scope of the app’s background refresh system.

IFTTT for iPhone is free and available on the App Store.

Also recommended: Mac Power Users’ episode on Web Automation. ↩

I lost 10 minutes earlier today trying to figure out why some screenshots weren’t being uploaded to Dropbox, then I remembered IFTTT had already uploaded them yesterday. IFTTT should notify users of “new” photos that aren’t actually new anymore. ↩