I'm working on an application that will be used primarily by expert users who will be improving their efficiency over time. I have found great resources on Progressive Disclosure, Accelerators, Shortcuts, Keyboard Navigation, Skip Links, and Enhancements.

There is some opportunity within our application to provide users with the opportunity to increase their workflow through custom macros or automated tasks. (e.g. Maybe a hotkey to auto-select certain values on a set of form fields, or a series of keystrokes to auto-populate a field with a commonly used paragraph.)

My trouble is I'm having trouble finding any good documentation on best practices when it comes to automating tasks, specifically automation that is initiated by a user in the middle of a task.

To add some clarity, I am less interested in automating common processes behind the scenes, and more interested in offering quick macros to an expert user to more efficiently fill out common form patterns.

Does anyone have a good resources to point me towards? Is it possible I am approaching this problem from the wrong angle and perhaps there are better design solutions available?

Thanks in advance

  • 1
    Hi Dave, your question is a bit too broad to be answered adequately. What's the problem you are struggling with? I would look at how other software such as Excel or VIM use macros to automate tasks.
    – Nash
    Commented Aug 19, 2020 at 13:36
  • As time passed and technology evolved, now there is a good emerging direction for flow and task automation as google.com/search?q=zero-code+platform
    – Tom Newton
    Commented Jul 13, 2023 at 13:01

2 Answers 2


Very broadly speaking, there are 4 major categories to accelerate workflows:

  1. Discoverable features. These are the basic functions your app shows to its users either sometimes or at all times inside the UI, with the specific intent of having the user figure out intuitively what these things do. In some sense, this is the completely unautomated stuff.
  2. Undiscoverable features. To know how to use them you have to look up a tutorial, the manual or some other database where these things are listed out. Shortcuts go into this category; they're a great tool for people who get more proficient, but they're also completely invisible to the beginners.
  3. Batch processing features. These things take a series of actions and apply them all at once, without any branching. Examples include the actions panel in Photoshop and Macros in Audacity.
  4. Full-on scripting. This is where we get into branching and loops, into plugins, addons, addins, extensions and helper programs.

As far as UX goes, discoverable features obviously are the most user friendly, but perhaps surprisingly it doesn't just go downhill from there: Creating batch processes is generally awkward and cumbersome, and creating a script is an entirely new world to most people, but using a script or a plugin isn't necessarily hard. In fact, in many cases it feels to the end user like just another feature which can be downloaded and purchased just like the host software itself.

The latter is extremely commonplace once you recognize it as such: There is an entire industry about VST plugins around DAWs, every visual effects software has a plugin which makes an object explode or shatter, office programs have all sorts of integrations with related productivity software, and browsers are often only worth using if they have support to a decent ad-blocking extension.

As the creator of the host app, the existence of these plugins gives your app a huge value boost and can make or break whether your app is relevant in a particular industry - even if the industry in question is so specialized that it wouldn't be worthwhile for you to create the features they need.

With all of this in mind, my general guideline for the above category goes as thus:

  • Nail the UX of discoverable features. Make the app welcoming and easy to use to new users.
  • Make your app accessible. Often times, accessibility features are very helpful to power users as well.
  • Make it easy for people to create powerful plugins for your app so that your users can build niche functionality for their peers.
  • Implement batch processing to the degree that is commonly useful. For example, batch-applying effects to a selection may be commonly useful, having the batch process create new selections and reshuffle data may not be - let your users use plugins for that.

NB: Nobody is stopping you to bundle your own plugins with the program and let users opt-in to more advanced UIs and features.


While I don't know of any general guidelines of how to create this functionality, I would recommend you take a look at someone who absolutely excels at this: Adobe Photoshop Actions.

Over the years they have mastered automation of common tasks and it's worth taking a look at how they do it. You can read their documentation here:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.