AutomationFlowsData & Sheets › Send Multi-stage Customer Project Emails From Google Sheets with Zoho Zeptomail

Send Multi-stage Customer Project Emails From Google Sheets with Zoho Zeptomail

ByPanth1823 @panth1823 on n8n.io

Keep your clients informed at every stage of their project without lifting a finger. This workflow runs daily from Google Sheets and automatically sends four timed emails a Day 3 progress update, a Day 5 near-completion nudge, a feedback request on project completion, and a…

Cron / scheduled trigger★★★★☆ complexity28 nodesGoogle SheetsN8N Nodes Zohozeptomail
Data & Sheets Trigger: Cron / scheduled Nodes: 28 Complexity: ★★★★☆ Added:

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

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
{
  "nodes": [
    {
      "id": "567e86c9-178d-4d0b-8a3c-b7108d4ee2e8",
      "name": "Main Sticky",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        16
      ],
      "parameters": {
        "color": 2,
        "width": 500,
        "height": 680,
        "content": "## Automate Customer Project Emails\nStreamline client updates and feedback requests with automated multi-stage email workflows.\n\n\n### How it works\n1. Fetch daily customer data from Google Sheets.\n2. Filter for active clients and incomplete tasks.\n3. Calculate target dates for T+3 and T+5 intervals.\n4. Trigger personalized emails based on project progress.\n5. Log sent status back to Google Sheets.\n\n\n### Setup\n1. Connect Google Sheets and Zoho ZeptoMail credentials.\n2. Configure your Resource IDs for the sheets.\n3. Add your sender email and links in the email nodes.\n4. Install required community nodes (see Important section).\n\n\n### Customization\nAdjust the 'Calculate Date Variables' node to change the delay intervals. Consolidate user-specific values in a Set node at the workflow start for easy configuration.\n\n\n### Important\n This workflow requires a self-hosted n8n instance. Community nodes used: n8n-nodes-zohozeptomail.zohoZeptomail"
      },
      "typeVersion": 1
    },
    {
      "id": "90ad5769-3168-497c-bdf3-1bdd2e746bcc",
      "name": "Daily Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Runs daily at 9:00 AM IST.",
      "position": [
        320,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7f5e82a0-3873-4bab-81bb-12c688be3f62",
      "name": "Read All Customer Rows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        544,
        160
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "9dfc9de1-b7b8-4ba4-ab1d-6c8aa0412c44",
      "name": "Filter Empty Rows",
      "type": "n8n-nodes-base.filter",
      "notes": "Skips blank rows. Only rows with a name + email pass through.",
      "position": [
        976,
        160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "filter-empty-email",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Email'] }}",
              "rightValue": ""
            },
            {
              "id": "filter-empty-name",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Customer Name'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9a4d45f2-ed9c-42fc-a62c-74733e4d7fde",
      "name": "Calculate Date Variables",
      "type": "n8n-nodes-base.set",
      "notes": "FIX: t5_window_date is now 10 days (was 9) to catch boundary customers.",
      "position": [
        1200,
        160
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "assign-today",
              "name": "today",
              "type": "string",
              "value": "={{ $now.toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-t3-target",
              "name": "t3_target_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 3 }).toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-t3-window",
              "name": "t3_window_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 7 }).toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-t5-target",
              "name": "t5_target_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 5 }).toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-t5-window",
              "name": "t5_window_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 10 }).toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-upsell-target",
              "name": "upsell_target_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 3 }).toFormat('yyyy-MM-dd') }}"
            },
            {
              "id": "assign-upsell-window",
              "name": "upsell_window_date",
              "type": "string",
              "value": "={{ $now.minus({ days: 7 }).toFormat('yyyy-MM-dd') }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "93611c96-4510-47ff-ae6a-8d469f1bfb33",
      "name": "Is T+3 Email Due?",
      "type": "n8n-nodes-base.if",
      "position": [
        1696,
        160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-t3-date-after",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json['Date Added'] }}",
              "rightValue": "={{ $json.t3_window_date }}"
            },
            {
              "id": "cond-t3-date-before",
              "operator": {
                "type": "dateTime",
                "operation": "beforeOrEquals"
              },
              "leftValue": "={{ $json['Date Added'] }}",
              "rightValue": "={{ $json.t3_target_date }}"
            },
            {
              "id": "cond-t3-not-sent",
              "operator": {
                "type": "string",
                "operation": "empty"
              },
              "leftValue": "={{ $json['T3_Email_Sent'] }}"
            },
            {
              "id": "cond-t3-not-completed",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "Completed"
            },
            {
              "id": "cond-t3-not-alldone",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "All Done"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "7904e8f0-8881-40b6-b73e-a9d83a69fc12",
      "name": "Loop T+3 (1 at a time)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1920,
        160
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "f7931646-32f9-4c7f-bfdc-a72dd32132d9",
      "name": "Wait (T+3)",
      "type": "n8n-nodes-base.wait",
      "position": [
        2144,
        96
      ],
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "c1b03654-c52a-4f04-82a2-e8dedfff7e56",
      "name": "Mark T+3 Email Sent",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2592,
        160
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Loop T+3 (1 at a time)').item.json.Email }}",
            "Status": "={{ $('Loop T+3 (1 at a time)').item.json.Status }}",
            "Date Added": "={{ $('Loop T+3 (1 at a time)').item.json['Date Added'] }}",
            "row_number": "={{ $('Loop T+3 (1 at a time)').item.json.row_number }}",
            "Project Type": "={{ $('Loop T+3 (1 at a time)').item.json['Project Type'] }}",
            "Customer Name": "={{ $('Loop T+3 (1 at a time)').item.json['Customer Name'] }}",
            "T3_Email_Sent": "YES",
            "T5_Email_Sent": "={{ $('Loop T+3 (1 at a time)').item.json.T5_Email_Sent }}",
            "original_subject": "={{ 'Update on Your ' + $('Loop T+3 (1 at a time)').item.json['Project Type'] + ' Project - We\\'re Making Progress!' }}",
            "Upsell_Email_Sent": "={{ $('Loop T+3 (1 at a time)').item.json.Upsell_Email_Sent }}",
            "Feedback_Email_Date": "={{ $('Loop T+3 (1 at a time)').item.json.Feedback_Email_Date }}",
            "Feedback_Email_Sent": "={{ $('Loop T+3 (1 at a time)').item.json.Feedback_Email_Sent }}"
          },
          "schema": [
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Customer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Project Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date Added",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date Added",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T3_Email_Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "T3_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T5_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T5_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Upsell_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Upsell_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "original_subject",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "original_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "d81b5ef2-c222-466c-8cd1-60684f63cd47",
      "name": "Is T+5 Email Due?",
      "type": "n8n-nodes-base.if",
      "notes": "FIX: Requires T3_Email_Sent=YES so T+5 never sends before or at the same time as T+3.",
      "position": [
        1696,
        448
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-t5-date-after",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json['Date Added'] }}",
              "rightValue": "={{ $json.t5_window_date }}"
            },
            {
              "id": "cond-t5-date-before",
              "operator": {
                "type": "dateTime",
                "operation": "beforeOrEquals"
              },
              "leftValue": "={{ $json['Date Added'] }}",
              "rightValue": "={{ $json.t5_target_date }}"
            },
            {
              "id": "cond-t5-not-sent",
              "operator": {
                "type": "string",
                "operation": "empty"
              },
              "leftValue": "={{ $json['T5_Email_Sent'] }}"
            },
            {
              "id": "cond-t5-not-completed",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "Completed"
            },
            {
              "id": "cond-t5-not-alldone",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "All Done"
            },
            {
              "id": "cond-t5-t3-sent-first",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['T3_Email_Sent'] }}",
              "rightValue": "YES"
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "204bea9c-7904-45ab-85b3-9ddeb3cf5fc2",
      "name": "Loop T+5 (1 at a time)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1920,
        448
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "932d3bff-987a-4cd9-9d67-074cd54442d3",
      "name": "Wait (T+5)",
      "type": "n8n-nodes-base.wait",
      "position": [
        2144,
        384
      ],
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "71439d0b-2284-4d6f-b468-6988d97c4c1b",
      "name": "Mark T+5 Email Sent",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2592,
        448
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Loop T+5 (1 at a time)').item.json.Email }}",
            "Status": "={{ $('Loop T+5 (1 at a time)').item.json.Status }}",
            "Date Added": "={{ $('Loop T+5 (1 at a time)').item.json['Date Added'] }}",
            "row_number": "={{ $('Loop T+5 (1 at a time)').item.json.row_number }}",
            "Project Type": "={{ $('Loop T+5 (1 at a time)').item.json['Project Type'] }}",
            "Customer Name": "={{ $('Loop T+5 (1 at a time)').item.json['Customer Name'] }}",
            "T3_Email_Sent": "={{ $('Loop T+5 (1 at a time)').item.json.T3_Email_Sent }}",
            "T5_Email_Sent": "YES",
            "original_subject": "={{ $('Loop T+5 (1 at a time)').item.json.original_subject }}",
            "Upsell_Email_Sent": "={{ $('Loop T+5 (1 at a time)').item.json.Upsell_Email_Sent }}",
            "Feedback_Email_Date": "={{ $('Loop T+5 (1 at a time)').item.json.Feedback_Email_Date }}",
            "Feedback_Email_Sent": "={{ $('Loop T+5 (1 at a time)').item.json.Feedback_Email_Sent }}"
          },
          "schema": [
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Customer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Project Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date Added",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date Added",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T3_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T3_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T5_Email_Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "T5_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Upsell_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Upsell_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "original_subject",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "original_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "6c42845e-6e1e-4044-a0a4-6cead3db206a",
      "name": "Is Feedback Email Due?",
      "type": "n8n-nodes-base.if",
      "notes": "FIX: Added All Done check so completed+upselled customers don't get feedback emails again.",
      "position": [
        1696,
        736
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-completed",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "In Progress"
            },
            {
              "id": "cond-not-alldone",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "All Done"
            },
            {
              "id": "cond-feedback-not-sent",
              "operator": {
                "type": "string",
                "operation": "empty"
              },
              "leftValue": "={{ $json['Feedback_Email_Sent'] }}"
            },
            {
              "id": "26113871-d5ad-44ab-93ff-5bff9d148560",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['T3_Email_Sent'] }}",
              "rightValue": "YES"
            },
            {
              "id": "38ce570c-c705-4bcc-913b-0c26f2934283",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['T5_Email_Sent'] }}",
              "rightValue": "YES"
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "b7a2e7fb-ddef-4f21-a763-f82b9faeacbc",
      "name": "Loop Feedback (1 at a time)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1920,
        736
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "ca7d2688-9b64-47c6-9cfd-bbe110949727",
      "name": "Wait (Feedback)",
      "type": "n8n-nodes-base.wait",
      "position": [
        2144,
        672
      ],
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "8b8c18ac-6ac9-4264-bd13-d7b4176448d0",
      "name": "Mark Feedback Email Sent",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2592,
        736
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Loop Feedback (1 at a time)').item.json.Email }}",
            "Status": "={{ $('Loop Feedback (1 at a time)').item.json.Status }}",
            "Date Added": "={{ $('Loop Feedback (1 at a time)').item.json['Date Added'] }}",
            "row_number": "={{ $('Loop Feedback (1 at a time)').item.json.row_number }}",
            "Project Type": "={{ $('Loop Feedback (1 at a time)').item.json['Project Type'] }}",
            "Customer Name": "={{ $('Loop Feedback (1 at a time)').item.json['Customer Name'] }}",
            "T3_Email_Sent": "={{ $('Loop Feedback (1 at a time)').item.json.T3_Email_Sent }}",
            "T5_Email_Sent": "={{ $('Loop Feedback (1 at a time)').item.json.T5_Email_Sent }}",
            "original_subject": "={{ $('Loop Feedback (1 at a time)').item.json.original_subject }}",
            "Upsell_Email_Sent": "={{ $('Loop Feedback (1 at a time)').item.json.Upsell_Email_Sent }}",
            "Feedback_Email_Date": "={{ $now.toFormat('yyyy-MM-dd') }}",
            "Feedback_Email_Sent": "YES"
          },
          "schema": [
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Customer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Project Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date Added",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date Added",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T3_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T3_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T5_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T5_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Feedback_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Feedback_Email_Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Upsell_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Upsell_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "original_subject",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "original_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "cdd0ad2f-45c6-411e-af65-dca8519aa80c",
      "name": "Is Upsell Email Due?",
      "type": "n8n-nodes-base.if",
      "position": [
        1696,
        1024
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "cond-upsell-not-inprogress",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "In Progress"
            },
            {
              "id": "cond-upsell-not-alldone",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Status'] }}",
              "rightValue": "All Done"
            },
            {
              "id": "cond-upsell-feedback-done",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['Feedback_Email_Sent'] }}",
              "rightValue": "YES"
            },
            {
              "id": "cond-upsell-date-after",
              "operator": {
                "type": "dateTime",
                "operation": "after"
              },
              "leftValue": "={{ $json['Feedback_Email_Date'] }}",
              "rightValue": "={{ $json.upsell_window_date }}"
            },
            {
              "id": "cond-upsell-date-before",
              "operator": {
                "type": "dateTime",
                "operation": "beforeOrEquals"
              },
              "leftValue": "={{ $json['Feedback_Email_Date'] }}",
              "rightValue": "={{ $json.upsell_target_date }}"
            },
            {
              "id": "cond-upsell-not-sent",
              "operator": {
                "type": "string",
                "operation": "empty"
              },
              "leftValue": "={{ $json['Upsell_Email_Sent'] }}"
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d9a527ad-9546-4a8e-ad1a-5081e7b7fda2",
      "name": "Loop Upsell (1 at a time)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1920,
        1024
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "16925182-8733-4b38-9cbe-0fa3a9415fd3",
      "name": "Wait (Upsell)",
      "type": "n8n-nodes-base.wait",
      "position": [
        2144,
        960
      ],
      "parameters": {
        "amount": 20
      },
      "typeVersion": 1.1
    },
    {
      "id": "06182ce1-dcf8-49ba-a0ed-233e13453acd",
      "name": "Mark Upsell Email Sent",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Sets Status = All Done after upsell -- stops all future checks for this customer.",
      "position": [
        2592,
        1024
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('Loop Upsell (1 at a time)').item.json.Email }}",
            "Status": "All Done",
            "Date Added": "={{ $('Loop Upsell (1 at a time)').item.json['Date Added'] }}",
            "row_number": "={{ $('Loop Upsell (1 at a time)').item.json.row_number }}",
            "Project Type": "={{ $('Loop Upsell (1 at a time)').item.json['Project Type'] }}",
            "Customer Name": "={{ $('Loop Upsell (1 at a time)').item.json['Customer Name'] }}",
            "T3_Email_Sent": "={{ $('Loop Upsell (1 at a time)').item.json.T3_Email_Sent }}",
            "T5_Email_Sent": "={{ $('Loop Upsell (1 at a time)').item.json.T5_Email_Sent }}",
            "original_subject": "={{ $('Loop Upsell (1 at a time)').item.json.original_subject }}",
            "Upsell_Email_Sent": "YES",
            "Feedback_Email_Date": "={{ $('Loop Upsell (1 at a time)').item.json.Feedback_Email_Date }}",
            "Feedback_Email_Sent": "={{ $('Loop Upsell (1 at a time)').item.json.Feedback_Email_Sent }}"
          },
          "schema": [
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Customer Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Customer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Project Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date Added",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date Added",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T3_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T3_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "T5_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "T5_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback_Email_Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback_Email_Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Upsell_Email_Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Upsell_Email_Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "original_subject",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "original_subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_RESOURCE_ID_HERE"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "b5837497-8ce3-4ef6-89b9-d3413fe55277",
      "name": "Send T+3 Update Email",
      "type": "n8n-nodes-zohozeptomail.zohoZeptomail",
      "position": [
        2368,
        96
      ],
      "parameters": {
        "subject": "={{ 'Update on Your ' + $json['Project Type'] + ' Project - We\\'re Making Progress!' }}",
        "htmlbody": "=<html><body style=\"font-family:Arial,sans-serif;max-width:600px;margin:auto;padding:20px;color:#333\">\n<h2 style=\"color:#2c5f9e\">Hi {{ $json['Customer Name'] }},</h2>\n<p>We hope you're doing well! Here's a quick update on your <strong>{{ $json['Project Type'] }}</strong> project.</p>\n<p> <strong>Day 3 Update:</strong> Our team is deep in the research and drafting phase -- making sure every detail reflects your unique skills and experience.</p>\n<ul>\n<li>Reviewing your background and goals</li>\n<li>Crafting compelling, ATS-optimized content</li>\n<li>Aligning your profile with industry standards</li>\n</ul>\n<p>If you have any additional info to share (achievements, certifications etc.), feel free to reply to this email!</p>\n<p>Estimated completion is just around the corner. Stay tuned!</p>\n<br/><p>Warm regards,</p><p><strong>The [Your Company] Team</strong></p>\n<hr style=\"border:none;border-top:1px solid #eee\"/>\n<p style=\"font-size:11px;color:#999\">You're receiving this because you have an active project with us.</p>\n</body></html>",
        "mailagent": "555046c28339d27e",
        "toaddress": "={{ $json['Email'] }}",
        "fromaddress": {
          "name": "Think Sage",
          "address": "YOUR_EMAIL_HERE"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f118f83b-16cc-45dc-991d-79ded16fc042",
      "name": "Send T+5 Update Email",
      "type": "n8n-nodes-zohozeptomail.zohoZeptomail",
      "position": [
        2368,
        384
      ],
      "parameters": {
        "subject": "={{ $json['original_subject'] }}",
        "htmlbody": "=<html><body style=\"font-family:Arial,sans-serif;max-width:600px;margin:auto;padding:20px;color:#333\">\n<h2 style=\"color:#2c5f9e\">Hi {{ $json['Customer Name'] }},</h2>\n<p>Great news -- your <strong>{{ $json['Project Type'] }}</strong> project is well underway and results are taking shape!</p>\n<p><strong>Day 5 Update:</strong> We're now in the final refinement stage -- polishing the language, optimizing for recruiter attention, and tailoring everything to your goals.</p>\n<ul>\n<li> Draft content completed</li>\n<li>ATS keyword optimization done</li>\n<li> Final quality review in progress</li>\n</ul>\n<p>You'll receive the final deliverable very shortly. We can't wait for you to see it!</p>\n<p>If there's anything specific you'd like adjusted, just reply to this email.</p>\n<br/><p>Best,</p><p><strong>The [Your Company] Team</strong></p>\n<hr style=\"border:none;border-top:1px solid #eee\"/>\n<p style=\"font-size:11px;color:#999\">You're receiving this because you have an active project with us.</p>\n</body></html>",
        "mailagent": "555046c28339d27e",
        "toaddress": "={{ $json['Email'] }}",
        "fromaddress": {
          "name": "Think Sage",
          "address": "YOUR_EMAIL_HERE"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cd5c3719-d6f2-4f00-bc11-a03d656f69eb",
      "name": "Send Feedback Request Email",
      "type": "n8n-nodes-zohozeptomail.zohoZeptomail",
      "position": [
        2368,
        672
      ],
      "parameters": {
        "subject": "={{ $json['original_subject'] }}",
        "htmlbody": "=<html><body style=\"font-family:Arial,sans-serif;max-width:600px;margin:auto;padding:20px;color:#333\">\n<h2 style=\"color:#27ae60\">Hi {{ $json['Customer Name'] }}, your project is complete!</h2>\n<p>We're thrilled to let you know that your <strong>{{ $json['Project Type'] }}</strong> project has been finalized and delivered. It was a pleasure working with you!</p>\n<p>We'd love to hear your thoughts -- it only takes 1 minute and helps us serve our clients better.</p>\n<div style=\"text-align:center;margin:30px 0\">\n<a href=\"YOUR_FEEDBACK_FORM_LINK\" style=\"background-color:#27ae60;color:white;padding:14px 28px;text-decoration:none;border-radius:6px;font-size:16px;font-weight:bold\">Leave Your Feedback</a>\n</div>\n<p>Thank you for trusting us with your career journey! </p>\n<br/><p>With gratitude,</p><p><strong>The [Your Company] Team</strong></p>\n<hr style=\"border:none;border-top:1px solid #eee\"/>\n<p style=\"font-size:11px;color:#999\">Reply to this email if you have any questions about your deliverable.</p>\n</body></html>",
        "mailagent": "555046c28339d27e",
        "toaddress": "={{ $json['Email'] }}",
        "fromaddress": {
          "name": "Think Sage",
          "address": "YOUR_EMAIL_HERE"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "257a477c-f79b-4907-830c-b00c123a6fc0",
      "name": "Send Upsell Email1",
      "type": "n8n-nodes-zohozeptomail.zohoZeptomail",
      "position": [
        2368,
        960
      ],
      "parameters": {
        "subject": "={{ $json['original_subject'] }}",
        "htmlbody": "=<html><body style=\"font-family:Arial,sans-serif;max-width:600px;margin:auto;padding:20px;color:#333\">\n<h2 style=\"color:#8e44ad\">Hi {{ $json['Customer Name'] }},</h2>\n<p>It's been a few days since we wrapped up your <strong>{{ $json['Project Type'] }}</strong> project -- we hope it's already opening doors for you!</p>\n<p>We wanted to share some premium services that could take your career even further:</p>\n<table style=\"width:100%;border-collapse:collapse;margin:20px 0\">\n<tr style=\"background-color:#f4f0ff\"><td style=\"padding:12px;border:1px solid #ddd;font-weight:bold\">LinkedIn Optimization</td><td style=\"padding:12px;border:1px solid #ddd\">3x more recruiter views</td></tr>\n<tr><td style=\"padding:12px;border:1px solid #ddd;font-weight:bold\">Cover Letter Bundle</td><td style=\"padding:12px;border:1px solid #ddd\">Custom letters for your top 5 roles</td></tr>\n<tr style=\"background-color:#f4f0ff\"><td style=\"padding:12px;border:1px solid #ddd;font-weight:bold\">Interview Prep Session</td><td style=\"padding:12px;border:1px solid #ddd\">1-on-1 mock interview coaching</td></tr>\n<tr><td style=\"padding:12px;border:1px solid #ddd;font-weight:bold\">Job Application Strategy</td><td style=\"padding:12px;border:1px solid #ddd\">Customized job hunt roadmap</td></tr>\n</table>\n<p>As a returning client, use code <strong>RETURN15</strong> for an exclusive <strong>15% discount</strong>. Offer valid for 7 days.</p>\n<div style=\"text-align:center;margin:30px 0\">\n<a href=\"YOUR_BOOKING_LINK\" style=\"background-color:#8e44ad;color:white;padding:14px 28px;text-decoration:none;border-radius:6px;font-size:16px;font-weight:bold\">Explore Premium Services</a>\n</div>\n<br/><p>Cheering you on,</p><p><strong>The [Your Company] Team</strong></p>\n<hr style=\"border:none;border-top:1px solid #eee\"/>\n<p style=\"font-size:11px;color:#999\">To unsubscribe, reply with 'Unsubscribe'.</p>\n</body></html>",
        "mailagent": "555046c28339d27e",
        "toaddress": "={{ $json['Email'] }}",
        "fromaddress": {
          "name": "Think Sage",
          "address": "YOUR_EMAIL_HERE"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1a53d085-8154-46db-906e-5261bdd41157",
      "name": "Section 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 600,
        "height": 328,
        "content": "## 1. Trigger & Data Retrieval\nPolls the sheet daily and filters out blank rows."
      },
      "typeVersion": 1
    },
    {
      "id": "f042d97f-261f-4f66-bf87-ec5232f6512a",
      "name": "Section 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 600,
        "height": 328,
        "content": "## 2. Logic & Scheduling\nCalculates dynamic dates and checks email due status."
      },
      "typeVersion": 1
    },
    {
      "id": "6df23a32-7743-4dcf-9200-0c2756395ca1",
      "name": "Section 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        16
      ],
      "parameters": {
        "color": 7,
        "width": 1260,
        "height": 1224,
        "content": "## 3. Communication & Logging\nSends emails via ZeptoMail and updates Google Sheets."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Wait (T+3)": {
      "main": [
        [
          {
            "node": "Send T+3 Update Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (T+5)": {
      "main": [
        [
          {
            "node": "Send T+5 Update Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (Upsell)": {
      "main": [
        [
          {
            "node": "Send Upsell Email1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (Feedback)": {
      "main": [
        [
          {
            "node": "Send Feedback Request Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Empty Rows": {
      "main": [
        [
          {
            "node": "Calculate Date Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is T+3 Email Due?": {
      "main": [
        [
          {
            "node": "Loop T+3 (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is T+5 Email Due?": {
      "main": [
        [
          {
            "node": "Loop T+5 (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Upsell Email1": {
      "main": [
        [
          {
            "node": "Mark Upsell Email Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark T+3 Email Sent": {
      "main": [
        [
          {
            "node": "Loop T+3 (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark T+5 Email Sent": {
      "main": [
        [
          {
            "node": "Loop T+5 (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Upsell Email Due?": {
      "main": [
        [
          {
            "node": "Loop Upsell (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send T+3 Update Email": {
      "main": [
        [
          {
            "node": "Mark T+3 Email Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send T+5 Update Email": {
      "main": [
        [
          {
            "node": "Mark T+5 Email Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Schedule Trigger": {
      "main": [
        [
          {
            "node": "Read All Customer Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Feedback Email Due?": {
      "main": [
        [
          {
            "node": "Loop Feedback (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop T+3 (1 at a time)": {
      "main": [
        [],
        [
          {
            "node": "Wait (T+3)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop T+5 (1 at a time)": {
      "main": [
        [],
        [
          {
            "node": "Wait (T+5)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Upsell Email Sent": {
      "main": [
        [
          {
            "node": "Loop Upsell (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read All Customer Rows": {
      "main": [
        [
          {
            "node": "Filter Empty Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Date Variables": {
      "main": [
        [
          {
            "node": "Is T+3 Email Due?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Is T+5 Email Due?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Is Feedback Email Due?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Is Upsell Email Due?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mark Feedback Email Sent": {
      "main": [
        [
          {
            "node": "Loop Feedback (1 at a time)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Upsell (1 at a time)": {
      "main": [
        [],
        [
          {
            "node": "Wait (Upsell)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Feedback (1 at a time)": {
      "main": [
        [],
        [
          {
            "node": "Wait (Feedback)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Feedback Request Email": {
      "main": [
        [
          {
            "node": "Mark Feedback Email Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

Keep your clients informed at every stage of their project without lifting a finger. This workflow runs daily from Google Sheets and automatically sends four timed emails a Day 3 progress update, a Day 5 near-completion nudge, a feedback request on project completion, and a…

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

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Stop losing leads to manual follow-up fatigue. This workflow runs daily, checks your Google Sheets lead tracker, and automatically sends the right follow-up email at the right time — personalized by p

Google Sheets, N8N Nodes Zohozeptomail
Data & Sheets

This workflow automates video distribution to 9 social platforms simultaneously using Blotato's API. It includes both a scheduled publisher (checks Google Sheets for videos marked "Ready") and a subwo

Google Sheets, HTTP Request, Form Trigger +2
Data & Sheets

YogiAI. Uses googleSheets, googleSheetsTool, httpRequest, stopAndError. Scheduled trigger; 61 nodes.

Google Sheets, Google Sheets Tool, HTTP Request +1
Data & Sheets

This workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends reminder notifications to the relev

Google Calendar, Google Sheets, HTTP Request +1
Data & Sheets

Useful if a team is working within a single instance and you want to be notified of what workflows have changed since you last visited them. Another use-case might be monitoring your managed instances

Google Sheets, Execute Workflow Trigger, n8n