n8n Weekly Reporting Workflow
Replace the Monday-morning reporting scramble with a 6am n8n workflow. Slack summary + PDF, sent before standup.
- For whom
- RevOps, performance marketers, and CMOs who lose 4-6 hours every Monday compiling reports across platforms.
- Time to value
- 2 hours to set up, 4-6 hours saved every week after
- Last updated
- Apr 30, 2026
Why this exists
Manual Monday-morning reporting is one of the highest-cost low-value activities on most marketing teams. 4 to 6 hours per week per RevOps person, repeating forever. n8n plus the platform APIs eliminates it entirely. Setup is 2 hours. Ongoing maintenance is zero. The team gets back roughly 240 hours per year, the equivalent of one full month of senior IC time.
Manual reporting is one of the highest-cost low-value activities on most marketing teams. n8n + the platform APIs eliminate it entirely. This is the structure Xpand sets up for clients in week one of an AI Automation engagement. Setup is 2 hours. Maintenance is 0.
What the workflow does (high level)
Runs every Monday at 6am in your local timezone via cron trigger
Pulls last-7-day data from Meta Ads, Google Ads, GA4, HubSpot, and LinkedIn Ads
Computes week-over-week deltas for spend, impressions, leads, MQLs, and SQLs
Formats a Slack message with the headline metrics and the 2 biggest wins / drops
Renders a PDF with full breakdown and emails to the marketing team and exec stakeholders
Workflow structure
Trigger: Cron node, schedule = 0 6 * * 1 (every Monday 6am)
Fetch: 5 parallel HTTP request nodes pulling last 7 days from each platform's API
Meta Marketing API, Google Ads Reporting API, GA4 Data API, HubSpot Reports API, LinkedIn Marketing Solutions.
Transform: Function node that normalizes each platform's data into a common schema {channel, spend, impressions, clicks, leads, mqls, sqls}
Compute: Compare last 7 days vs previous 7 days, compute deltas as percentages
Format Slack: AI node (GPT-4 or Claude) generates a 4-line summary of headline numbers + 2 biggest movers
Send Slack: Slack node posts to your reporting channel
Generate PDF: HTML-to-PDF node renders a templated report with charts and tables
Email PDF: Email node sends to a distribution list with the PDF attached
Slack summary prompt
txtYou are a marketing performance analyst. Given the following weekly metrics, write a 4-line Slack summary.
Data:
{{aggregated_metrics_json}}
Format:
Line 1: Headline. total spend, total leads, week-over-week change
Line 2: Best performer. channel + metric
Line 3: Biggest concern. channel + metric + why
Line 4: One specific action recommendation for this week
Rules:
- No filler ('it's worth noting', 'overall').
- Use specific numbers, not 'increased significantly.'
- Active voice.
- Maximum 60 words total.Setup checklist
Self-host n8n on Render, Railway, or your own VPS (recommended) OR use n8n Cloud
Add API credentials for Meta, Google, GA4, HubSpot, LinkedIn in n8n credentials manager
Create a #marketing-reports Slack channel and add an n8n bot integration
Build an HTML email template with chart.js charts and tables (use a Loops or Mailgun template)
Test by manually triggering the workflow, verify Slack and email output
Schedule the cron, monitor for the first 4 weeks
Insight
Most teams save 240+ hours per year by automating Monday reporting. The setup pays back in week 2.
Common pitfalls
Meta API rate limits. batch requests, do not loop
The Meta Marketing API caps at 200 calls per hour per app. Use batch endpoints.
GA4 quota errors. request only the dimensions you display
Free tier is 200K rows per day per property. Aggregating at the channel level keeps you well under.
Time zone mismatches between platforms
Force everything to UTC in the transform step. Display in local time only at the Slack/PDF layer.
Currency mixing. Meta reports in account currency, GA4 in property currency
Normalize to a single currency in the transform step using a daily FX feed (exchangerate-api.com).
How to use it well
Self-host n8n on a cheap VPS (Hetzner, Vultr, around $5 per month) rather than n8n Cloud past 5,000 monthly tasks. The cost difference compounds. Test the workflow against historical data before scheduling the cron. Add a dead-letter Slack notification so failures alert the team rather than silently breaking on Tuesday morning.
What good looks like
Live Monday 6am Slack summary from a real client running this workflow.
📊 Weekly performance summary. Apr 22 to 28
💰 Spend: $48,200 (-3% w/w)
🎯 Leads: 187 (+12% w/w)
📈 MQL→SQL: 41% (vs 38% prior week)
💼 Meetings booked: 42 (+8 w/w)
🟢 Best mover: LinkedIn Ads, CPL down 18% on the new founder-story creative
🔴 Watch: Meta lookalike at $145 CPL vs $89 account avg, kill or rework
👉 Recommended this week: 3x budget on the founder-story angle, kill the 1% LL audience.
Full PDF report: https://reports.client.com/2026-04-w17.pdfFAQ
Why n8n and not Zapier?
n8n is open source, self-hostable, and has no per-task pricing. A weekly reporting workflow that runs 4 platform fetches per week would cost 200-400 USD/month on Zapier at scale. n8n self-hosted is free past the cost of a 5 USD/month VPS.
Can I run this without n8n?
Yes. Make.com, Pipedream, or a custom Node.js script all work. n8n is preferred for the visual workflow editor and the easy debugging on individual nodes. The pattern (cron → parallel fetches → transform → format → notify) is the same regardless of tool.
What does the AI summary cost per run?
Under 0.05 USD per run on Claude Sonnet 4.6 or GPT-4o. The summary input is typically 800-1,200 tokens of metrics, output is 200-400 tokens. Annualized cost is under 5 USD for weekly reporting.
How do I extend this to client-facing reports?
Two options. Option A: White-label the PDF template per client and email separately. Option B: Add a Notion page builder node that pushes the same data into a client-facing Notion dashboard. Xpand uses Option B for ongoing clients because it keeps the report editable and commentable.
Related templates
Want this applied to your stack?
The strategy call walks the template against your real situation and tells you the top three changes that would move the metric this quarter.
Book a strategy call →