In just a little more than a year, Agile Tortoise’s Drafts has gone from being a quick notepad for small bits of text to a full-featured solution for launching apps, using web services, and chaining multiple apps together – always with a focus on text. With version 2.5, released in January, developer Greg Pierce expanded upon Drafts’ existing support for URL schemes to let users build their own actions and share them with others; in the process, he also updated Drafts to handle advanced operations such as customizable Dropbox write access, strftime timestamps, and deeper x-callback-url support.
Drafts 3.0, released today, is a major update that refines several aspects of version 2.5 and brings powerful new features such as Evernote and Message actions, better action and draft management, tighter Reminders integration, and a way to backup and restore entire sets of actions.
I have been testing Drafts 3.0 for the past month, and, even more than Drafts 2.5, it has become an essential part of my daily workflow.
Evernote Actions
Drafts 2.5 brought Dropbox actions; Drafts 3.0 does the same for Evernote. In previous versions of the app, users could send a draft to a configured Evernote account, but each draft would be saved as a new note in Evernote without the possibility of choosing tags or whether a string of text needed to be appended to an existing note in a specific notebook.
Available in the new Custom Actions area of the Settings, Evernote actions work like Dropbox actions with the addition of Evernote-only features like notebooks and tags. You can now create an unlimited number of Evernote actions, give them a unique name, and choose whether text should be created in a new note or appended/prepended to an existing one. You can pick an Evernote notebook or leave the field blank to let Drafts use the default one (in my case, the Evernote Inbox), insert tags as a comma-separated list, and, like the old Drafts, activate an option to convert Markdown to HTML before saving a note.
In the Template area of an Evernote action, you can insert any arbitrary template tags (as I explained previously with version 2.5). If, for instance, you want a draft to have a bold title (the first line), you can set an action to have Markdown bold formatting surrounding the [[title]]
tag and nothing around [[body]]
. The same goes for strftime-based timestamps, current contents of the clipboard, and, in Drafts 3.0, TextExpander snippets as well.
Following Launch Center Pro, Drafts 3.0 will expand any TextExpander snippet before firing an action. This means that all your signatures, recurring names, templates, or timestamps included with their abbreviations will be correctly expanded by Drafts.
In the Evernote action above, for example, I am appending text to a note called Unbilled Expenses that sits in my Inbox. I want each line to have a description of the expense, a dash, and a timestamp. I can insert a timestamp in my action template either by tweaking the [[date]]
tag manually inline or by using my existing ddd
TextExpander snippet that will expand to become the same timestamp. TextExpander snippets work with email actions (subject and body fields), Dropbox and Evernote action templates, file and folder names, and more. I believe they are a great addition to let users build actions without having to worry about learning a new format for timestamps or duplicating existing signatures and templates. I wish a future update will enable expansion of snippets for actions triggered by a URL scheme (e.g. using the create
action from apps like Launch Center Pro).
I use Evernote on a daily basis to store and keep track of information that is not suitable for plain text. In addition to its rich media capabilities, support for sharing and built-in full text search on any platform make Evernote a preferable solution for notes that require frequent access by more than one individual. Plus, I genuinely like Evernote as a company, which makes it even easier for me to get excited about building workflows for it.
I have an action to add entries to a Log in Evernote. For this one, I added seconds to my default timestamp using %S
and chose to prepend entries to see recent days at the top of the note rather than at the bottom. This isn’t meant to replace Day One for me but it’s useful to keep track of pieces of information such as weight loss/gain or the amount of daily espressos I consume.
I have a note called “Post Ideas” where I keep a list of possible articles I may write for MacStories. When I have an idea, I can fire up Drafts 3.0 and save it in Evernote in 2 seconds.
Of course, sometimes the idea is provided by a webpage. The easiest way to forward webpage titles and URLs on iOS is JavaScript, and so I created a simple bookmarklet to:
- Take a webpage’s title and URL;
- Send it to Drafts and fire the Post Ideas action;
- Automatically go back to the browser.
Here’s the bookmarklet:
javascript:window.location='drafts://x-callback-url/create?text='+encodeURIComponent(document.title+'\n')+encodeURIComponent(location.href)+'&action=Post%20Ideas&x-success=googlechrome://';
Note how a new line separates the title from the URL and how the x-success
parameter takes me back to Google Chrome. That can be easily swapped with location.href
to make Drafts go back to Safari instead:
javascript:window.location='drafts://x-callback-url/create?text='+encodeURIComponent(document.title+'\n')+encodeURIComponent(location.href)+'&action=Post%20Ideas&x-success=+encodeURIComponent(location.href)
I use the same bookmarklet/action setup for “Stuff To Check Out”, a note where I store links to things that, as the same suggests, aren’t necessarily site-related and I have to check out.
With an unlimited number of Evernote actions at our disposal, we can, obviously, consider more advanced workflows that chain Evernote together with other apps and services.
As I detailed earlier this year, my recommendation for chaining actions in Drafts is to always keep actions as separate as possible and connect them using URL actions and one level of x-success
as the glue between additional levels of chaining. Here are some examples.
Back when Twitter used to let IFTTT access its API, I had an IFTTT recipe to append every tweet of mine to an Evernote note. With Drafts 3.0 and Evernote actions, I have created a similar workflow that will append every tweet sent through Drafts to a note in my Evernote account.
Called TweetLog, the action will first tweet using my account with Drafts’ built-in Twitter action, and then use the same text to append a new line to an Evernote note with the same “log” action I described above.
drafts://x-callback-url/create?text=[[draft]]&action=Tweet%3A%20viticci&x-success={{drafts://x-callback-url/create?text=%40viticci%3A%20[[draft]]&action=Log}}
As you can see, the structure of the action is fairly simple: it uses Drafts’ URL scheme to fire the first action (“Tweet: viticci”), and x-success
(plus curly brackets for encoding purposes) to send the same [[draft]]
to the Evernote action that will append the tweet to Evernote. Unlike IFTTT, we won’t be able to append the URL of the tweet as returned by the Twitter API, but this is a cool implementation of Evernote action chaining nonetheless.
Here’s a short video demonstrating the workflow.
Sometimes I want to save a URL for reference in Evernote but also add it as a todo to OmniFocus. It’s easy to append URLs to a single Evernote note with a dedicated action and, once completed, be automatically taken to OmniFocus:
drafts://x-callback-url/create?text=[[draft]]&action=Stuff%20To%20Check%20Out&x-success={{omnifocus:///add?name=¬e=[[draft]]}}
Or, if you’re not using OmniFocus, you can do the same with Due. The cool thing about Due – smart natural language recognition aside – is that it supports x-callback-url, meaning we can add an additional level of automation and execute the following workflow:
- Find a webpage you want to save in Evernote;
- From the browser, send the webpage to Drafts;
- Watch Drafts save the webpage to Evernote;
- Watch Drafts take you to Due automatically;
- Watch Due get the webpage URL and name, letting you add any optional description you want;
- Add the reminder, and go back to the browser.
And this is what the workflow looks like as actions:
Main action
drafts://x-callback-url/create?text=[[draft]]&action=Stuff%20To%20Check%20Out&x-success={{drafts://x-callback-url/create?text=[[draft]]&action=ToDue}}
Due action (chained)
due://x-callback-url/add?title=[[draft]]&x-success=drafts://&x-source=Drafts
I’ve made a video showing the OmniFocus and Due variants in action. Note how, with the OmniFocus action, the webpage’s name and URL are inserted in the note field, but the cursor is ready to type in the name field.
Evernote actions work well with Markdown conversion to HTML, so I created a Mr. Reader service to append my favorite quotes from RSS feeds to an Evernote note called RSS Log.
Using the Drafts URL scheme and concatenation of tags in Mr. Reader, I can send an article’s title, author name, quoted text, and source name with Markdown formatting and end up with nice HTML in Evernote as pictured above.
Overall, I think Evernote actions are a fantastic addition that will turn Drafts into one of the most popular third-party Evernote apps. As far as I know, there has never been an app so powerful and, at the same time, easy to use to append or prepend text to any Evernote note with templates for content and tags. Evernote actions were the big omission of Drafts 2.5 and Greg Pierce absolutely delivered with Drafts 3.0.
Action Management, Backup, and Restore
After Drafts 2.5 gained user-configurable URL and Dropbox actions, it became clear the app needed a way to let users easily carry the same set of actions across devices. The app could sync notes, but users could only share actions with others; I can’t tell you how many times I’ve sent an iMessage to myself to copy a Drafts action’s URL from the iPad to the iPhone and vice versa.
Similarly, with such a deep amount of customization, managing a long list of actions in a single screen soon became unwieldy and tedious. The action screen was fine when Drafts was only a quick notepad with a handful of supported apps; today, it doesn’t reflect (or help) the app’s versatility and multifaceted nature.
Drafts 3.0 makes important improvements in both areas.
First and foremost, actions can now be organized in four panes.
From the (redesigned) Settings, you can access a revamped Manage Actions area where you’ll be able to tap on any action and assign it to a specific pane from I to IIII. If you don’t want to see an action anymore, you can hide it and retrieve it later from the Hidden tab. You’ll also notice that each action has its own options for After Success: upon firing an action (say, tweeting a status update), do you want the app to delete the draft, archive it (more on this in a bit), do nothing, or use the default setting? If you choose “default”, you’ll tell an action to follow the instructions of the new app-wide setting for After Success.[1]
Like actions can be organized in panes, drafts can now be moved to different areas depending on what you need to do with them. If you’re using Drafts as a temporary notepad, you’ll be happy to activate the Delete preference and, once a draft has been forwarded to another app/service, just forget about it. But if you plan on keeping your drafts around, Drafts can now offer you to file them under three classifications: Inbox, Archive, and Pinned.
By default, drafts are created in the Inbox and stay there unless put in the Archive. This is where the aforementioned After Success setting comes in, letting you choose how individual actions should treat drafts – maybe text sent to Twitter should be archived, whereas emails composed in Drafts can be deleted altogether.
For bits of text that you want to access on a regular basis, Greg Pierce has now created a Pinned area where you can save drafts that you’ll want to re-open frequently. Perhaps it’s the size of your son’s shoes, your hotel’s information, or the address of a client – what you’d save and bookmark in a text editor can be comfortably pinned and accessed in Drafts 3.0 with two taps (tap drafts icon, then tap the pin). To archive, pin, or delete a draft, you can swipe on it to bring up a new set of buttons.[2]
I personally have little use for the Archive (I tend to leave everything in the Inbox), but I have grown fond of pinned drafts and multiple action panes. I wouldn’t be able to go back to a version of Drafts that doesn’t let me pin notes or organize actions in separate tabs that make more sense to navigate and don’t force me to scroll to get the action I need. In the past few weeks, I have tried various Drafts action setups, but, eventually, I settled on: Twitter, OmniFocus, Messages actions in the first pane; Evernote actions in the second pane; everything else (mostly unfinished actions) in the third pane. I understand that these new management features will make many people fiddle to achieve setup nirvana, but the trade-off is worth it.
This complex set of actions, action settings, panes, and sort order can now be backed up and restored on a second device with just one tap.
Using Dropbox, Drafts can save a backup file of all your actions and settings, naming it with a timestamp and device type (e.g. 2013–04–25–03–23-iPad); on the device where you want to restore your backup, head over the Settings, choose “Select Backup to Restore”, find the file, and wait a few seconds. In my (many) tests, actions were always backed up and restored correctly both on the iPhone and iPad. It’s no sync, but, alongside Evernote actions, this is my favorite feature of Drafts 3.0.[3]
Reminders Integration
Drafts has supported adding items to Apple’s Reminders app for quite a while now, but version 3.0 steps the process up a notch with automatic import of Reminders and a new “List” action. The first one, a setting that needs to be enabled, will work similarly to the Omni Group’s iCloud Capture: given a Reminders list called “Drafts”, Drafts 3.0 will check upon each launch for new incomplete reminders in it, import them as drafts, and mark them as complete in Reminders.[4] This is useful if you want to add reminders via OS X and find them in Drafts for iOS via iCloud[5], or if you want to add reminders via Siri and later process them with Drafts. I don’t use Siri and my todo app is OmniFocus, but I think this is a very smart addition to Drafts’ feature set.
The new “List in Reminders” action is equally interesting: it lets you send multiple lines from a draft to Reminders as individual tasks. If the first line begins with @, #, or ! it will be treated as the list name (if a list with the same name doesn’t already exist).
Message Actions
Back in February I posted a workflow for converting Twitter links to Tweetbot URLs and sharing them via iMessage through Drafts. Here’s what I noted towards the end:
Unfortunately, right now you can’t populate the To: field with specific contacts – meaning: you’ll have to type addresses manually. I wish Greg Pierce will consider the option of letting users specify default recipients for the Messages action in some way.
In Drafts 3.0, you can create an unlimited number of Message actions with templates containing pre-defined recipients. You can enter multiple addresses/numbers as a comma-separated list, or you can use the contact picker to browse your Address Book and add contacts to a Message action.[6]
If I stumble across a webpage that I want to share with my team, I can use the following bookmarklet to send the title and URL to Drafts, have the Message panel auto-filled for me, hit Send, and go back to Google Chrome automatically:
javascript:window.location='drafts://x-callback-url/create?text='+encodeURIComponent(document.title+'\n')+encodeURIComponent(location.href)+'&action=Team&x-success=googlechrome://';
Or, if I want to send a message to a friend about an upcoming event but also add that event to Fantastical with a single action, I can chain a Message action with Fantastical’s URL scheme (which supports x-callback-url) to compose a draft, send it as message, use it as event, and go back to Drafts in one workflow.
I send messages to specific sets of contacts on a daily basis and Drafts is right there in my iOS dock. Scriptable Message actions with Drafts are just great.
Looking Ahead
At this point, I wouldn’t know what else to suggest to Greg Pierce.[7]
If I really had to nitpick, I’d say it’d be neat to be able to fire empty actions containing only [[clipboard]]
in the template (right now, this results in an error), and to expand TextExpander snippets from actions loaded via the URL scheme. In terms of text and automation, I’m not sure what else Greg can do until Apple brings along new APIs for iOS: perhaps he could add template tags for GPS location, but I understand how that would add a new layer of complexity that goes deeper than timestamps or snippets.[8]
Drafts 3.0 feels like the complete realization of a concept that now spans third-party apps, almost every text-related iOS feature, and two different web services.[9]
Drafts 3.0 is one of my must-have iOS apps. It’s fast and straightforward, but it also sits at the forefront of iOS automation with its powerful URL scheme, template tags, TextExpander support, and app-chaining functionalities.
With even more actions and app integrations, I seriously can’t recommend Drafts enough.
- The URL scheme supports the new
afterSuccess
parameter, too. ↩︎ - You can also access All drafts and search inside specific sections. ↩︎
- Would you trust iCloud for action/settings sync? You know the answer. ↩︎
- Drafts will also display an in-app alert showing the amount of reminders that have been imported. ↩︎
- In this case, I can confirm iCloud worked well. ↩︎
- The same features have been enabled for the To and CC fields of Email actions. ↩︎
- I forgot to mention that Drafts 3.0 comes with two settings to “snap” the draft and action list to full-screen mode, as well as an additional keyboard row to access various panes of extra keys. Of course, I didn’t really “forget” because this footnote has been planned the whole time. ↩︎
- Although I imagine there could be tags for coordinates, nearest point of interest, and location. ↩︎
- Evernote and Dropbox. Three with App.net. Five if you count Twitter and Facebook too. ↩︎