Webhooks - Notifications, but for a computer

Ok team, let’s have a chat about programmatic actions and how they can integrate systems together. First a workflow that we currently have in our system. Upon creation of a new customer, we have a notification set to be sent immediately to the customer via SMS and email which contains a link to our credit terms and conditions.

This is a great system, it’s easy to understand, incredibly reliable, and allows us to easily spread our various communications channels to our customers.

We can improve on this though - This system works really well for consumers, but isn’t necessarily the best approach for larger businesses, where credit applications may need to go to a separate department or mobile number.

Using a webhook we could offload the processing of the event to an external server. The packet of data sent to the webhook recipient would contain the information from the notification type so that additional logic could be applied on that server.

With this extra information for example, we could send 7 day account terms to consumers, and 30 day account application forms to businesses, all automatically, an improvement to our system that would increase our productivity massively.

There’s a wide range of “Event Messages” that could be translated across to a webhook model which would give us a huge amount of interoperability between our systems, I’d love to see Aroflo bring something like this out in the New Year

Hey Waide,

Yea Webhooks are pretty awesome and it’s something that we will add to Event Messages in the future. In the mean time you can use Event Message Emails as faux webhooks if you are using systems like Zapier or other email processors that can forward an email to a webhook.

I use this process with several internal integrations we have here @ AroFlo in leui of “real” webhooks and it works just the same. In AroFlo I create a text email description template that is a json structure:


and attach that to my event message:


And I use our mail server to detect any emails sent to a particular address to forward directly to a webhook from Zapier. If you’re not able to do this with your own mail server you could instead use something like the Email by Zapier trigger


Which allows you to receive and process an email to make it’s contents available further in the Zap.


I have made something pretty awesome using this concept.

So, after receiving Bradley’s recommendation, I made a universal notification template - you can get it here

Now you may notice when you view it that it’s kinda not very JSONey. This is because, when using every available field in event messages, we do end up with a couple of situations where it is just too hard to accommodate for everything and produce a JSON compliant document.

I then set up n8n - a webapp which makes designing workflows simple, with drag-and-drop creation and clear documentation.

So, here’s how this works, and what I’ve created so far:

Event messages in Aroflo are sent immediately for every type of event message using the above posted template to a special email address exclusively for handling these messages. n8n uses imap to connect to that mailbox and download the message. The message is converted to proper JSON using a few replace commands and from there I can begin processing.

An example of one of the features I’ve been able to develop using this: if I receive a message of type “Invoice Approved” I will check to see if the customer has a mobile number, and that they haven’t opted out of SMS billing, then I grab the url for the pay now link from the JSON, shorten it using a URL shortener and send it in a text to the mobile number I discovered earlier. Without this setup, I would not be able to implement the sms opt-out functionality, nor could I intermediately use a URL shortener.

Another feature I am quite proud of, use headless chromium to assign a task whenever a schedule is created for one of our technicians. This is a very welcome improvement my staff have been waiting for, and I am pretty happy with how simple the solution turned out to be.