Google Sheets → Slack: How We Saved an Ops Team 2.5 Hours Every Monday
An e-commerce ops team was manually pulling numbers from five spreadsheets and writing up a Slack digest every Monday morning. Two and a half hours, every single week. Here's exactly what we built to eliminate it.
The problem
Ravi runs operations for an e-commerce brand doing around £800k/year. Every Monday, before the 9am standup, he opened five Google Sheets — orders, inventory, returns, ad spend, support tickets — pulled the key numbers, calculated week-on-week changes, wrote it all up in a formatted Slack message, and posted it to #ops-digest.
Two and a half hours. Every Monday. Without fail. If Ravi was on leave, someone else had to do it — which meant briefing them, hoping they pulled the right cells, and usually the digest arriving late. On public holidays, it sometimes didn't happen at all.
"The data's all there," he said. "I just have to move it from five places into one. Every week. It feels like something a computer should be doing."
He was right.
What we built
One n8n workflow. Triggered every Monday at 07:45am. Reads all five sheets, calculates the metrics, formats the Slack message, posts it by 08:00am. Done.
All five sheets are read in parallel so the whole workflow completes in under 15 seconds. Each sheet has a dedicated processing block that knows which columns to read and what to calculate: total orders, fulfilment rate, return rate, ad spend vs. revenue ratio, open vs. closed support tickets.
The metric engine then calculates week-on-week deltas automatically. The Slack message uses Block Kit formatting — sections, dividers, green/amber/red indicators — so the team can scan it in 30 seconds and know exactly what's moved since last week.
We also added a validation step: if any sheet hasn't been modified in the past 7 days, the relevant section gets a warning flag in the Slack message. That way the team knows to double-check before acting on the data, rather than trusting stale numbers.
The workflow snapshots each Monday's metrics to a lightweight history tab. No external database, no new tools — just a tab in one of the existing sheets. Enough to support week-on-week comparison indefinitely.
The build
We used n8n as the workflow engine. It handles the cron schedule, the Google Sheets OAuth reads, the metric calculations, the Slack API call, and the history writes. It runs on a $12/month VPS — the same one Ravi was already using for another automation we'd built him previously.
The Slack formatting took the longest — half a day — because Block Kit is fussier than it looks. But the result is a message that looks like it was written by hand, with proper sections, emoji indicators, and clean number formatting.
Total build: two and a half days. Day one was the sheet reads and metric calculations. Half a day was Slack formatting. Day two was testing with real data and fixing edge cases (empty cells, sheets updated mid-morning, the first run with no prior week to compare against).
The result
The delta feature turned out to be the most valuable part. In week three, the return rate indicator went amber — a supplier had shipped a bad batch. Without the automation, that would have sat buried in a sheet until someone went looking. With the automated digest, the team caught it before the next reorder.
"The numbers used to sit in the sheets until someone found them," Ravi told us after month one. "Now they come to us. It sounds obvious, but it changes how the team operates."
Manual reporting eating your Monday mornings? We can probably fix it in a week.
[ let's talk ]