Notion Buttons

...and what they need to be truly useful

Posted by nietaki on April 12, 2023

I’m a long time power-user of Notion. For the last couple of years I’ve been using it for all of my note-taking, work organisation and tracking, online documentation, storing cooking recipes and much more. Recently they introduced a new Buttons feature and it excited many people who thought it would be the missing piece in their workflow organisation.

I played around with it for a while and I can see the current functionality is a great starting point, but it needs a bit more to actually be useful (to me)

But first, what can the buttons currently do? When you click a button, it will execute one or more of the “steps” you can configure for it:

  • insert blocks
  • add a page to a database
  • edit pages in a database
  • show confirmation
  • open a page

The insert blocks is a glorified “copy and paste” button, which will add some content before or after the button itself. The add a page will add a page to a database and can set some fields to values hardcoded within the button. The edit pages will bulk-edit pages in a database, setting their fields to some hardcoded values if they fulfil some (hardcoded) filtering criteria. Show confirmation just adds a confirmation step to guard you against unfortunate misclicks.

It seems like the functionalities cover most of the CRUD operations, but you might already see what the weak point is. All of the data for the operations is hardcoded and non-interactive. One exception is date/time related operations, where you can set the field to @Today for example, or use a relative time window for the filtering step.

I can see some scenarios where this could be useful, but most of them are contrived and could be performed almost as easily without the buttons. With the many things I use Notion for (and some I’d like to use it for), I couldn’t find a single scenario where I’d find the buttons useful.

However, with some relatively small changes, the buttons could gain a lot of power:

Interactive input

The tool already has a notion (ha-ha) of types. The type of the input could be bound to a specific column of a database (a number, a relation, a “select” value) and used in the filters/values in the following steps.

The input steps from a button could be combined into a modal/popup form, similar to the confirmation step.

Reference to the current page

This is a big one for me.

In a CRUD-type application one of the most following operations is “do this to the current row”. This is not possible in Notion, because the buttons are not context-aware, they have no reference to the page they’re put in.

This could be as simple as another filtering option for the edit pages step.

Exposing the buttons in page properties

This is an extension of the previous point - once the buttons can perform actions specific to the page they’re put in, it’s a question of exposing them in a convenient way. If buttons can only appear in the page contents, they’re not exposed in the table or card view and they need to be copy-pasted to each of the pages in a database, or otherwise the pages need to be created using templates or other buttons. That’s not a robust workflow.

There could be another column type for just collections of buttons. You could edit it in a similar way you edit formulas. And voila! You have convenient per-row operations.

Conditional logic

One operation I could use is “create if doesn’t already exist” and it isn’t really something you can do in Notion. The best approach that comes to mind is a button that does “create a new row and try to remove duplicates”.

The conditional logic could be a combination the filters and aggregations you can do at the bottom of each table view plus a predicate for the results.

Disclaimer

I know the Notion people aren’t dumb and they build the product iteratively - I’m fully expecting to see some of these functionalities get built sooner or later. I’m just worried they might see the buttons functionality isn’t getting much engagement and axe further development.

I also know that developing a tool as flexible as Notion isn’t an easy thing and requires some compromises. Some of the deliberate compromises were even explained to me by the great customer support team when I made a convoluted enough rollup/formula combination that broke the database semantics :D. But I still believe the functions I’m proposing could be implemented within how Notion works right now and the UX of the Buttons.

I guess we’ll just wait and see :)