Google Docs + Slack weekly reports, ready to share
Weekly reporting is where good marketing time goes to die. You pull numbers from tabs, paste into a doc, rewrite the same “what happened” paragraph, then Slack it out and hope nobody asks for “just one more breakdown.”
Marketing managers feel it every Monday. Agency owners feel it when clients want updates “by noon.” And the ops person who has to chase screenshots feels it too. This Docs Slack reports automation turns your recurring performance update into a repeatable, ready-to-share report.
Below you’ll see how the workflow collects metrics, uses AI to write an executive summary, publishes a Google Doc, and posts a clean Slack update with the link.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Docs + Slack weekly reports, ready to share
flowchart LR
subgraph sg0["Scheduled Run Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Run Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Mock Ads Metrics"]
n2@{ icon: "mdi:robot", form: "rounded", label: "LLM Summary Request", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Assemble Report Markdown"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Generate Doc File", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Insert Report Content", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Post Slack Update"]
n1 --> n2
n2 --> n3
n0 --> n1
n4 --> n5
n5 --> n6
n3 --> n4
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2 ai
class n1,n3 code
classDef customIcon fill:none,stroke:none
class n1,n3,n6 customIcon
The Challenge: Weekly reporting that steals your Monday
Reporting sounds simple until it’s your job to ship it every week. You’re not just “copy-pasting metrics.” You’re reconciling totals, explaining why one channel dipped, finding the one campaign that carried results, and formatting it so it doesn’t look like a dump from a spreadsheet. Then someone asks for the link, someone else asks for an email version, and suddenly you’re doing distribution work instead of analysis. The worst part is the mental load: you rebuild the same structure repeatedly, which makes consistency almost impossible.
It adds up fast. Here’s where it usually breaks down.
- You spend about 2 hours collecting metrics across channels, even before you start writing.
- The narrative changes based on who writes it, so execs stop trusting the “story” and only scan the numbers.
- Formatting gets re-done every week, which means the report looks different each time and small errors sneak in.
- Sharing happens in three places (Docs, Slack, email), and you end up sending “latest version” messages all day.
The Fix: An AI-generated weekly report that publishes itself
This workflow runs on a schedule (think Monday morning) and builds your weekly performance report end-to-end. It starts by collecting campaign performance metrics (the template includes demo data, and it can be connected to real sources like ad platforms via APIs). Next, it sends those metrics to an OpenAI-powered step that writes an executive summary: what improved, what slipped, and what to do next. Then it assembles everything into a structured Markdown report with totals, channel performance, and top campaigns. Finally, it creates a Google Doc, inserts the formatted content, and posts a Slack message with topline numbers and a direct link to the report. Optional email delivery is also supported if you want stakeholders to get it in their inbox.
The workflow begins with a scheduled trigger. AI turns raw metrics into readable insights. Google Docs becomes the single “source of truth,” and Slack gets a quick update that points everyone to the same document.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you report on 4 channels each week and you normally spend about 20 minutes pulling and checking numbers per channel, plus about 45 minutes writing and formatting. That’s roughly 2 hours every Monday, and it’s easy to lose more when someone wants a “quick tweak.” With this workflow, you spend maybe 10 minutes reviewing the Doc after it generates, then you’re done. The Slack message ships automatically with the link, so distribution stops being its own mini-project.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Docs for storing the weekly report.
- Slack to notify your team with the report link.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Beginner. You’ll connect accounts, paste an API key, and adjust a few fields like channel names and the schedule.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A weekly schedule kicks it off. The workflow runs automatically on the day/time you choose, so reporting doesn’t depend on someone remembering to start it.
Metrics are gathered and prepared. It pulls campaign performance data (the included “Mock Ads Metrics” node provides demo data), then shapes the fields so the summary step receives clean, predictable inputs.
AI writes the executive summary. The OpenAI chat model analyzes the numbers and generates a clear recap: wins, problems worth noticing, and a few practical recommendations.
A Google Doc is created and shared via Slack. The automation assembles the report in Markdown, generates the Doc, inserts the report content, then posts a Slack update with topline numbers and a direct link.
You can easily modify the report sections to match your KPIs based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the workflow to run weekly so the report is generated on a consistent schedule.
- Add and open Scheduled Run Trigger.
- Set the schedule rule to an interval with Days Interval of
7and Trigger At Hour of7. - Connect Scheduled Run Trigger to Mock Ads Metrics to start the data flow.
Step 2: Connect the Data Generation Step
Generate the weekly metrics dataset used by the report and the LLM summary.
- Open Mock Ads Metrics and keep the JavaScript Code block as provided (it generates 7 days of reproducible demo metrics).
- Confirm Mock Ads Metrics connects to LLM Summary Request in the canvas.
- Verify the output includes
period,summary, andbyChannelobjects (used in later nodes).
Step 3: Set Up the AI Summary
Use the LLM to generate an executive summary from the metrics.
- Open LLM Summary Request and set Model to
gpt-4o-mini. - In the first message, keep the content as the expression-driven prompt (e.g.,
Period: {{ $json.period.start }} → {{ $json.period.end }}andTotals: {{ $json.summary }}). - Credential Required: Connect your openAiApi credentials.
- Connect LLM Summary Request to Assemble Report Markdown.
Step 4: Assemble the Report Markdown
Combine the metrics and LLM summary into a single markdown report.
- Open Assemble Report Markdown and keep the node references set to
Mock Ads MetricsandLLM Summary Request. - Ensure the output includes a
reportfield used downstream (created by the JavaScript code). - Connect Assemble Report Markdown to Generate Doc File.
Step 5: Configure the Google Docs Output
Create a new Google Doc and insert the report content.
- Open Generate Doc File and set Title to
=Weekly Performance Report – {{ $json.period.start }} to {{ $json.period.end }}. - Set Folder ID to your target folder (replace
[YOUR_ID]with a real Drive folder ID). - Credential Required: Connect your googleDocsOAuth2Api credentials.
- Open Insert Report Content and set Operation to
update. - Set Document URL to
={{ $json.id }}and the insert text to={{ $('Assemble Report Markdown').item.json.report }}. - Credential Required: Connect your googleDocsOAuth2Api credentials.
[YOUR_ID] in Generate Doc File will cause the workflow to fail. Always replace it with a real folder ID.Step 6: Configure the Slack Notification
Post a summary and document link to Slack when the report is ready.
- Open Post Slack Update and keep Authentication set to
oAuth2. - Set Text to the existing message template, including the expressions like
{{ $('Assemble Report Markdown').item.json.period.start }}and{{ $json.documentId }}. - Select a Slack channel by setting Channel to your target channel ID (replace
[YOUR_ID]). - Credential Required: Connect your slackOAuth2Api credentials.
Step 7: Test and Activate Your Workflow
Validate the end-to-end flow and then enable the schedule.
- Click Execute Workflow to run a manual test.
- Confirm Generate Doc File creates a Google Doc with the correct title and Insert Report Content inserts the markdown report.
- Check Slack to verify Post Slack Update sends a message with the correct period, topline metrics, and document link.
- When everything looks correct, toggle the workflow to Active to enable the weekly schedule.
Watch Out For
- Google Docs credentials can expire or need specific permissions. If things break, check the Google connection in n8n’s Credentials and confirm the account can create and edit Docs.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Common Questions
About 30 minutes if your Google Docs, Slack, and OpenAI accounts are ready.
Yes. You won’t write code, but you will connect accounts and paste an OpenAI API key into n8n.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage, which is usually a few cents per report depending on length.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can keep the same skeleton and swap the inputs. Replace the “Mock Ads Metrics” step with live connectors (for example, HTTP Request calls to your ad platforms), then adjust the “LLM Summary Request” prompt to match your KPIs and definitions. Common customizations include adding a branded intro section, splitting results by client or region, and changing the Slack message to include the exact topline metrics your leadership asks for.
Usually it’s expired Google credentials or the wrong Google account connected in n8n. Reconnect the Google Docs credential, then confirm the account can create files and edit document content. If it still fails, check whether your organization blocks third-party OAuth access or requires admin approval.
Plenty for most teams running weekly reporting.
Often, yes, especially if you want the report to feel “made,” not stitched together. n8n is great when you need a real workflow: shaping data, merging fields, generating Markdown, then creating a Doc and pushing Slack updates in one run. Self-hosting also means you’re not paying per task in the same way, which matters once you scale to multiple clients or multiple reports. That said, Zapier or Make can be quicker for very simple two-step alerts. Talk to an automation expert if you want a recommendation based on your reporting volume.
Once this is running, Monday reporting becomes a quick review instead of a half-day project. The workflow handles the repeatable work so you can spend your time on decisions.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.