将开放日潜在客户从 SignSnapHome 同步至 HubSpot(含自动邮件跟进)
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 16 个节点。主要使用 If, Set, Code, Hubspot, Webhook 等节点。 将开放日潜在客户从 SignSnapHome 同步至 HubSpot,支持自动邮件跟进
前置要求
- •HubSpot API Key
- •HTTP Webhook 端点(n8n 会自动生成)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "105694f414213a0eca348284005921253960bd1b0223294a4970522d0da53055",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "8451445c-cf7f-43b3-b8e5-6fb377befcab",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-576
],
"parameters": {
"color": 4,
"width": 346,
"height": 472,
"content": "## 📋 设置说明"
},
"typeVersion": 1
},
{
"id": "74585b1c-f23b-4001-b81e-a38291312481",
"name": "Webhook: SignSnap Home",
"type": "n8n-nodes-base.webhook",
"position": [
-144,
-224
],
"webhookId": "84838b43-c8d0-4eb8-a602-443fcc8a20fc",
"parameters": {
"path": "signsnap-hubspot",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "a3562394-ff96-408f-8e5f-2cfaa5e7dd08",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-656
],
"parameters": {
"color": 4,
"width": 289,
"height": 380,
"content": "## 🎯 WEBHOOK 接收数据"
},
"typeVersion": 1
},
{
"id": "7d256ab8-0b49-4638-b3a3-736fdb921c47",
"name": "解析 SignSnap 数据",
"type": "n8n-nodes-base.code",
"position": [
80,
-224
],
"parameters": {
"jsCode": "// Extract and process SignSnap Home data for HubSpot\nconst items = $input.all();\nconst guestData = items[0].json.body;\n\n// Extract core contact information\nconst email = guestData.email || null;\nconst firstName = guestData.first_name || '';\nconst lastName = guestData.last_name || '';\nconst phone = guestData.phone_number || null;\n\n// Extract open house details\nconst propertyAddress = guestData.openHouseTitle || '';\nconst visitDate = guestData.submissionTimestamp || new Date().toISOString();\nconst hasAgent = guestData.are_you_currently_working_with_an_agent || 'Not specified';\n\n// Optional fields (may not exist in all forms)\nconst rating = guestData.what_did_you_rate_the_house || null;\nconst buyerAgreement = guestData.do_you_have_a_signed_buyer_agreement || null;\n\n// Separate standard fields from custom fields\nconst standardFields = [\n 'openHouseTitle', 'openHouseType', 'submissionTimestamp',\n 'guestPhotoUrl', 'first_name', 'last_name', 'phone_number',\n 'email', 'are_you_currently_working_with_an_agent',\n 'what_did_you_rate_the_house', 'do_you_have_a_signed_buyer_agreement',\n 'webhookUrl', 'executionMode'\n];\n\nconst customFields = {};\nfor (const [key, value] of Object.entries(guestData)) {\n if (!standardFields.includes(key) && value !== null && value !== undefined && value !== '') {\n customFields[key] = value;\n }\n}\n\n// Build custom fields text for notes\nconst customFieldsText = Object.entries(customFields)\n .map(([key, value]) => {\n const formattedKey = key.replace(/_/g, ' ')\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n return `${formattedKey}: ${value}`;\n })\n .join('\\n');\n\n// Calculate lead score (0-100)\nlet leadScore = 50; // Base score\n\nif (hasAgent === 'No' || hasAgent === 'no') {\n leadScore += 30; // Hot lead - no agent\n}\n\nif (rating) {\n const ratingNum = parseInt(rating);\n if (ratingNum >= 4) leadScore += 20; // High rating\n else if (ratingNum <= 2) leadScore -= 20; // Low rating\n}\n\nif (buyerAgreement === 'No' || buyerAgreement === 'no') {\n leadScore += 10; // No agreement = more available\n}\n\nleadScore = Math.max(0, Math.min(100, leadScore)); // Clamp 0-100\n\n// Determine lead status\nlet leadStatus = 'OPEN';\nif (leadScore >= 70) leadStatus = 'HOT';\nelse if (leadScore >= 50) leadStatus = 'WARM';\nelse if (leadScore < 40) leadStatus = 'COLD';\n\n// Build comprehensive notes for HubSpot\nconst notes = `🏠 Open House Visit\\n\\nProperty: ${propertyAddress}\\nVisit Date: ${new Date(visitDate).toLocaleString('en-US', { dateStyle: 'full', timeStyle: 'short' })}\\nHas Agent: ${hasAgent}${rating ? `\\nProperty Rating: ${rating}/5` : ''}${buyerAgreement ? `\\nBuyer Agreement: ${buyerAgreement}` : ''}\\n\\nLead Score: ${leadScore}/100\\nLead Status: ${leadStatus}${customFieldsText ? `\\n\\n--- Additional Information ---\\n${customFieldsText}` : ''}\\n\\n📍 Source: SignSnap Home Open House Sign-In`;\n\nreturn [{\n json: {\n // HubSpot contact fields\n email: email,\n firstname: firstName,\n lastname: lastName,\n phone: phone,\n \n // Property & visit details\n propertyAddress: propertyAddress,\n visitDate: visitDate,\n hasAgent: hasAgent,\n rating: rating,\n \n // Scoring\n leadScore: leadScore,\n leadStatus: leadStatus,\n \n // Notes to add to contact\n notes: notes,\n \n // Lifecycle stage\n lifecyclestage: 'lead',\n \n // Original data for reference\n _raw: guestData\n }\n}];"
},
"typeVersion": 2
},
{
"id": "bae80e9f-b4fe-4c0e-a945-a1d2b5937e8e",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-672
],
"parameters": {
"color": 4,
"width": 303,
"height": 373,
"content": "## ⚙️ 数据处理"
},
"typeVersion": 1
},
{
"id": "9f28800b-f6fd-4ca8-b41f-43dcc7fde6f9",
"name": "有邮箱吗?",
"type": "n8n-nodes-base.if",
"position": [
304,
-224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "email-check",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1c5ca9b2-cba1-4709-a02c-9df049310f4d",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
-656
],
"parameters": {
"color": 4,
"width": 262,
"height": 248,
"content": "## ✉️ 邮箱必填"
},
"typeVersion": 1
},
{
"id": "fdebbdbb-0116-4f6a-92ea-3fdef2fbcded",
"name": "创建/更新 HubSpot 联系人",
"type": "n8n-nodes-base.hubspot",
"position": [
528,
-352
],
"parameters": {
"email": "={{ $json.email }}",
"options": {},
"authentication": "appToken",
"additionalFields": {
"lastName": "={{ $json.lastname }}",
"firstName": "={{ $json.firstname }}",
"phoneNumber": "={{ $('Parse SignSnap Data').item.json._raw.phone_number }}",
"membershipNote": "={{ $('Parse SignSnap Data').item.json.notes }}"
}
},
"credentials": {
"hubspotAppToken": {
"id": "XUCfDvhuGiD9t0za",
"name": "HubSpot account"
}
},
"typeVersion": 2.2
},
{
"id": "fbc3e0a7-97d3-4822-b57a-6c8f8b279eba",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
-496
],
"parameters": {
"color": 5,
"width": 262,
"height": 300,
"content": "## 🎯 HUBSPOT"
},
"typeVersion": 1
},
{
"id": "25b03343-3dfe-46ab-8860-b36dea6fbebf",
"name": "发送感谢邮件",
"type": "n8n-nodes-base.emailSend",
"position": [
528,
-160
],
"webhookId": "de450abb-d8a5-42f3-937e-ded6115ec33f",
"parameters": {
"html": "=Hi {{ $('Parse SignSnap Data').item.json.firstname }}!\n\nThank you for visiting {{ $('Parse SignSnap Data').item.json.propertyAddress }} today.\n\n{{ $('Parse SignSnap Data').item.json.hasAgent === 'No' ? \"Our team would love to help you on your home buying journey! We specialize in this area and can provide exclusive listings and personalized service. We're here to make finding your dream home easy and stress-free.\\n\\n\" : \"\" }}If you have any questions about this property or would like to schedule another viewing, please don't hesitate to reply to this email.\n\nBest regards,\nYour Real Estate Team",
"options": {},
"subject": "=Thank You for Visiting {{ $('Parse SignSnap Data').item.json.propertyAddress }}!",
"toEmail": "={{ $('Parse SignSnap Data').item.json.email }}",
"fromEmail": "YOUR_EMAIL@DOMAIN.COM"
},
"typeVersion": 2.1
},
{
"id": "b714c9f3-c953-4ecb-9456-3f2e346b31ef",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
-48
],
"parameters": {
"color": 5,
"width": 262,
"height": 268,
"content": "## 📧 自动跟进"
},
"typeVersion": 1
},
{
"id": "61c0140b-7043-4f12-9498-6bf3d850c37b",
"name": "记录缺失邮箱",
"type": "n8n-nodes-base.set",
"position": [
528,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "error-message",
"name": "error_reason",
"type": "string",
"value": "No email address provided"
},
{
"id": "guest-name",
"name": "guest_name",
"type": "string",
"value": "={{ $json.firstname }} {{ $json.lastname }}"
},
{
"id": "property",
"name": "property",
"type": "string",
"value": "={{ $json.propertyAddress }}"
},
{
"id": "phone",
"name": "phone",
"type": "string",
"value": "={{ $json.phone }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "098055b4-f2e3-4376-ad9d-cc7f2ab1ff26",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
176
],
"parameters": {
"color": 6,
"width": 262,
"height": 231,
"content": "## ⚠️ 无邮箱处理"
},
"typeVersion": 1
},
{
"id": "4c31c975-05e6-4bed-8e9f-96d5e8c426c9",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-112
],
"parameters": {
"color": 3,
"width": 361,
"height": 670,
"content": "## 📊 自定义 HubSpot 属性(可选)"
},
"typeVersion": 1
},
{
"id": "3d3a1a95-f7ba-4e1d-9304-524604993896",
"name": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-544,
-16
],
"parameters": {
"color": 7,
"width": 349,
"height": 734,
"content": "## 💡 专业技巧与增强功能"
},
"typeVersion": 1
},
{
"id": "2b6fca52-ae4b-4788-8283-4997cd4d2757",
"name": "便签9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-160,
-16
],
"parameters": {
"color": 6,
"width": 333,
"height": 702,
"content": "## 🔧 故障排除"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Has Email?": {
"main": [
[
{
"node": "Create/Update HubSpot Contact",
"type": "main",
"index": 0
},
{
"node": "Send Thank You Email",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Missing Email",
"type": "main",
"index": 0
}
]
]
},
"Parse SignSnap Data": {
"main": [
[
{
"node": "Has Email?",
"type": "main",
"index": 0
}
]
]
},
"Webhook: SignSnap Home": {
"main": [
[
{
"node": "Parse SignSnap Data",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用SignSnapHome、HubSpot和Twilio自动化房地产开放日跟进
通过SignSnapHome、HubSpot和Twilio实现房地产开放日跟进的自动化
If
Set
Code
+9
32 节点Kaden Reese
内容创作
使用SignSnapHome、Discord和Twilio自动化开放日潜在客户管理
使用SignSnapHome、Discord和Twilio自动化开放日潜在客户管理
If
Code
Twilio
+5
13 节点Kaden Reese
内容创作
Telegram AI歌词学习机器人 — 翻译、摘要、词汇
Telegram AI歌词学习机器人 — 翻译、摘要、词汇
If
Set
Code
+7
30 节点Raphael De Carvalho Florencio
内容创作
潜在客户资格评定与路由引擎
基于AI的潜在客户资格评定与路由:使用OpenAI、Slack和Airtable
If
Set
Slack
+8
17 节点Xavier Tai
内容创作
会议纪要和行动项跟踪器
基于AI的会议纪要:使用GPT-4、任务分配和多渠道分发
If
Set
Code
+10
38 节点Jitesh Dugar
内容创作
从趋势电子表格生成SEO内容到存储(SharePoint/Drive/Dropbox)
使用GPT-4o、FAL AI和多存储支持从趋势自动生成SEO内容
If
Set
Code
+13
47 节点plemeo
内容创作
工作流信息
难度等级
高级
节点数量16
分类2
节点类型7
作者
Kaden Reese
@kadenreeseI started automating with Python in 2020 and still use it in workflows when needed, but I’ve recently leaned into n8n for client-facing solutions. Lately I’ve focused on real estate automations, though I also build workflows for email, scraping, and other use cases. Currently Building 👇🏻
外部链接
在 n8n.io 查看 →
分享此工作流