Project managers spend hours every week on status updates, chasing task owners, and compiling reports that could write themselves. n8n can handle all of that automatically — freeing you to focus on the actual work of keeping projects on track.
Here are 5 workflows with import-ready JSON that any project manager can set up in under an hour.
1. Automated Weekly Status Report
Every Friday at 4 PM, this workflow reads your project tracker in Google Sheets, calculates completion %, tasks completed vs. overdue, and emails a clean HTML status report to all stakeholders.
No more manually pulling numbers together before end-of-week meetings.
Workflow JSON:
{
"name": "Weekly Project Status Report",
"nodes": [
{
"id": "1",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": { "interval": [{ "field": "weeks", "weeksInterval": 1 }] },
"triggerAtDay": [5],
"triggerAtHour": 16
}
},
{
"id": "2",
"name": "Read Project Tasks",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"operation": "read",
"documentId": "YOUR_SHEET_ID",
"sheetName": "Tasks",
"range": "A1:F200"
}
},
{
"id": "3",
"name": "Build Report",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const tasks = $input.all().map(t => t.json);\nconst total = tasks.length;\nconst done = tasks.filter(t => t.Status === 'Done').length;\nconst overdue = tasks.filter(t => t.Status !== 'Done' && new Date(t.DueDate) < new Date()).length;\nconst pct = Math.round(done / total * 100);\nconst html = `<h2>Weekly Status Report</h2><p><b>Overall:</b> ${pct}% complete (${done}/${total} tasks)</p><p><b>Overdue:</b> ${overdue} task(s)</p>`;\nreturn [{ json: { html, subject: `Project Status — ${new Date().toDateString()}` } }];"
}
},
{
"id": "4",
"name": "Email Stakeholders",
"type": "n8n-nodes-base.gmail",
"parameters": {
"operation": "send",
"toList": "stakeholder1@company.com,stakeholder2@company.com",
"subject": "={{ $json.subject }}",
"emailType": "html",
"message": "={{ $json.html }}"
}
}
],
"connections": {
"Schedule Trigger": { "main": [[{ "node": "Read Project Tasks" }]] },
"Read Project Tasks": { "main": [[{ "node": "Build Report" }]] },
"Build Report": { "main": [[{ "node": "Email Stakeholders" }]] }
}
}
Pro tips:
- Add a Slack summary node to post to the #project-updates channel at the same time
- Include a table of overdue tasks with owner names and due dates
- Pull from Notion, Asana, or Linear instead of Sheets using their n8n nodes
2. Overdue Task Slack Alert
This workflow runs every morning at 9 AM, checks your task list for anything past its due date, and posts a direct Slack alert listing each overdue item with the owner's name.
No more manually scanning the board to find what's slipping.
Workflow JSON:
{
"name": "Overdue Task Alert",
"nodes": [
{
"id": "1",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": { "interval": [{ "field": "hours", "hoursInterval": 24 }] },
"triggerAtHour": 9
}
},
{
"id": "2",
"name": "Read Tasks",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"operation": "read",
"documentId": "YOUR_SHEET_ID",
"sheetName": "Tasks",
"range": "A1:E200"
}
},
{
"id": "3",
"name": "Filter Overdue",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const today = new Date();\nconst overdue = $input.all()\n .map(t => t.json)\n .filter(t => t.Status !== 'Done' && new Date(t.DueDate) < today);\nif (overdue.length === 0) return [];\nconst lines = overdue.map(t => `• *${t.Task}* — Owner: ${t.Owner}, Due: ${t.DueDate}`).join('\\n');\nreturn [{ json: { text: `*${overdue.length} overdue task(s):*\\n${lines}`, count: overdue.length } }];"
}
},
{
"id": "4",
"name": "IF Has Overdue",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": { "number": [{ "value1": "={{ $json.count }}", "operation": "larger", "value2": 0 }] }
}
},
{
"id": "5",
"name": "Slack Alert",
"type": "n8n-nodes-base.slack",
"parameters": {
"operation": "post",
"channel": "#project-updates",
"text": "={{ $json.text }}"
}
}
],
"connections": {
"Schedule Trigger": { "main": [[{ "node": "Read Tasks" }]] },
"Read Tasks": { "main": [[{ "node": "Filter Overdue" }]] },
"Filter Overdue": { "main": [[{ "node": "IF Has Overdue" }]] },
"IF Has Overdue": { "main": [[{ "node": "Slack Alert" }]] }
}
}
3. New Project Kickoff Automation
When a new project is added to your Sheets, this workflow automatically creates a Notion project page, posts an announcement to Slack, and sends a welcome email to the client — in under 10 seconds.
Workflow setup:
- Google Sheets Trigger — watches your Projects sheet for new rows
- HTTP Request — creates a Notion page (project name, start date, PM name, client, links section)
-
Slack — posts to
#announcements: "🚀 New project kicked off: [Project Name] — PM: [Name]" - Gmail — sends client a welcome email with project overview and next steps
- Google Drive — creates a project folder structure (optional but useful)
The welcome email template, Slack message format, and Notion page structure are all customisable.
4. Budget Tracker with Automatic Alerts
This workflow checks your project budget sheet every hour. When spend crosses 80% of budget, it immediately alerts the project manager via email and Slack. At 100%, it escalates to the department head.
Workflow JSON:
{
"name": "Budget Alert",
"nodes": [
{
"id": "1",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": { "interval": [{ "field": "hours", "hoursInterval": 1 }] }
}
},
{
"id": "2",
"name": "Read Budget Sheet",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"operation": "read",
"documentId": "YOUR_SHEET_ID",
"sheetName": "Budget",
"range": "A1:C50"
}
},
{
"id": "3",
"name": "Check Budget",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const rows = $input.all().map(r => r.json);\nconst alerts = rows\n .filter(r => r.Budget > 0)\n .map(r => ({ ...r, pct: Math.round(r.Spent / r.Budget * 100) }))\n .filter(r => r.pct >= 80);\nreturn alerts.map(r => ({ json: r }));"
}
},
{
"id": "4",
"name": "IF Critical",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": { "number": [{ "value1": "={{ $json.pct }}", "operation": "largerEqual", "value2": 100 }] }
}
},
{
"id": "5",
"name": "Slack PM Alert",
"type": "n8n-nodes-base.slack",
"parameters": {
"operation": "post",
"channel": "#project-finance",
"text": "={{ `Budget alert: ${$json.Project} is at ${$json.pct}% ($${$json.Spent} of $${$json.Budget})` }}"
}
}
],
"connections": {
"Schedule Trigger": { "main": [[{ "node": "Read Budget Sheet" }]] },
"Read Budget Sheet": { "main": [[{ "node": "Check Budget" }]] },
"Check Budget": { "main": [[{ "node": "IF Critical" }]] },
"IF Critical": { "main": [[{ "node": "Slack PM Alert" }]] }
}
}
5. Meeting Action Items Extractor
After every meeting, someone has to write up the action items and distribute them. This workflow does it automatically.
Setup:
- Google Calendar Trigger — fires when a meeting event ends
- HTTP Request — fetches the meeting notes from Notion (or Google Doc) linked in the event description
- HTTP Request — sends notes to Claude or GPT with prompt: "Extract all action items. Return as JSON array with fields: task, owner, dueDate."
- Code — parses the JSON response, formats action items
- Notion — creates a task for each action item in the project database
- Slack — posts a formatted summary to the project channel: "Meeting wrap-up: 4 action items added to Notion"
- Gmail — optional: sends each owner a direct email with their tasks
Result: Zero manual follow-up from any meeting. Action items go from discussion to tracked tasks in under 60 seconds.
Save Time On Every Project
These 5 workflows eliminate the most time-consuming PM admin:
- Status reports: save 1-2h/week
- Overdue task scanning: save 30 min/day
- Project kickoffs: save 45 min per new project
- Budget monitoring: real-time vs. weekly manual checks
- Meeting follow-up: save 20-30 min per meeting
Combined: most project managers save 6-10 hours per week.
Get the Full FlowKit Template Store
The complete FlowKit library has 15 ready-to-import n8n templates — covering email automation, AI customer support, price monitoring, social scheduling, lead capture, appointment reminders, and more.
Each template includes:
- Import-ready workflow JSON
- Step-by-step setup guide
- Customisation tips
Browse the store: https://stripeai.gumroad.com
Individual templates: $12–$29. Complete bundle (all 15): $97.
Have a specific PM workflow you want automated? Drop it in the comments — I'll write the n8n JSON for it.













