
Automation can make life easier.
I guess the keyword there is "can," but for me and my previous workplace, it certainly did. The trick for us was finding and implementing an automation tool that was low-cost (i.e. "free"), easy to modify workflows, connectable with the other softwares we used, able to handle custom Python code.
If you've worked with QuickBooks Online, you may know that it has some built-in automation, but it's not very tweakable. For example, I can have a report run with a frequency of "Every Day," but I can't set what time of day. The default run time is midnight. So when the executive director asked for a specific report to be sent to him everyday at the end of the workday, I was in a bit of a bind. On top of that, I knew I couldn't ask for funds to pay for something like Zapier.
My solution? A self-hosted n8n node on a Google Compute Engine instance using Docker.

Google Cloud has a lot of services that I didn’t really know about, but I found this one when I was researching this project. I wanted it to be low cost, and the Compute Engine delivered that for this particular project. By the time I ramped up its usage with multiple n8n workflows, I was only paying about $0.20 per month. Not bad at all.
The n8n docs recommend that self-hosted n8n nodes use Docker or Docker Compose. Because my Google Compute instance was a Linux based machine, I chose Docker Compose to run things. Pretty straightforward, and n8n has excellent documentation. I also set up a subdomain for our website that pointed to the n8n environment so I could easily access it from my browser.
Once the environment was set up, I began creating workflows.

This is another reason I chose n8n. I wasn’t sure how long I would be working with the organization, and I wanted others to be able to use the tool if necessary. Creating workflows in n8n is virtually code-free. Yes, you have to do a bit of data manipulation and credential wrangling, but once those things are entered, it’s all done graphically with icons being connected by lines. It’s easy to see the flow of data and easy to troubleshoot each node individually. Here is an example workflow that fetches sales receipts from QuickBooks Online:

As you can see in the picture, there is some built-in functionality for getting dates, making HTTP calls, and running loops, and there is also a way to run (simple) custom code with Python or JavaScript. For anything else, a separate solution needs to be implemented with Flask or Windows Task Scheduler or a similar tool. I mention those tools specifically, because in one of my owns workflows, I needed to get sales receipts from QuickBooks Online and then run them through a custom Python script that performs a MailMerge in Microsoft Word and then uploads the documents to Google Drive, finally ending by printing them out. But that is a project for a separate post.
If you have questions about how to implement n8n for your own organization, please feel free to reach out using the Contact page!