This video (article) is about the solution I use to centrally track all notion automations, initiate external programs by Webhooks, and then record the results of those WebHooks.
Native automations in Notion allow us to respond to new or edited database pages by adding new pages and setting field properties. Using the approach below, we can also dynamically select the named WebHook to fire in response to Notion events.
The solution involves two databases, Slack, and one outbound WebHook to a script that dispatches and reports on the others.
So let’s start with the database of external automations. I’m using make.com, so all my scripts are called Scenarios. I have the name of the scenario, a summary of what it does, and a link to the Webhook that fires the scenario. For convenience, I also have a link to where I can edit the scenario.
ORIGIN (title): The second database () holds all of my requests to fire the automations. The title property is called “Origin,” because I fill that with the source of the native automation by using a naming convention like: “Name of Source Table - Triggering Event.” This lets me easily find my way back to the origin if I ever need to make updates.
SCENARIO (Relationship): The second property is a relationship to my external automation scenarios. This means that inside of the native automation setup, I have a dropdown value to select the external automation that I want to fire. And I change the name of my scenarios, everything updates automatically.
STATUS (Select): starts as Requested, ends with Done. Other values are Processing, Unknown, and Duplicate. The latter is because if the same request is repeated before the first one fires, subsequent ones can be ignored. For example, you add five records at once and get five requests to respond to new rows. The first one handles them all.
RESULT (Text): This is where the result of the automation is stored. Since requests are kicked off with a WebHook, the result is the web response. It’s up to the called script to return whatever result is desired. If the result is “Accepted,” that means that the WebHook fired, but no results were returned.