We replaced a 3-hour weekly reporting ritual with a fully automated pipeline. Google Sheets, n8n, and Slack — that's the whole stack. Here's exactly how it works.
Every agency knows this pain. Friday afternoon, someone is manually pulling numbers from five different places, pasting them into a spreadsheet, formatting a summary, and emailing it to a list of clients. Three hours of work that produces a PDF nobody asked for.
The problem isn't the data. It's the assembly. And assembly is exactly what automation is built for.
Every Monday at 8:00 AM, a cron trigger fires in n8n. It reads the previous week's data range from Google Sheets — traffic, conversions, revenue, tasks completed. A JavaScript node cleans and formats the numbers, calculates week-over-week deltas, and flags anything that moved more than 15%. Then it builds two outputs simultaneously.
The n8n JavaScript node does the heavy lifting: rounds numbers, adds % deltas, flags anomalies, and injects everything into an HTML template string. The Slack message uses Block Kit — a structured JSON format that renders as a clean card. The whole formatting step is under 40 lines of JavaScript. No external libraries.
A validation node checks for empty cells before formatting. If anything looks wrong, it pings the ops channel instead of sending a broken report to the client. This single safeguard has prevented three embarrassing client emails since deployment.
Seven hours total. Three designing the Sheets schema. Two building the n8n workflow. Two refining the email template. The tools are all free or already in the client's stack — the only cost was build time.
If you want this running before your next client call, get in touch. It's one of our most common fixed-price builds.