5 workflows that pay off in the first week
Not a "digital transformation." Five small workflows that hand you back an hour a day, starting Monday.
A client once admitted he spent forty minutes every morning on the same chore: open email, copy new leads into Google Sheets, ping the manager on Telegram. Forty minutes. Daily. We rebuilt it in n8n in one evening. Next morning he sent a screenshot of an empty inbox with one line: "That's it?" Yes. That's it.
That's what n8n is good for. You don't have to automate the whole sales department on day one. Find one boring thing you do by hand every day and kill it. Below are the five workflows I build most often. All of them come together from stock nodes, no code required. Almost.
The five I reach for first
- Site leads into a sheet and a chat. A Webhook catches the form, Set cleans the fields, Google Sheets appends a row, Telegram pings the manager. The lead is visible to everyone in two seconds, not "whenever someone checks email."
- Nightly sales report. A Schedule Trigger at 8:00, Postgres tallies yesterday's revenue, Slack drops the number in a channel. Everyone knows how the day went before anyone asks.
- Inbox triage. A Gmail trigger fires on new mail, an IF checks subject and sender, spam and newsletters go to archive, real requests become tasks. Your inbox stops being a landfill.
- Keeping two systems in sync. An HTTP Request pulls records from the CRM, Merge joins them with a sheet, Set normalizes the shape, and both systems finally agree on reality.
- Follow-up nudges. A Schedule Trigger checks hourly for anyone who left a request a day ago and never heard back, then Gmail sends one polite reminder. Not a twelve-email sequence. One.
Notice the same nodes keep showing up across all five? A trigger, a bit of logic, a write somewhere, a ping to someone. That's 90% of small-business automation right there. The other 10% is when you need a Code node, and that's where it gets interesting.
Where you can't dodge expressions
Form data almost never arrives in the shape the next node wants. A name padded with spaces, a phone number with letters in it, an email screaming in caps. So between the trigger and the write I almost always drop in a Set node with a couple of expressions — cheaper than scrubbing the sheet by hand later.
// email → lowercase, no spaces
{{ $json.email.trim().toLowerCase() }}
// phone → digits and plus only
{{ $json.phone.replace(/[^0-9+]/g, "") }}
// IF: pass only real requests downstream
{{ $json.email.includes("@") && $json.message.length > 3 }}Don't build one twenty-node monster. Split it into small workflows and let one call the next over a Webhook. When something breaks — and it will — you'll know in a minute which piece fell over.
One more thing I learned the hard way: external APIs go down. An HTTP Request to someone else's service will eventually time out or return a 500, and if the node has no retry, the whole workflow stalls in silence. Turn on retries for every node that reaches outside. Three attempts with a couple of seconds between them cover almost every hiccup on the other end.
The best automation isn't the one that wows in a demo. It's the one everyone forgot about a month later, because it just works.
Start with one. Take that boring task you already did this morning and build a four-node workflow for it. An hour tonight, and tomorrow morning you've got an hour back. In a week there'll be five of them, and you'll stop counting the time they save. That's the point you were aiming for all along.
Want this in your own project?
Let's look at your process and where it's safe to automate.