AutomationFlowsEmail & Gmail › Automated Hospital Outreach System: Send Personalized Emails via Google…

Automated Hospital Outreach System: Send Personalized Emails via Google…

Original n8n title: Automated Hospital Outreach System: Send Personalized Emails via Google Sheets & Gmail

ByHans Wilhelm Radam @hwmr on n8n.io

This workflow automates personalized email outreach to a list of hospitals. It uses a chat-based interface to accept a region and a list of hospital names, looks up their specific contact details from a structured Google Sheet, and sends a tailored email via Gmail.

Chat trigger trigger★★★★☆ complexityAI-powered11 nodesGoogle SheetsChat TriggerGmail
Email & Gmail Trigger: Chat trigger Nodes: 11 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chat Trigger → Gmail 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "96056900-7870-4d4e-91a6-2f64177c7109",
      "name": "MINDANAO",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -144,
        240
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1968569642,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit#gid=1968569642",
          "cachedResultName": "Mindanao"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1dNEKLvwSBgUvMJd1ekxz-R5_RN3ewlJTCOIHW4-bhIQ",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit?usp=drivesdk",
          "cachedResultName": "PH HOSPITALs"
        }
      },
      "credentials": {},
      "typeVersion": 4.7
    },
    {
      "id": "e78171fa-2463-478c-a9f4-03eebbda963d",
      "name": "VISAYAS FILES",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -144,
        48
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.hospital }}",
              "lookupColumn": "Hospital Name"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 822141156,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit#gid=822141156",
          "cachedResultName": "Visayas"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1dNEKLvwSBgUvMJd1ekxz-R5_RN3ewlJTCOIHW4-bhIQ",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit?usp=drivesdk",
          "cachedResultName": "PH HOSPITALs"
        }
      },
      "credentials": {},
      "typeVersion": 4.7
    },
    {
      "id": "d9705318-8318-46f9-bff3-2bdb2f0ca121",
      "name": "LUZON FILES",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -144,
        -144
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.hospital }}",
              "lookupColumn": "Hospital Name"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 678847961,
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit#gid=678847961",
          "cachedResultName": "Luzon"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1dNEKLvwSBgUvMJd1ekxz-R5_RN3ewlJTCOIHW4-bhIQ",
          "cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE-R5_RN3ewlJTCOIHW4-bhIQ/edit?usp=drivesdk",
          "cachedResultName": "PH HOSPITALs"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "b19960c1-5e4b-4a81-adc3-be75854ef747",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -1040,
        216
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "3821c377-95eb-42ca-8d97-e6c4d7379016",
      "name": "Hospital Parser",
      "type": "n8n-nodes-base.code",
      "position": [
        -816,
        216
      ],
      "parameters": {
        "jsCode": "const rawText = $input.first().json.chatInput;\nconst lines = rawText.split('\\n').filter(line => line.trim() !== '');\nconst region = lines[0] || 'Unknown';\nconst hospitals = lines.slice(1);\n\n// Return one item per hospital\nreturn hospitals.map(h => ({\n  json: {\n    region: region,\n    hospital: h\n  }\n}));\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f13b30e3-2df2-4dc9-86b3-e0bd7012ecc9",
      "name": "Batch Sender",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -592,
        216
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d3c1de1b-d9e8-467a-ab7a-e8f2478b6c9a",
      "name": "Region Switcher",
      "type": "n8n-nodes-base.switch",
      "position": [
        -368,
        32
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "89b82ead-f3b3-49dc-bdd8-f4099fdb59cf",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.region }}",
                    "rightValue": "=LUZON"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3930e266-a3c8-4c92-82f2-93d4cf6e840c",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.region }}",
                    "rightValue": "=VISAYAS"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8048a6d6-54c1-4fe9-80e6-c56cd5392c53",
                    "operator": {
                      "type": "string",
                      "operation": "contains"
                    },
                    "leftValue": "={{ $json.region }}",
                    "rightValue": "=MINDANAO"
                  }
                ]
              }
            }
          ]
        },
        "options": {
          "ignoreCase": true,
          "allMatchingOutputs": false
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "2119f413-e8cb-40a6-af1f-fddfd0b56700",
      "name": "Send Gmail Message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        80,
        136
      ],
      "parameters": {
        "sendTo": "={{ $json['Main Email'] }}",
        "message": "=<p>Dear {{ $json[\"Hospital Name\"] }},</p>\n\n<p>My name is {{ $json[\"Your Name\"] }}, a {{ $json[\"Your Credentials\"] }}.</p>\n\n<p>During a recent hospital admission, I personally experienced the challenges of paper-based real-time billing\u2014waiting for updated estimates, relying on manual printouts, and facing delays when clarity was needed most. This inspired me to build a working demo system tailored for hospitals like {{ $json[\"Sample Hospitals\"] }}.</p>\n\n<p><b>Here\u2019s a quick overview of what I built:</b></p>\n\n<p>\ud83d\udcf9 Video 1: {{ $json[\"Video Link 1\"] }}</p>\n<p>\ud83d\udcf9 Video 2: {{ $json[\"Video Link 2\"] }}</p>\n<p>\ud83d\udcf9 Video 3: {{ $json[\"Video Link 3\"] }}</p>\n\n<p>\u2705 Patients can receive secure login credentials by email and check their real-time running bill anytime.<br>\n\u2705 The hospital can save costs by reducing paper use while improving transparency.<br>\n\u2705 Admin staff can manage patients and services from a centralized panel.</p>\n\n<p>Would you be available this week for a quick discussion?</p>\n\n<p>--<br>\nBest regards,<br>\n{{ $json[\"Your Name\"] }}<br>\n{{ $json[\"Your Contact\"] }}</p>\n",
        "options": {},
        "subject": "=Letter of Intent: {{ $json['Hospital Name'] }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "e93525d1-ab66-47f7-ab98-77594a58b622",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1416,
        -368
      ],
      "parameters": {
        "width": 1728,
        "height": 768,
        "content": "### **For the MAIN YELLOW Sticky Note (Place at the top of your workflow):**\n**Hospital Outreach Automation**\nThis workflow automates personalized email outreach to hospitals. \nSend a chat message where the first line is the region (LUZON, VISAYAS, MINDANAO) and each following line is a hospital name. \nThe workflow will look up each hospital's email from a Google Sheet and send a personalized message via Gmail."
      },
      "typeVersion": 1
    },
    {
      "id": "6545ccf7-b4a2-4f59-829a-d637479776ff",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1392,
        -176
      ],
      "parameters": {
        "color": 4,
        "width": 464,
        "height": 304,
        "content": "**SETUP REQUIRED:**\n1.  **Set up credentials** for Google Sheets and Gmail.\n2.  **Replace the Google Sheet ID** in the 'Set Configuration' node with your own. Use our template structure.\n3.  **Customize the email template** in the 'Send Gmail Message' node to match your message.\n\n**How to use:**\n1.  Activate the workflow.\n2.  Send a chat input in the following format:\n    `LUZON`\n    `St. Luke's Medical Center`\n    `Makati Medical Center`\n    `Philippine General Hospital`\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "8652c245-c942-436a-b037-051efecba80a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -176
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 80,
        "content": "Youtube Tutorial: https://www.youtube.com/embed/5u9W-Iegq6k"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "MINDANAO": {
      "main": [
        [
          {
            "node": "Send Gmail Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LUZON FILES": {
      "main": [
        [
          {
            "node": "Send Gmail Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Batch Sender": {
      "main": [
        [],
        [
          {
            "node": "Region Switcher",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "VISAYAS FILES": {
      "main": [
        [
          {
            "node": "Send Gmail Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Hospital Parser": {
      "main": [
        [
          {
            "node": "Batch Sender",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Region Switcher": {
      "main": [
        [
          {
            "node": "LUZON FILES",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "VISAYAS FILES",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "MINDANAO",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Gmail Message": {
      "main": [
        [
          {
            "node": "Batch Sender",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Hospital Parser",
            "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

This workflow automates personalized email outreach to a list of hospitals. It uses a chat-based interface to accept a region and a list of hospital names, looks up their specific contact details from a structured Google Sheet, and sends a tailored email via Gmail.

Source: https://n8n.io/workflows/8797/ — 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

"I used to spend hours every week just copy-pasting product descriptions to find the right tariff codes for our international shipments. It was tedious and prone to errors." - Accounting specialist.

Chat Trigger, HTTP Request, Google Sheets +1
Email & Gmail

📄 Documentation: Notion Guide

Anthropic, Gmail, Google Sheets
Email & Gmail

This workflow is a powerful, two-phase system designed to automate the entire passive candidate sourcing and engagement cycle.

HTTP Request, Google Sheets, Gmail
Email & Gmail

Every weekday morning, the workflow reads your prospect list from Google Sheets and cross-checks it against a send log — anyone already emailed is automatically skipped Each new contact is assigned on

Google Sheets, Gmail
Email & Gmail

How It Works Starts with a Manual Trigger Reads lead list from Google Sheet Filter rows where email wasn’t sent Generate personalized email body (AI) Generate email subject line (AI) Merge AI outputs

Google Sheets, HTTP Request, Gmail