ManyReach to Google Docs, reports shared in Slack
Monday reporting sounds simple until you’re juggling “completed” campaign lists, copying stats, and trying to turn raw numbers into something your team will actually read.
This ManyReach report automation hits growth marketers first, but agency owners and sales ops folks feel it too. You want a clean weekly report without spending about 2 hours rebuilding the same doc every week.
This workflow pulls finished ManyReach campaigns, generates an AI-written performance report, converts it into a Google Doc, then drops the link in Slack. You’ll see exactly how it works, what you need, and where people usually get stuck.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: ManyReach to Google Docs, reports shared in Slack
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch All Campaign"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Active & Completed Ca..", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "4.1", pos: "b", h: 48 }
n5["<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/markdown.dark.svg' width='40' height='40' /></div><br/>Markdown - HTML"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Details", pos: "b", h: 48 }
n7["<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/>HTML - Magic 🪄"]
n8["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload Doc"]
n9["<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/>Send a Doc Link"]
n10@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Campaign Report Agent", pos: "b", h: 48 }
n12["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch One Campaign"]
n4 -.-> n11
n1 --> n3
n8 --> n9
n6 --> n7
n2 --> n12
n9 --> n2
n5 --> n6
n10 --> n0
n0 --> n1
n12 --> n11
n7 --> n8
n11 --> n5
n3 --> n2
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 n10 trigger
class n11 ai
class n4 aiModel
class n3 decision
class n0,n8,n12 api
class n7 code
classDef customIcon fill:none,stroke:none
class n0,n5,n7,n8,n9,n12 customIcon
Why This Matters: Weekly campaign reporting is a time sink
If you run outbound campaigns, you already know the weekly rhythm: someone pulls ManyReach stats, someone else turns them into “insights,” and then everyone asks questions in Slack that the report should have answered. The painful part isn’t just the time. It’s the context switching. You’re digging through campaigns, double-checking what’s actually completed, and rewriting the same takeaways because nobody wants a spreadsheet dump. And when you’re rushed, little errors creep in (wrong campaign name, outdated numbers, missing recommendations), which makes the report less trusted next week.
The friction compounds. Here’s where it usually breaks down in real teams.
- You pull a list of campaigns, but filtering “active” and “completed” still turns into manual checking and second-guessing.
- Metrics like opens, clicks, replies, conversions, and interested leads get copied around, which means mistakes are almost guaranteed eventually.
- Even when the numbers are right, the “so what” is missing, so stakeholders ask for a rewrite (or ignore it).
- Sharing happens late because the report lives on someone’s laptop until they remember to post it in Slack.
What You’ll Build: ManyReach weekly reports as Google Docs, sent to Slack
This automation runs every Monday and does the full reporting loop for you. It starts by calling the ManyReach API to fetch up to 100 campaigns, then splits them into individual items so each campaign can be evaluated cleanly. Next, it filters down to the campaigns that are both active and completed (the ones you actually want to discuss), and processes them one-by-one to pull detailed performance data. Then the workflow uses an AI agent (GPT-4.1) to turn those metrics into a structured report: executive summary, highlights, metric breakdowns, content analysis, configuration notes, and practical recommendations. Finally, it converts the report into styled HTML, uploads it as a Google Doc, and posts the Google Doc link into your Slack channel so the team can review and act.
The workflow starts on a schedule. From there, it gathers campaign data, generates the narrative report, and publishes a shareable Google Doc. Slack gets the link with the campaign name, so nobody has to hunt for it.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you ran 8 completed campaigns last week. Manually, a decent report is often 15 minutes to pull and sanity-check stats, plus about 15 minutes to write a summary and recommendations. That’s roughly 4 hours, and it usually lands late. With this workflow, you spend maybe 10 minutes reviewing the Google Docs that were created and answering questions in Slack. The “build the report” part is basically gone.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- ManyReach for campaign data access via API.
- Google Drive / Google Docs to store the generated reports.
- Slack to publish report links to your channel.
- OpenAI API key (get it from your OpenAI dashboard under API keys).
Skill level: Intermediate. You’ll connect OAuth accounts, paste API credentials, and tweak a prompt to match your reporting style.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A weekly schedule kicks it off. Every Monday, n8n triggers the workflow automatically, so reporting happens even if you’re in back-to-back calls.
ManyReach campaigns get pulled and filtered. The workflow requests up to 100 campaigns, splits them into individual records, then keeps only the ones marked active and completed. That avoids “reporting on stuff that’s still running” which honestly is where a lot of Monday confusion starts.
Each campaign gets a real write-up. For every filtered campaign, the workflow fetches the detailed stats and hands them to an AI agent (GPT-4.1) that generates a report with highlights, benchmarks, and recommendations instead of just listing numbers.
Google Docs is the final deliverable, with Slack distribution. The report is converted from markdown to styled HTML, uploaded as a Google Doc in your Drive, then Slack posts a message to your chosen channel with the campaign name and the doc link.
You can easily modify the Slack channel and the report format based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the weekly schedule that kicks off the campaign report generation.
- Add and open Scheduled Weekly Trigger.
- Set the Rule to run weekly with triggerAtDay set to
1(Monday). - Confirm the node connects to Retrieve All Campaigns in the workflow.
Step 2: Connect Manyreach Campaign Retrieval
Pull the campaign list and split each record into individual items.
- Open Retrieve All Campaigns and set URL to
https://app.manyreach.com/api/campaigns. - Under Query Parameters, add limit with value
100. - Credential Required: Connect your httpQueryAuth credentials.
- Open Separate Campaign Records and set Field to Split Out to
data. - Ensure Retrieve All Campaigns outputs to Separate Campaign Records.
Step 3: Set Up Filtering and Batch Iteration
Filter to only active, completed campaigns and process them in batches.
- Open Filter Active Completed and set conditions: active equals
trueand campStatus equalscompleted. - Verify the left values use expressions
{{ $json.active }}and{{ $json.campStatus }}. - Open Iterate Campaign Batches and keep default batch settings unless you need throttling.
- Confirm the flow: Separate Campaign Records → Filter Active Completed → Iterate Campaign Batches.
Step 4: Set Up Campaign Analysis with AI
Retrieve each campaign’s details and generate a markdown report using the AI agent.
- Open Retrieve Single Campaign and set URL to
=https://app.manyreach.com/api/campaigns/{{ $json.campaignID }}. - Credential Required: Connect your httpQueryAuth credentials for Retrieve Single Campaign.
- Open Campaign Analysis Agent and keep the Text field as provided (the long template with campaign metrics).
- Open GPT-4.1 Chat Model and select model
gpt-4.1. - Credential Required: Connect your openAiApi credentials in GPT-4.1 Chat Model. This model powers Campaign Analysis Agent, so credentials belong on GPT-4.1 Chat Model, not the agent.
Execution note: Retrieve Single Campaign → Campaign Analysis Agent → Convert Markdown to HTML.
Step 5: Build and Upload the Google Doc, then Post to Slack
Convert the report to HTML, package it for Google Drive, upload it, and share the link in Slack.
- Open Convert Markdown to HTML and set Mode to
markdownToHtmlwith Markdown set to={{ $json.output }}. - Open Assign Document Details and set document_name to
dfdfdfdf(replace with your desired file name logic). - Set html_content to
={{ $json.data }}and leave drive_folder_id blank if uploading to root. - Open Format HTML Payload ✨ and keep the jsCode as provided to build the multipart payload.
- Open Upload Document File, set URL to
https://www.googleapis.com/upload/drive/v3/files, Method toPOST, and Body to={{ $json.rawData }}. - Set Raw Content Type to
multipart/related; boundary=dividerand query parametersuploadType=multipartandsupportsAllDrives=true. - Credential Required: Connect your googleDriveOAuth2Api credentials.
- Open Post Document Link and set Text to
=Campaign: {{ $('Retrieve Single Campaign').item.json.data.name }} Report Link: https://docs.google.com/document/d/{{ $json.id }}. - Credential Required: Connect your slackOAuth2Api credentials and select the channel ID.
- Confirm the loop: Upload Document File → Post Document Link → Iterate Campaign Batches.
⚠️ Common Pitfall: If document_name stays as dfdfdfdf, every report will overwrite or create confusing files. Replace it with a dynamic name (for example, using campaign name and date).
⚠️ Common Pitfall: Post Document Link includes a placeholder channel ID [YOUR_ID]—you must pick a real Slack channel.
Step 6: Test and Activate Your Workflow
Run a manual test to confirm the entire flow generates a report and posts it to Slack.
- Click Execute Workflow from Scheduled Weekly Trigger to run a test.
- Verify Retrieve All Campaigns returns data and Filter Active Completed passes only active, completed campaigns.
- Confirm Upload Document File returns a Google Drive file ID and Post Document Link posts a clickable link in Slack.
- Once validated, toggle the workflow to Active so it runs every week.
Troubleshooting Tips
- ManyReach credentials can expire or need specific permissions. If things break, check your ManyReach API token (and any HTTP Query Auth settings) first.
- 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.
Quick Answers
About 30–60 minutes if your credentials are ready.
No. You’ll connect accounts, add an API key, and adjust a couple of fields and prompts.
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 costs (often 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.
Yes, and it’s pretty straightforward. You can change the filter logic that selects campaigns (the “active + completed” check) to include paused campaigns or a specific status. You can also rewrite the prompt in the Campaign Analysis Agent to match your tone, add a “red/yellow/green” score, or force a short summary for executives. If you want a different destination, swap the Slack message node for email, or upload the doc into a specific Drive folder by adjusting the upload settings.
Usually it’s an expired or incorrect ManyReach API token in the HTTP Request authentication. Double-check the token, then confirm the endpoint you’re calling still matches ManyReach’s API docs. If it fails only on some campaigns, it can be a data edge case (missing fields) that breaks the AI prompt or the HTML formatting step.
It pulls up to 100 campaigns per weekly run, then processes each completed campaign one at a time.
Often, yes, because this workflow has a few moving parts that “simple zaps” don’t love. You’re pulling a list, splitting items, filtering, looping, generating AI analysis, converting markdown to HTML, then uploading a styled doc and posting to Slack. n8n handles branching and loops cleanly, and you can self-host for high volume without paying per tiny step. Zapier and Make can still do it, but the task count climbs fast once you add AI and document generation. If you’re on the fence, Talk to an automation expert and you’ll get a straight recommendation based on your volume.
Once this is running, Monday reporting stops being a recurring chore and becomes a reliable system your team can actually use. Set it up, review the docs, then get back to work that moves the needle.
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.