How to Automate Weekly Reports with n8n
Last updated Mar 26, 2026

Recurring reports are one of the most time-consuming routine tasks for operations teams. Most teams still export data manually, paste it into a slide or email, and send it every Friday or Monday morning. n8n removes that loop entirely.
n8n is an open-source workflow automation platform with over 181,000 GitHub stars and more than 200,000 active community users as of early 2026. It connects services through a visual node-based interface, requires no programming to get started, and runs on a free cloud tier or a self-hosted server. This guide uses the n8n cloud free plan, which includes five active workflows and 2,500 executions per month.
What This Workflow Does
The workflow reads a Google Sheet once per week, passes the data to an AI node that writes a plain-English summary, formats it as an HTML email, and sends it to a distribution list. The chain runs on a timer, so once it is active, no manual steps are needed.
The complete workflow contains six nodes in sequence: Schedule Trigger, Google Sheets, a Code node for aggregation, an OpenAI node for summarization, a Gmail node for delivery, and an optional error handler. A first-time setup takes roughly 30 to 40 minutes.
Step 1: Create an n8n Account and Start a Workflow
Go to n8n.io and sign up for a free cloud account. After logging in, click "New Workflow" in the top-left corner. Name it something descriptive, such as "Weekly Sales Summary."
A blank canvas appears. This is where you drag, drop, and connect nodes. Each node performs one specific action, such as reading a spreadsheet or sending an email. Nodes are connected by drawing lines between their output and input ports.
Step 2: Add the Schedule Trigger
Click the plus icon to add the first node. Search for "Schedule Trigger" and select it. This node controls when the workflow runs automatically.
Set the interval to "Weeks" and choose a specific day and time. Monday at 8:45 AM is a practical choice because it puts the report in stakeholders' inboxes before most morning meetings. You can also choose "Every day at 6 AM" for daily summaries. Save the node. The schedule does not activate until you toggle the workflow to active at the end.
Step 3: Connect Google Sheets
Add a second node and search for "Google Sheets." Select the "Read Rows" operation.
Click "Add Credential" and complete the OAuth authentication flow against your Google account. n8n stores the credential securely and reuses it across all workflows you build.
Once authenticated, point the node at the specific spreadsheet and tab that holds your data. If your sheet is called "Weekly Sales Data" inside a file named "Operations Dashboard," enter both values. The node will fetch all rows each time the workflow runs. A typical weekly sales sheet might include columns for Date, Rep Name, Region, Revenue, and Deal Status.
Step 4: Aggregate and Prepare the Data
By default, n8n passes every row as a separate item to the next node. Before sending rows to an AI model, it helps to aggregate them into a single structured block.
Add a "Code" node and set the language to JavaScript. The following script totals revenue and counts deals by status:
const rows = $input.all().map(item => item.json);
const totalRevenue = rows.reduce((sum, r) => sum + Number(r.Revenue || 0), 0);
const closed = rows.filter(r => r.Status === 'Closed Won').length;
const open = rows.filter(r => r.Status === 'Open').length;
return [{
json: {
totalRevenue,
closedDeals: closed,
openDeals: open,
rowCount: rows.length,
weekOf: new Date().toISOString().split('T')[0]
}
}];
This produces one clean summary object with total revenue, deal counts, and the current date. The AI node in the next step receives this object and turns it into readable prose.
Step 5: Add an AI Summarization Node
Add an "OpenAI" node and select the "Message Model" operation. Connect it to your OpenAI API key under credentials. Choose a model such as gpt-4o-mini, which is fast and costs less than a cent per weekly run at typical data volumes.
In the "User Message" field, enter a prompt using an expression to pull in the aggregated data from the previous node:
Write a brief weekly operations summary for the following data. Use a professional but direct tone. Keep it under 150 words. Data: {{ JSON.stringify($json) }}
The node returns a single paragraph summarizing the week's numbers in plain English.
Step 6: Send the Email via Gmail
Add a "Gmail" node and select the "Send" operation. Authenticate it with the Google account that will send the report.
Fill in the key fields:
- To: the email address or comma-separated recipient list
- Subject:
Weekly Operations Report - {{ $now.format('YYYY-MM-DD') }} - Message (HTML): wrap the AI output in minimal HTML for consistent rendering across email clients
<p>{{ $('OpenAI').item.json.message.content }}</p>
<p style="color:#888;font-size:12px;">Automated report generated by n8n. Source: Operations Dashboard.</p>
Save the node. The workflow now has a complete chain from scheduled trigger to inbox delivery.
Step 7: Test Before Activating
Before enabling the schedule, test each node manually. Click the Schedule Trigger and hit "Test Step," then click through each subsequent node using "Execute Node." Verify that the Google Sheets node returns rows, the Code node produces a valid summary object, the OpenAI node returns a readable paragraph, and the Gmail node shows "Email sent successfully."
If any node fails, n8n displays the error inline. Common issues include expired OAuth tokens for Google credentials, column name mismatches in the aggregation script, and OpenAI rate limits on the first test run if your API key is new.
Step 8: Activate the Workflow
Once all nodes pass the manual test, toggle the "Active" switch in the top-right corner of the canvas. The workflow is now live and will execute at the next scheduled time with no further action required.
Monitor execution history under the "Executions" tab. Each run shows the input and output for every node, which makes diagnosing any future failures fast.
Common Additions
After the core workflow is stable, many teams extend it in a few ways. An error notification node (using Gmail or Slack) alerts you when any step fails during an automated run. A Filter node before the AI step skips the report on weeks when the sheet has fewer than three rows, avoiding near-empty summaries. A Google Drive node can save a copy of the report as a document for record-keeping.
For teams that want to skip the node-by-node setup entirely, VSLZ can generate the same kind of data summary from a file upload with a single prompt, without any workflow configuration.
Summary
An n8n weekly reporting workflow takes roughly 35 minutes to set up and runs indefinitely without manual input. The six-node chain covers scheduling, Google Sheets reading, data aggregation, AI summarization, and email delivery. According to n8n's own published figures, the platform has over 181,000 GitHub stars and 8,900 community workflow templates available to clone and adapt, making it one of the most actively maintained open-source automation tools available today.
FAQ
Is n8n free to use for automated reporting?
Yes. n8n's cloud free tier includes five active workflows and 2,500 executions per month, which is sufficient for most small team reporting setups running weekly or daily. A self-hosted version is also available under a fair-code license at no cost, with no execution limits.
Does n8n require coding to build a weekly report workflow?
No. The Schedule Trigger, Google Sheets, OpenAI, and Gmail nodes are fully configurable through the visual interface without writing any code. An optional JavaScript Code node is used in this guide to aggregate spreadsheet rows before passing them to the AI, but it can be replaced with a simpler Set node for basic use cases.
Can n8n read from Excel or CSV files instead of Google Sheets?
Yes. n8n includes nodes for reading local CSV files and spreadsheet data stored in OneDrive or SharePoint via the Microsoft Excel node. For files uploaded to a server or shared drive, the Read Binary File node can ingest CSV data and pass it through the same aggregation and AI steps described in this guide.
How do I get notified if an automated n8n report fails?
Add an Error Trigger node to your workflow canvas and connect it to a Gmail or Slack node. When any node in the chain fails during an automated run, n8n routes execution to the error trigger and sends an alert containing the workflow name, failing node, and error message.
What is the difference between n8n and Zapier for reporting workflows?
n8n offers a more flexible data transformation layer than Zapier, including native JavaScript code nodes and multi-item data handling that makes row-level aggregation straightforward. Zapier is simpler to configure for direct one-to-one integrations. For reporting workflows that require aggregating, filtering, or reshaping data before delivery, n8n is generally the more capable option.


