AutomationFlowsEmail & Gmail › Automated Email Follow-up System with Centralstationcrm, Gmail and Slack Alerts

Automated Email Follow-up System with Centralstationcrm, Gmail and Slack Alerts

ByCentralStationCRM @centralstationcrm on n8n.io

How it works time trigger using the cron format, every weekday at 5pm gets CentralStationCRM people updates of today checks for tag "Outreach" if true, sends message on gmail (predefine in node) waits 7 days, checks for answers alerts user if an answer is there if not, repeats…

Cron / scheduled trigger★★★★☆ complexity19 nodesGmailHTTP RequestSlack
Email & Gmail Trigger: Cron / scheduled Nodes: 19 Complexity: ★★★★☆ Added:

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

This workflow follows the Gmail → HTTP Request 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": "gsJVZsZPIb5Lngwn",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "A simple E-Mail automation for a tagged person in CentralStationCRM",
  "tags": [],
  "nodes": [
    {
      "id": "1162956d-a0c7-49f2-9251-2c0af29f17a2",
      "name": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        336,
        -336
      ],
      "parameters": {
        "sendTo": "={{ $json.person.emails[0].name }}",
        "message": "=Hi {{ $json.person.salutation }} {{ $json.person.name }},\n\n#INSERT YOUR TEXT#\n\nBest regards\n\n#SIGNATURE#\n",
        "options": {
          "appendAttribution": false
        },
        "subject": "=Unser Gespr\u00e4ch",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "010d381e-0a38-4feb-a5d7-5b39cb94678f",
      "name": "Cron: weekday 17:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -288,
        -320
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 17 * * 1-5"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b0b1b71d-8017-49a9-ae81-0226c0192401",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1104,
        -96
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {
          "removeOtherFields": false
        },
        "fieldsToCompare": "from.value[0].address"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "a92b9c44-3d4e-4fe6-ae18-0158970e4d9d",
      "name": "Remove Duplicates1",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1792,
        -80
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {
          "removeOtherFields": false
        },
        "fieldsToCompare": "from.value[0].address"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "a028cbd4-459f-4354-b82f-999022cac887",
      "name": "get CRM updates",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -96,
        -320
      ],
      "parameters": {
        "url": "https://api.centralstationcrm.net/api/people",
        "options": {},
        "jsonQuery": "={\"filter\" : {\"updated_at\": {\"larger_than\": \"{{ new Date().beginningOf('day') }}\"}},\n\"includes\" : \"tags addrs companies emails\"}",
        "sendQuery": true,
        "sendHeaders": true,
        "specifyQuery": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c7037d7a-62f1-4484-8c82-2e33b72b6b20",
      "name": "test for tag",
      "type": "n8n-nodes-base.if",
      "position": [
        96,
        -320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "4b075c94-c553-4dee-a4f0-d0f501982c53",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.person.tags }}",
              "rightValue": "\"Outreach\""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "923918e9-5165-41e2-8272-e44811f5f64d",
      "name": "answered?",
      "type": "n8n-nodes-base.if",
      "position": [
        848,
        -336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fde577e8-0f72-4ff5-a71e-f6cd4d512b95",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "1e2fe3c7-01dd-4c25-8897-b6b275b386bc",
      "name": "get last 7 days",
      "type": "n8n-nodes-base.gmail",
      "position": [
        672,
        -336
      ],
      "parameters": {
        "limit": 10,
        "simple": false,
        "filters": {
          "q": "=from:  {{ $('test for tag').item.json.person.emails[0].name }}",
          "receivedAfter": "={{ new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString() }}"
        },
        "options": {},
        "operation": "getAll"
      },
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "aed8bf29-5fb0-4730-9bea-b6193afcb7c5",
      "name": "alert user",
      "type": "n8n-nodes-base.slack",
      "position": [
        1280,
        -96
      ],
      "parameters": {
        "text": "=Hi #YOURNAME#,\n\nyour contact {{ $('test for tag').item.json.person.salutation }} {{ $('test for tag').item.json.person.name }} has responded.\n\nLook it up: \n\nhttps://mail.google.com/mail/u/0/#all/{{ $json.threadId }}",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U063KFE3KNW",
          "cachedResultName": "christian"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "executeOnce": false,
      "typeVersion": 2.3
    },
    {
      "id": "beab7970-9060-45c0-a30e-6befe4a4f6a2",
      "name": "send another message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1088,
        -320
      ],
      "parameters": {
        "sendTo": "={{ $('get CRM updates').item.json.person.emails[0].name }}",
        "message": "=Hi {{ $('get CRM updates').item.json.person.salutation }} {{ $json.person.name }},\n\n##CONTENT OF YOUR SECOND MESSAGE##\n\nBest regards\n\n##SIGNATURE##\n\nSIGNATUR",
        "options": {
          "senderName": "Christian Lipowsky",
          "appendAttribution": false
        },
        "subject": "=Unser Gespr\u00e4ch",
        "emailType": "text"
      },
      "typeVersion": 2.1
    },
    {
      "id": "bd869007-756b-4478-82d8-3fa512155642",
      "name": "get last 7 days again",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1344,
        -320
      ],
      "parameters": {
        "limit": 10,
        "simple": false,
        "filters": {
          "q": "=from:  {{ $('test for tag').item.json.person.emails[0].name }}",
          "receivedAfter": "={{ new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString() }}"
        },
        "options": {},
        "operation": "getAll"
      },
      "typeVersion": 2.1
    },
    {
      "id": "760630fa-970c-462b-bf30-210b0067417d",
      "name": "replied now?",
      "type": "n8n-nodes-base.if",
      "position": [
        1552,
        -320
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fde577e8-0f72-4ff5-a71e-f6cd4d512b95",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "aa362bbf-cd9c-4976-a01d-4cc71d7ad363",
      "name": "alert user1",
      "type": "n8n-nodes-base.slack",
      "position": [
        1952,
        -80
      ],
      "parameters": {
        "text": "=Hi #YOURNAME#,\n\nyour contact {{ $('test for tag').item.json.person.salutation }} {{ $('test for tag').item.json.person.name }} has responded.\n\nLook it up: \n\nhttps://mail.google.com/mail/u/0/#all/{{ $json.threadId }}",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": "U063KFE3KNW",
          "cachedResultName": "christian"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "executeOnce": false,
      "typeVersion": 2.3
    },
    {
      "id": "c5d41c88-d813-4212-9f54-33d34993dcf2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -1168
      ],
      "parameters": {
        "width": 528,
        "height": 592,
        "content": "![CSCRM Logo](https://s3.42he.com/cscrm-marketing-page-production/Logo_Central_Station_CRM_0dd02e23d2.jpeg)\n\n## A simple E-Mail automation for a tagged person in CentralStationCRM\n\n* time trigger using the cron format\n* gets CentralStationCRM people updates of today\n* checks for tag \"Outreach\"\n* if true, sends message on gmail (predefine in node)\n* waits 7 days, checks for answers\n* alerts user if an answer is there\n* repeats process\n\n*please test your workflow before using real contact data!! for testing, remove the wait nodes from the workflow by clicking on the trash can on the connecting lanes. then, reconnect the mail nodes to test. don't forget to reconnect the wait nodes after that, or you will flood your contact with mails.\n\nthis is meant to be an example to learn n8n, not to be a perfect execution of e-mail automation. Find ideas to make this workflow better in the project description.*"
      },
      "typeVersion": 1
    },
    {
      "id": "e12d61d0-1380-46e7-ad80-922384f330a5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -560
      ],
      "parameters": {
        "width": 528,
        "height": 128,
        "content": "## Tools in this workflow\n* [CentralStationCRM](https://centralstationcrm.de), your easy CRM software for small teams\n* GMail, e-mail service by Google\n* Slack, fast and easy messaging tool"
      },
      "typeVersion": 1
    },
    {
      "id": "56ca8d77-8820-4cab-9c0a-c5b5ca7845b4",
      "name": "wait 7 days",
      "type": "n8n-nodes-base.wait",
      "position": [
        512,
        -336
      ],
      "parameters": {
        "unit": "days",
        "amount": 7
      },
      "typeVersion": 1.1
    },
    {
      "id": "f573b22b-c275-4094-a9b3-27b0494153df",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        -1328
      ],
      "parameters": {
        "color": 7,
        "width": 420,
        "height": 900,
        "content": "## set up CentralStationCRM API Key\n* log in to CentralStationCRM\n* click on the gear wheel in the top right corner\n\n![Account settings](https://s3.42he.com/cscrm-marketing-page-production/CSCRM_Settings_edb73dede7.jpg)\n![API key](https://s3.42he.com/cscrm-marketing-page-production/CSCRM_Settings_API_cec6e99236.jpg)\n* click \"Create API key\" on the right-hand side\n* enter \"Description\" (e.g. n8n Test)\n* save\n* save the API key! The key cannot be called up again and is required for step 2."
      },
      "typeVersion": 1
    },
    {
      "id": "05885492-a884-4612-a328-f270e01a5aab",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        -1328
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 900,
        "content": "## set up CentralStationCRM n8n credentials\n![n8n menu](https://s3.42he.com/cscrm-marketing-page-production/n8n_menu_credential_c73f8802bb.png)\n![n8n cred type](https://s3.42he.com/cscrm-marketing-page-production/n8n_Header_Auth_f635973075.png)\n![n8n cscrm apikey](https://s3.42he.com/cscrm-marketing-page-production/n8n_cscrm_credential_9690dfc9a2.jpg)\nImportant:\n* select Header Auth as credential type\n* assign X-apikey as name\n* enter the CentralStationCRM API key under \"Value\""
      },
      "typeVersion": 1
    },
    {
      "id": "c43c8f76-e71f-4ee8-a0a1-4715b16b61c1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -1328
      ],
      "parameters": {
        "color": 7,
        "width": 868,
        "height": 892,
        "content": "## set up Slack nodes\n* set up Slack credentials\n![Credentials](https://s3.42he.com/cscrm-marketing-page-production/Slack_Credential_0cab4ad78e.png)\n![Credentials new](https://s3.42he.com/cscrm-marketing-page-production/Slack_Connect_Account_d1cc2420f3.jpg)\n* choose your credential in the two slack nodes\n* User (By Username): Enter @SlackUsername\n* Customize text under \"Message\" if necessary\n\n## set up Google nodes\n* set up Gmail credentials (Connect with Google)\n* choose your credentials in the four GMail nodes"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "85dd4cf8-4b8a-49df-89b7-f8566a255605",
  "connections": {
    "answered?": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "send another message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "alert user": {
      "main": [
        []
      ]
    },
    "wait 7 days": {
      "main": [
        [
          {
            "node": "get last 7 days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "replied now?": {
      "main": [
        [
          {
            "node": "Remove Duplicates1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "test for tag": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "wait 7 days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get CRM updates": {
      "main": [
        [
          {
            "node": "test for tag",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get last 7 days": {
      "main": [
        [
          {
            "node": "answered?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "alert user",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates1": {
      "main": [
        [
          {
            "node": "alert user1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron: weekday 17:00": {
      "main": [
        [
          {
            "node": "get CRM updates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send another message": {
      "main": [
        [
          {
            "node": "get last 7 days again",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get last 7 days again": {
      "main": [
        [
          {
            "node": "replied now?",
            "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

How it works time trigger using the cron format, every weekday at 5pm gets CentralStationCRM people updates of today checks for tag "Outreach" if true, sends message on gmail (predefine in node) waits 7 days, checks for answers alerts user if an answer is there if not, repeats…

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

How it works:

HTTP Request, Google Sheets, Agent +2
Email & Gmail

This workflow is an automated invoice payment tracking and reminder system for the Polish accounting service iFirma.pl. It monitors unpaid and overdue invoices, then automatically sends escalating rem

HTTP Request, Stop And Error, Slack +1
Email & Gmail

Instead of providing a routine check, it focuses on significant movements by: Sending a Slack alert only if a query crosses a defined movement threshold. Emailing a structured report with the Top 25 i

HTTP Request, Slack, Gmail
Email & Gmail

This workflow automates the complete end-to-end processing of daily revenue transactions for finance and accounting teams. It systematically retrieves, validates, and standardizes transaction data fro

HTTP Request, Gmail, Google Drive +2
Email & Gmail

Security teams often struggle to keep up with the volume of newly published CVEs and manually determine which vulnerabilities are actually relevant to their environment.

Gmail, Slack, HTTP Request