8
n8n 中文网amn8n.com

使用GoHighLevel、Gmail、Slack和Sheets的每周客户互动自动化

高级

这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 23 个节点。主要使用 If, Code, Gmail, Slack, SplitOut 等节点。 每周客户再互动系统(GoHighLevel、Gmail、Sheets和Slack)

前置要求
  • Google 账号和 Gmail API 凭证
  • Slack Bot Token 或 Webhook URL
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "W1BO1coWaTTtuCrC",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 GoHighLevel、Gmail、Slack 和 Sheets 的每周客户互动自动化",
  "tags": [],
  "nodes": [
    {
      "id": "5152120f-eb1c-4741-a0c4-c6073fb3403c",
      "name": "工作流概览",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        -256
      ],
      "parameters": {
        "color": 4,
        "width": 387,
        "height": 609,
        "content": "## 📋 每周客户互动动态"
      },
      "typeVersion": 1
    },
    {
      "id": "adf66a9e-7cb9-4fef-b345-4c13abcbaa9e",
      "name": "注意:计划触发器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -400
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 380,
        "content": "## ⏰ 计划触发器节点"
      },
      "typeVersion": 1
    },
    {
      "id": "7c5340fa-e80a-4db7-953e-8b3b31b2536f",
      "name": "注意:HighLevel 获取",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -384
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 380,
        "content": "## 🔗 HighLevel CRM 节点"
      },
      "typeVersion": 1
    },
    {
      "id": "6037ea36-f052-483b-b6e9-ec4e8399c64c",
      "name": "注意:筛选逻辑",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -416
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 380,
        "content": "## 🔍 筛选非活跃联系人"
      },
      "typeVersion": 1
    },
    {
      "id": "94f2604f-359d-4b62-9d12-3c11cfe3dfe6",
      "name": "注意:拆分数组",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        320
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 572,
        "content": "## 📤 拆分输出节点"
      },
      "typeVersion": 1
    },
    {
      "id": "f09969ea-72a8-4651-bcf9-4a57a1ca404a",
      "name": "注意:条件检查",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        384
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 572,
        "content": "## ❓ IF 条件节点"
      },
      "typeVersion": 1
    },
    {
      "id": "661b394d-2dc8-4ff9-8d4d-eff137b18c4f",
      "name": "注意:邮件发送器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -464
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 412,
        "content": "## 📧 Gmail 发送邮件节点"
      },
      "typeVersion": 1
    },
    {
      "id": "2e2f7125-ae70-49a3-815e-cf332e9cc468",
      "name": "注意:Google Sheets 记录器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        -176
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 420,
        "content": "## 📊 Google Sheets 日志节点"
      },
      "typeVersion": 1
    },
    {
      "id": "187ea926-1dc1-4a44-b200-59242193544d",
      "name": "注意:消息格式化器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        432
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 676,
        "content": "## 🔄 格式化 Slack 消息"
      },
      "typeVersion": 1
    },
    {
      "id": "67e28ac0-5c86-4f24-8cba-e7dca6b353a8",
      "name": "注意:Slack 通知器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        336
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 676,
        "content": "## 💬 Slack 通知节点"
      },
      "typeVersion": 1
    },
    {
      "id": "10d80719-f5c3-46e0-adff-f932f9a7eb98",
      "name": "注意:错误触发器",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        560
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 420,
        "content": "## 🚨 错误触发器节点"
      },
      "typeVersion": 1
    },
    {
      "id": "0f7d2301-2dd7-4f24-8580-38b7e5c19ccc",
      "name": "注意:错误警报",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        608
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 420,
        "content": "## 📢 错误警报到 Slack"
      },
      "typeVersion": 1
    },
    {
      "id": "5b9c5442-0ba8-4501-9adb-701b4166863d",
      "name": "触发器:每周调度器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -240,
        144
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "8dd6f18c-dff9-409b-b83d-336722d28b2d",
      "name": "获取 HighLevel 联系人",
      "type": "n8n-nodes-base.highLevel",
      "position": [
        -16,
        144
      ],
      "parameters": {
        "filters": {},
        "options": {
          "sortBy": "date_updated"
        },
        "operation": "getAll",
        "requestOptions": {}
      },
      "credentials": {
        "highLevelOAuth2Api": {
          "id": "N9Q1X1RWUjvRIRbt",
          "name": "HighLevel account 2"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1bd6795e-3915-420a-9f72-c05b0c788e89",
      "name": "筛选非活跃联系人(14 天以上)",
      "type": "n8n-nodes-base.code",
      "position": [
        208,
        144
      ],
      "parameters": {
        "jsCode": "const fourteenDaysAgo = new Date();\nfourteenDaysAgo.setDate(fourteenDaysAgo.getDate() - 14);\n\nconst inactiveContacts = [];\n\nfor (const item of $input.all()) {\n  const contact = item.json;\n  const lastActivity = contact.dateUpdated || contact.dateAdded;\n  const lastActivityDate = new Date(lastActivity);\n  \n  if (lastActivityDate < fourteenDaysAgo) {\n    inactiveContacts.push({\n      json: {\n        ...contact,\n        daysSinceContact: Math.floor((new Date() - lastActivityDate) / (1000 * 60 * 60 * 24)),\n        lastContactDate: lastActivity,\n        needsAttention: true\n      }\n    });\n  }\n}\n\nreturn inactiveContacts;"
      },
      "typeVersion": 2
    },
    {
      "id": "bc7bab6f-c83f-4bfa-878c-0beea381686e",
      "name": "拆分客户数组",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        432,
        144
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "contactName, firstName, lastName, companyName, email, phone, address1, dateUpdated, dateAdded, id, tags, lastContactDate, needsAttention"
      },
      "typeVersion": 1
    },
    {
      "id": "24b870ce-2065-4719-bc24-8c37be738046",
      "name": "IF:需要关注",
      "type": "n8n-nodes-base.if",
      "position": [
        656,
        144
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json.needsAttention }}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "65a984e9-6140-4c5e-8411-4081e3207684",
      "name": "发送重新互动邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        880,
        48
      ],
      "webhookId": "8e7e1939-4230-442a-8161-f98cc273c644",
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Check-in Email</title>\n</head>\n<body style=\"margin: 0; padding: 0; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f4f4f4;\">\n    <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"background-color: #f4f4f4; padding: 40px 0;\">\n        <tr>\n            <td align=\"center\">\n                <table width=\"600\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"background-color: #ffffff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); overflow: hidden;\">\n                    <tr>\n                        <td style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 30px; text-align: center;\">\n                            <h1 style=\"margin: 0; color: #ffffff; font-size: 24px; font-weight: 600;\">We're Thinking of You! 💭</h1>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td style=\"padding: 40px 30px;\">\n                            <p style=\"margin: 0 0 20px 0; font-size: 16px; color: #333333; line-height: 1.6;\">\n                                Hi <strong>{{ $json.firstName || 'there' }}</strong>,\n                            </p>\n                            <p style=\"margin: 0 0 20px 0; font-size: 16px; color: #555555; line-height: 1.6;\">\n                                Hope everything's going well! We noticed it's been a while since we last connected.\n                            </p>\n                            <p style=\"margin: 0 0 20px 0; font-size: 16px; color: #555555; line-height: 1.6;\">\n                                Is there anything we can help you with? We're always here to support you.\n                            </p>\n                            <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin: 30px 0;\">\n                                <tr>\n                                    <td align=\"center\" style=\"border-radius: 4px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\">\n                                        <a href=\"mailto:support@yourcompany.com\" style=\"display: inline-block; padding: 14px 32px; color: #ffffff; text-decoration: none; font-size: 16px; font-weight: 600;\">Get in Touch</a>\n                                    </td>\n                                </tr>\n                            </table>\n                            <p style=\"margin: 0; font-size: 16px; color: #555555; line-height: 1.6;\">\n                                Looking forward to hearing from you!\n                            </p>\n                            <p style=\"margin: 20px 0 0 0; font-size: 16px; color: #555555; line-height: 1.6;\">\n                                Best regards,<br>\n                                <strong>Your Team</strong>\n                            </p>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td style=\"background-color: #f8f9fa; padding: 20px 30px; text-align: center; border-top: 1px solid #e9ecef;\">\n                            <p style=\"margin: 0; font-size: 14px; color: #6c757d;\">\n                                © 2025 Your Company. All rights reserved.\n                            </p>\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n    </table>\n</body>\n</html>",
        "options": {},
        "subject": "Just Checking In!"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "70f5n8rPahCANHs7",
          "name": "jyothi"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "22c49b1c-b43a-4a34-99c0-0e93e2f3df7a",
      "name": "在 Google Sheets 中记录非活跃客户",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        240
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "contactName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "contactName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "firstName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "firstName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "lastName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lastName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "companyName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "companyName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address1",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "address1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "dateUpdated",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "dateUpdated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "dateAdded",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "dateAdded",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "lastContactDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lastContactDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "needsAttention",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "needsAttention",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Sheet1",
          "cachedResultName": "Client Engagement"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID",
          "cachedResultName": "Client Engagement Tracking"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "sOplQNr4zvwQul4A",
          "name": "jyothi"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "a1ba79ab-323f-4710-bfce-22ec818e568f",
      "name": "格式化 Slack 消息",
      "type": "n8n-nodes-base.code",
      "position": [
        1104,
        240
      ],
      "parameters": {
        "jsCode": "const clients = $input.all().map(item => {\n  const data = item.json;\n  const fullName = data.lastName ? `${data.firstName} ${data.lastName}` : data.firstName || data.contactName;\n  const lastContact = new Date(data.lastContactDate);\n  const today = new Date();\n  const daysSinceContact = Math.floor((today - lastContact) / (1000 * 60 * 60 * 24));\n  return {\n    name: fullName,\n    email: data.email || 'No email',\n    company: data.companyName || 'No company',\n    phone: data.phone || 'No phone',\n    daysSinceContact: daysSinceContact\n  };\n});\n\nconst clientList = clients.map(c => `• ${c.name} (${c.email}) - ${c.daysSinceContact} days since last contact`).join('\\n');\n\nreturn {\n  json: {\n    count: clients.length,\n    clientList: clientList,\n    clients: clients\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "7d64a0f4-6c39-4ce1-bd23-ca1d4706effe",
      "name": "向客户经理发送 Slack 通知",
      "type": "n8n-nodes-base.slack",
      "position": [
        1328,
        240
      ],
      "webhookId": "f89596e6-8d25-44aa-95b1-9e2ae926bb83",
      "parameters": {
        "text": "=🚨 *Weekly Client Engagement Pulse*\n\n*{{ $json.count }}* clients need attention (no contact in 14+ days):\n\n{{ $json.clientList }}\n\nPlease review and follow up accordingly.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SLACK_CHANNEL_ID",
          "cachedResultName": "client-engagement"
        },
        "otherOptions": {
          "mrkdwn": true
        }
      },
      "credentials": {
        "slackApi": {
          "id": "rNqvWj9TfChPVRYY",
          "name": "Slack account vivek"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "13d74e9a-9687-4d20-bbf4-e6df8d3f2744",
      "name": "错误触发器",
      "type": "n8n-nodes-base.errorTrigger",
      "position": [
        -240,
        464
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "26fe07d2-e839-406c-b2b7-cf85dde3a998",
      "name": "发送错误警报到 Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        -16,
        464
      ],
      "webhookId": "02437799-8c69-43ea-8d54-81a16c4349e8",
      "parameters": {
        "text": "=❌ *Workflow Error: Weekly Client Engagement Pulse*\n\n*Node:* {{ $json.node.name }}\n*Error:* {{ $json.error.message }}\n*Time:* {{ $now.format('yyyy-MM-dd HH:mm:ss') }}\n\nPlease investigate immediately.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_SLACK_CHANNEL_ID",
          "cachedResultName": "errors"
        },
        "otherOptions": {}
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "53e0ed29-a751-4a7e-a92a-5414ebac3321",
  "connections": {
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Send Error Alert to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Needs Attention": {
      "main": [
        [
          {
            "node": "Send Re-engagement Email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log Inactive Client in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Clients Array": {
      "main": [
        [
          {
            "node": "IF: Needs Attention",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Slack Message": {
      "main": [
        [
          {
            "node": "Send Slack Notification to Account Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch HighLevel Contacts": {
      "main": [
        [
          {
            "node": "Filter Inactive Contacts (14+ days)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger: Weekly Scheduler": {
      "main": [
        [
          {
            "node": "Fetch HighLevel Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Inactive Contacts (14+ days)": {
      "main": [
        [
          {
            "node": "Split Clients Array",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Inactive Client in Google Sheets": {
      "main": [
        [
          {
            "node": "Format Slack Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 内容创作, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量23
分类2
节点类型10
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

外部链接
在 n8n.io 查看

分享此工作流