This workflow corresponds to n8n.io template #7711 — we link there as the canonical source.
This workflow follows the Google Sheets → Slack recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "6173c474-bdf3-4066-a7f3-0d6aa59c4a96",
"name": "Start: Cron Trigger",
"type": "n8n-nodes-base.cron",
"notes": "Runs every 15 minutes to check tasks in Google Sheets.",
"position": [
-288,
176
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ad92e170-65ed-41a3-909d-063c1d02bdd7",
"name": "Fetch Tasks from Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"notes": "Reads all tasks from the `Tasks` sheet.",
"position": [
-32,
176
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ SHEET_TAB }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{{GOOGLE_SHEET_WORKSHEET}}}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "126d822b-85b2-4c5c-87e1-6d759d9bf2b8",
"name": "Check Task Deadlines",
"type": "n8n-nodes-base.if",
"notes": "Checks if task is due within the next 30 minutes.",
"position": [
224,
176
],
"parameters": {
"conditions": {
"dateTime": [
{
"value1": "={{$json[\"Due Date\"]}}",
"value2": "={{$now.plus({ minutes: 30 }).format('yyyy-MM-dd hh:mm')}}",
"operation": "before"
}
]
}
},
"typeVersion": 1
},
{
"id": "2a958536-cb0a-4a01-a1e0-4253a474c2b1",
"name": "Update Last Reminder Sent",
"type": "n8n-nodes-base.googleSheets",
"notes": "Updates the `Last Reminder Sent` column in Sheets to avoid duplicate reminders.",
"position": [
464,
272
],
"parameters": {
"options": {},
"fieldsUi": {
"values": [
{
"column": "Last Reminder Sent",
"fieldValue": "={{ $now.format('yyyy-MM-dd HH:mm') }}"
}
]
},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{GOOGLE_SHEET_ID}}/edit#gid=0",
"cachedResultName": "Tasks"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{GID}}"
},
"valueToMatchOn": "={{ $json[\"Task ID\"] }}",
"columnToMatchOn": "Task ID"
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "c43df2f4-ec79-4b57-ac57-30ca2d822cfe",
"name": "Daily Recap Trigger",
"type": "n8n-nodes-base.cron",
"notes": "Triggers daily recap at 6 PM.",
"position": [
-288,
480
],
"parameters": {},
"typeVersion": 1
},
{
"id": "0171cb17-54c7-4dd4-8243-ed97a9237bd4",
"name": "Fetch Completed Tasks",
"type": "n8n-nodes-base.googleSheets",
"notes": "Reads all tasks for recap.",
"position": [
-64,
480
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{GOOGLE_SHEET_ID}}/edit#gid=0",
"cachedResultName": "Tasks"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "17vTZDnZ_37_xlgs-RB_ekIhLi_c-2rpXOI5BaomD0k8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{GOOGLE_SHEET_ID}}/edit?usp=drivesdk",
"cachedResultName": "Productivity & Time Tracking Sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "f852d299-3f23-4755-aaa6-e16745925160",
"name": "Send a Slack Reminder",
"type": "n8n-nodes-base.slack",
"position": [
464,
96
],
"parameters": {
"text": "=\u26a1 Reminder: Task *{{$json[\"Task Name\"]}}* is due at {{$json[\"Due Date\"]}}.|Reason: {{$json[\"Why it matters\"]}}",
"select": "channel",
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "55101bb4-a1ec-490b-b3f6-a5969e4512c0",
"name": "Send a Slack Reminder1",
"type": "n8n-nodes-base.slack",
"position": [
160,
480
],
"parameters": {
"text": "=\ud83d\udcca Daily Recap:\nCompleted tasks today: {{ ($json[\"Status\"] || \"\").match(/Completed/g)?.length || 0 }}\nPending tasks: {{ ($json[\"Status\"] || \"\").match(/In Progress|Not Started/g)?.length || 0 }}",
"select": "channel",
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "7ab80956-b706-428d-b152-26cc9738eddd",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1392,
-304
],
"parameters": {
"width": 960,
"height": 1504,
"content": "# \ud83d\udcdd Rize Lite \u2013 Google Sheets + Slack Productivity Tracker\n\n## \u2699\ufe0f Workflow Setup\n\n### Google Sheets\n1. Create a Google Sheet with two tabs:\n - **Tasks** (main tracker)\n | Task ID | Task Name | Assigned To | Start Time | End Time | Duration (mins) | Due Date | Status | Last Reminder Sent | Why it matters |\n - **Reflections** (optional daily logs)\n | Date | Productivity Score | Focus Rating (1\u201310) | Completed Tasks | Overdue Tasks | Notes |\n\n2. Fill in tasks with:\n - `Task ID`: unique identifier (e.g., 1, 2, 3\u2026).\n - `Due Date`: in `yyyy-MM-dd HH:mm` format.\n - `Status`: `Not Started`, `In Progress`, or `Completed`.\n - `Why it matters`: short motivation/goal behind the task.\n\n### Slack\n- Connect your Slack workspace to n8n.\n- Set the target channel where reminders and recaps will be sent.\n- Replace `{{SLACK_CHANNEL}}` with your channel name or ID.\n\n### n8n Workflow\n- **Start: Cron Trigger** \u2192 runs every 15 minutes to check upcoming tasks.\n- **Fetch Tasks from Google Sheets** \u2192 pulls tasks list from the `Tasks` sheet.\n- **Check Task Deadlines (IF Node)** \u2192 identifies tasks due in the next 30 minutes.\n- **Send a Slack Reminder** \u2192 posts reminders with task name, due date, and reason.\n- **Update Last Reminder Sent** \u2192 stamps the timestamp to avoid duplicate pings.\n- **Daily Recap Trigger (Cron)** \u2192 runs daily at 6 PM.\n- **Fetch Completed Tasks** \u2192 pulls updated tasks from the sheet.\n- **Send Daily Recap (Slack)** \u2192 posts a daily summary with completed vs pending tasks.\n\n---\n\n## \u2705 Benefits\n\n- **Zero-Cost Productivity System** \n Replaces paid tools like Rize using only free tools (Sheets + Slack + n8n).\n\n- **Simple Setup, Powerful Results** \n Google Sheets acts as the database, while Slack is the notification interface.\n\n- **Stay on Track** \n Automated reminders prevent missed deadlines and encourage task focus.\n\n- **Accountability** \n Daily recaps summarize progress, making it easier to reflect and improve.\n\n- **Customizable** \n Add weekly reviews, focus scores, or AI summaries without changing core logic.\n\n- **Team-Friendly** \n Expand to multiple users: each task assigned to a person can send them reminders individually.\n\n---\n\n## \ud83d\udccc Use Cases\n\n- **Solo Productivity** \u2192 Stay consistent, track tasks, and build focus habits. \n- **Team Task Tracking** \u2192 Assign tasks in Google Sheets, reminders go to Slack channels. \n- **Project Management Lite** \u2192 No heavy SaaS tools, just Sheets + Slack automation. \n- **Self-Reflection & Growth** \u2192 Daily logs show trends, strengths, and areas for improvement. \n"
},
"typeVersion": 1
}
],
"connections": {
"Daily Recap Trigger": {
"main": [
[
{
"node": "Fetch Completed Tasks",
"type": "main",
"index": 0
}
]
]
},
"Start: Cron Trigger": {
"main": [
[
{
"node": "Fetch Tasks from Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Check Task Deadlines": {
"main": [
[
{
"node": "Send a Slack Reminder",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Last Reminder Sent",
"type": "main",
"index": 0
}
]
]
},
"Fetch Completed Tasks": {
"main": [
[
{
"node": "Send a Slack Reminder1",
"type": "main",
"index": 0
}
]
]
},
"Fetch Tasks from Google Sheets": {
"main": [
[
{
"node": "Check Task Deadlines",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow transforms Google Sheets into a lightweight productivity engine and connects it to Slack for automated reminders and daily recaps. No extra SaaS, no extra cost – just a simple system that keeps you on track and accountable.
Source: https://n8n.io/workflows/7711/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Simplify financial oversight with this automated n8n workflow. Triggered daily, it fetches cash flow and expense data from a Google Sheet, analyzes inflows and outflows, validates records, and generat
This workflow is essential for e-commerce store owners, product strategists, and marketing teams who need real-time insight into what their competitors are selling.
This weekly workflow automatically discovers new high-volume, ranked keywords for your domain on Google without manual SERP monitoring. On each run, the workflow fetches the latest ranking and search
Use cases are many: send recurring market updates to investors, distribute new listings context to buyers, or push periodic area snapshots to your client base — all without touching it manually after