AutomationFlowsEmail & Gmail › Automate Task Deadline Reminders with Google Sheets and Gmail…

Automate Task Deadline Reminders with Google Sheets and Gmail…

Original n8n title: Automate Task Deadline Reminders with Google Sheets and Gmail (today/3-day/7-day)

ByYuki Hirota @yukihirota on n8n.io

Task deadline management manually is inefficient and leads to missed deadlines—especially when teams rely on spreadsheets and individual reminders. This workflow automates the entire follow-up process by reading a centralized task sheet in Google Sheets every morning, checking…

Cron / scheduled trigger★★★★☆ complexity18 nodesGoogle SheetsGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 18 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #10825 — we link there as the canonical source.

This workflow follows the Gmail → Google Sheets 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 →

Download .json
{
  "id": "eG9C5Xt8LTU1bp8i",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Task Deadline Reminder Workflow (Today / 3-Day / 7-Day)",
  "tags": [],
  "nodes": [
    {
      "id": "08768d18-2772-427a-974a-d30c58d1ef17",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1344,
        176
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U/edit#gid=0",
          "cachedResultName": "\u30b7\u30fc\u30c81"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U/edit?usp=drivesdk",
          "cachedResultName": "todo"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "a6384770-85d5-44d9-922d-d8cbbd6ef1b1",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -976,
        176
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "52601fc4-d727-4fc2-9e0a-55ef26f15890",
      "name": "3\u65e5\u4ee5\u5185",
      "type": "n8n-nodes-base.if",
      "position": [
        -304,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) }}"
            },
            {
              "id": "09fa5b3f-c84c-4a61-ac16-03328eb00240",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) + 3*24*60*60*1000 }}"
            }
          ]
        },
        "looseTypeValidation": "="
      },
      "typeVersion": 2.2
    },
    {
      "id": "12de70d4-d78b-43a5-8f7e-bc5993156fe5",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1696,
        176
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d7dd5c40-dc43-43d4-8436-67795810d2af",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1760,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Schedule Trigger \nRuns the workflow every morning at the specified time so task deadlines are checked automatically without manual execution."
      },
      "typeVersion": 1
    },
    {
      "id": "8776e349-fc05-4267-a514-984938c61a2b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2784,
        -688
      ],
      "parameters": {
        "width": 992,
        "height": 1632,
        "content": "## Task Deadline Reminder Workflow (Today / 3-Day / 7-Day)\nTask deadline management manually is inefficient and leads to missed deadlines\u2014especially when teams rely on spreadsheets and individual reminders.  \nThis workflow automates the entire follow-up process by reading a centralized task sheet in Google Sheets every morning, checking the deadline for each task, and sending automatic email notifications to the responsible person based on urgency.  \nTasks due **today**, **within three days**, or **within one week** are identified and routed to customized Gmail notifications, ensuring that every team member is aware of upcoming deadlines without manual checking.\n\n## Who\u2019s it for\nThis workflow is ideal for teams and organizations that manage multiple tasks across departments and need a reliable way to stay on top of deadlines. It is especially useful for:\n\n- Project managers coordinating many deadlines  \n- Back-office teams monitoring routine operational tasks  \n- Organizations with distributed members  \n- Anyone who relies on spreadsheets but needs automated follow-up  \n\nBy integrating Google Sheets, n8n, and Gmail, you gain a proactive notification system that keeps everyone aligned and reduces the risk of forgotten tasks.\n\n## How it works\n### 1. Daily trigger  \nThe workflow runs every morning at 9:00 using a Schedule Trigger.\n\n### 2. Load task list from Google Sheets  \nThe workflow retrieves all rows from the designated spreadsheet, including task name, deadline, responsible person, and email address.\n\n### 3. Process tasks individually  \nA loop node evaluates each task one by one.\n\n### 4. Evaluate deadline conditions  \n- **Due today:** Deadline matches today\u2019s date  \n- **Due within 3 days:** Deadline falls between today and three days ahead  \n- **Due within 7 days:** Deadline falls between today and one week ahead  \n\n### 5. Send notifications  \nDepending on urgency:  \n- \u201c\u672c\u65e5\u304c\u7de0\u3081\u5207\u308a\u3067\u3059\u201d for tasks due today  \n- \u201c\u30bf\u30b9\u30af\u671f\u9650\u304c\u4e09\u65e5\u524d\u3068\u306a\u308a\u307e\u3057\u305f\u201d for tasks due within 3 days  \n- \u201c\u30bf\u30b9\u30af\u306e\u671f\u9650\u304c\u4e00\u9031\u9593\u4ee5\u5185\u3067\u3059\u201d for tasks due within 7 days  \n\nEach email is automatically sent to the responsible person based on the \u201c\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u201d field in the sheet.\n\n### 6. Complete processing  \nThe loop continues until all task rows have been checked.\n\n## How to set up\n- Import the workflow into your n8n instance  \n- Authenticate Google Sheets and select the task spreadsheet  \n- Authenticate Gmail as the sender account  \n- Confirm required columns: \u30bf\u30b9\u30af, \u671f\u9650, \u62c5\u5f53, \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9  \n- Adjust time, message text, or conditions based on your internal rules  \n\n## Requirements\n- Active n8n instance  \n- Google Sheets access with permission to read the task list  \n- Gmail OAuth connection for email sending  \n- Spreadsheet with at least: task name, deadline, responsible person, email address  \n\n## How to customize\nYou can expand and refine this workflow to match your company\u2019s processes:\n\n- Add Slack, Chatwork, or LINE notifications  \n- Add overdue task detection  \n- Add task priority sorting (High / Medium / Low)  \n- Log notifications back into the spreadsheet  \n- Send daily summary reports to managers  \n\nThis workflow provides a flexible foundation for building a complete automated task governance system.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "72348edd-acc7-4680-afa0-f146fc0cc26c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1440,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Fetch Tasks from Google Sheets\nLoads all task records from the Google Sheets task table, including task name, deadline, person in charge, and email address."
      },
      "typeVersion": 1
    },
    {
      "id": "a12c8197-4ca2-4dcc-8316-bbd025920234",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1104,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 352,
        "content": "## Loop Over Task Items\nIterates through each task row one by one so the workflow can evaluate deadlines individually."
      },
      "typeVersion": 1
    },
    {
      "id": "3e166602-8714-4e91-a9a4-fe992a6ce102",
      "name": "Check Due Today (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        -752,
        -240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['\u671f\u9650'] }}",
              "rightValue": "={{ (new Date(Date.now() + 9*60*60*1000).toISOString().split(\"T\")[0]) }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "86f8b164-298c-4eae-bda9-845260819e1d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -400
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 352,
        "content": "## Check Due Today (IF)\nChecks whether the task deadline matches today\u2019s date to identify tasks that are due today and require immediate notification."
      },
      "typeVersion": 1
    },
    {
      "id": "6ee54db5-53ae-4797-a2f9-5e2808789ae3",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -432
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 384,
        "content": "## Send Today Reminder (Gmail)\nSends an email to the responsible person informing them that their task is due today, including task details and assignee information."
      },
      "typeVersion": 1
    },
    {
      "id": "9df08c88-0741-4e23-9a71-d08f2a4c4e67",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -32
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Check Within 3 Days (IF)\nDetermines whether the task deadline falls within the next three days, allowing early reminders before the final due date."
      },
      "typeVersion": 1
    },
    {
      "id": "5300b4c9-d828-48bd-8bee-d9c1baa57a6b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        16
      ],
      "parameters": {
        "color": 7,
        "height": 368,
        "content": "## Send 3-Day Reminder (Gmail)\nSends an email to notify the responsible person that the task deadline is approaching within three days."
      },
      "typeVersion": 1
    },
    {
      "id": "f4cd32ed-a34b-4145-a736-7ddba10671e3",
      "name": "Send 3-Day Reminder (Gmail)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -80,
        208
      ],
      "parameters": {
        "sendTo": "={{ $json['\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9'] }}",
        "message": "={{ $json['\u30bf\u30b9\u30af'] }}\n{{ $json['\u671f\u9650'] }}\n{{ $json['\u62c5\u5f53'] }}",
        "options": {},
        "subject": "\u30bf\u30b9\u30af\u671f\u9650\u304c\u4e09\u65e5\u524d\u3068\u306a\u308a\u307e\u3057\u305f"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ab9f3b5f-596d-4b02-b4c4-deeda51c177e",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        176
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Check Within 7 Days (IF)\nChecks if the task deadline is within seven days from today to provide weekly reminder notifications."
      },
      "typeVersion": 1
    },
    {
      "id": "636a78d4-956c-4410-b83f-1b0f5ee7fe48",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        256
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Send 7-Day Reminder (Gmail)\nSends a weekly deadline reminder email to the assigned person for tasks that are due within the next seven days."
      },
      "typeVersion": 1
    },
    {
      "id": "a9fbc2c9-d40b-4ad5-8d1d-d53d55f5b6e6",
      "name": "Check Within 7 Days (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        176,
        368
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) }}"
            },
            {
              "id": "18ac4d56-da04-4e69-b159-fa5448cab10b",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) + 7*24*60*60*1000 }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6d1d23a2-cc0c-4be9-bb48-e7807556e397",
      "name": "Send 7-Day Reminder",
      "type": "n8n-nodes-base.gmail",
      "position": [
        464,
        448
      ],
      "parameters": {
        "sendTo": "={{ $json['\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9'] }}",
        "message": "={{ $json['\u30bf\u30b9\u30af'] }} {{ $json['\u671f\u9650'] }} {{ $json['\u62c5\u5f53'] }}",
        "options": {},
        "subject": "\u30bf\u30b9\u30af\u306e\u671f\u9650\u304c\u4e00\u9031\u9593\u4ee5\u5185\u3067\u3059"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "31ae3f1b-641b-415d-9b88-3058021bc327",
  "connections": {
    "3\u65e5\u4ee5\u5185": {
      "main": [
        [
          {
            "node": "Send 3-Day Reminder (Gmail)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Within 7 Days (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Check Due Today (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send 7-Day Reminder": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Due Today (IF)": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3\u65e5\u4ee5\u5185",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Within 7 Days (IF)": {
      "main": [
        [
          {
            "node": "Send 7-Day Reminder",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send 3-Day Reminder (Gmail)": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Task deadline management manually is inefficient and leads to missed deadlines—especially when teams rely on spreadsheets and individual reminders. This workflow automates the entire follow-up process by reading a centralized task sheet in Google Sheets every morning, checking…

Source: https://n8n.io/workflows/10825/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.

Gmail, Google Drive, Google Sheets +1
Email & Gmail

Looking for a way to track GitHub bounty issues automatically and get notified in real time? This GitHub Bounty Tracker workflow monitors repositories for issues labeled 💎 Bounty, logs them in Google

Google Sheets, HTTP Request, WhatsApp +1
Email & Gmail

This workflow automatically sends a beautifully designed HTML newsletter every Sunday at 8 AM, featuring products currently on sale from your Algolia-powered e-commerce store.

Google Sheets, HTTP Request, Gmail
Email & Gmail

This n8n template demonstrates how to build a Auto Lead Gen & Outreach System for Local Businesses specifically designed to help businesses that don’t have a website yet.

Google Sheets, HTTP Request, Google Drive +1
Email & Gmail

The workflow is triggered automatically every day at 12:00 PM using a Cron node.

RSS Feed Read, Google Sheets, Gmail +1