SignSnapHome、HubSpot、Twilioを使った不動産オープンハウスフォローの自動化

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、32個のノードを含みます。主にIf, Set, Code, Wait, Twilioなどのノードを使用。 SignSnapHome、HubSpot、Twilioを使った不動産オープンハウスフォロー自動化

前提条件
  • HubSpot API Key
  • HTTP Webhookエンドポイント(n8nが自動生成)
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "105694f414213a0eca348284005921253960bd1b0223294a4970522d0da53055"
  },
  "nodes": [
    {
      "id": "306d7ce6-9e54-49a0-8fbd-5ace7fab8d18",
      "name": "Webhook: SignSnap Home",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -944,
        -144
      ],
      "webhookId": "89c63504-3651-4865-a2f3-b187cf22e255",
      "parameters": {
        "path": "signsnap-drip-crm",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "b84af1e1-e49f-4fa9-8ec2-1d3b6b9cbd81",
      "name": "SignSnapデータの解析",
      "type": "n8n-nodes-base.code",
      "position": [
        -736,
        -144
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst guestData = items[0].json.body;\nconst email = guestData.email || null;\nconst firstName = guestData.first_name || '';\nconst lastName = guestData.last_name || '';\nconst phone = guestData.phone_number || null;\nconst propertyAddress = guestData.openHouseTitle || '';\nconst visitDate = guestData.submissionTimestamp || new Date().toISOString();\nconst hasAgent = guestData.are_you_currently_working_with_an_agent || 'Not specified';\nconst rating = guestData.what_did_you_rate_the_house || null;\nconst buyerAgreement = guestData.do_you_have_a_signed_buyer_agreement || null;\nlet leadScore = 50;\nif (hasAgent === 'No' || hasAgent === 'no') leadScore += 30;\nif (rating && parseInt(rating) >= 4) leadScore += 20;\nif (rating && parseInt(rating) <= 2) leadScore -= 20;\nif (buyerAgreement === 'No' || buyerAgreement === 'no') leadScore += 10;\nleadScore = Math.max(0, Math.min(100, leadScore));\nlet leadStatus = 'OPEN';\nif (leadScore >= 70) leadStatus = 'HOT';\nelse if (leadScore >= 50) leadStatus = 'WARM';\nelse if (leadScore < 40) leadStatus = 'COLD';\nconst qualifiesForFollowUp = (hasAgent.toLowerCase() === 'no' || (hasAgent.toLowerCase() === 'yes' && buyerAgreement && buyerAgreement.toLowerCase() === 'no'));\nconst notes = `Property: ${propertyAddress}\\nVisit: ${visitDate}\\nHas Agent: ${hasAgent}\\nLead Score: ${leadScore}\\nStatus: ${leadStatus}`;\nreturn [{json: {email, firstname: firstName, lastname: lastName, phone, propertyAddress: propertyAddress, visitDate, hasAgent, rating, buyerAgreement, leadScore, leadStatus, qualifiesForFollowUp, notes, lifecyclestage: 'lead', _raw: guestData}}];"
      },
      "typeVersion": 2
    },
    {
      "id": "f8b4dbf0-111e-4324-bcdc-a168e15d79c3",
      "name": "メールアドレスはあるか?",
      "type": "n8n-nodes-base.if",
      "position": [
        -512,
        -144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json.email }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "37eea75a-1562-40b9-b5e8-b9f86b9dd804",
      "name": "お礼メールを送信",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        -304,
        -400
      ],
      "webhookId": "726c63db-812e-43ff-9a85-a7055fe50ace",
      "parameters": {
        "html": "=Hi {{ $json.firstname }}!\n\nThank you for visiting {{ $json.propertyAddress }} today.\n\nBest regards,\nYour Real Estate Team",
        "options": {},
        "subject": "=Thank You for Visiting {{ $json.propertyAddress }}!",
        "toEmail": "={{ $json.email }}",
        "fromEmail": "YOUR_EMAIL@DOMAIN.COM"
      },
      "typeVersion": 2.1
    },
    {
      "id": "af2b0a12-b231-4e74-b988-51b3a909ab6d",
      "name": "マスターシートに記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -304,
        -144
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.email }}",
            "Phone": "={{ $json.phone }}",
            "Property": "={{ $json.propertyAddress }}",
            "Last Name": "={{ $json.lastname }}",
            "Timestamp": "={{ $json.visitDate }}",
            "First Name": "={{ $json.firstname }}",
            "Lead Score": "={{ $json.leadScore }}",
            "Lead Status": "={{ $json.leadStatus }}",
            "Qualifies for Follow-up": "={{ $json.qualifiesForFollowUp ? 'YES' : 'NO' }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "First Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "First Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Last Name",
              "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": "Property",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Property",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Lead Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Lead Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Lead Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Lead Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Has Agent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Has Agent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Buyer Agreement",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Buyer Agreement",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Qualifies for Follow-up",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Qualifies for Follow-up",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Source",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Source",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 490817884,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit#gid=490817884",
          "cachedResultName": "SignSnap Log Test"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit?usp=drivesdk",
          "cachedResultName": "Agent Google Maps Scrape n8n"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rcg87wOoQqOfBbHi",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "0c10f03a-1bd4-42aa-b2cb-db1442bf603f",
      "name": "HubSpotコンタクトの作成/更新",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        -64,
        -336
      ],
      "parameters": {
        "email": "={{ $('Parse SignSnap Data').item.json.email }}",
        "options": {},
        "authentication": "appToken",
        "additionalFields": {
          "lastName": "={{ $json['Last Name'] }}",
          "firstName": "={{ $json['First Name'] }}",
          "phoneNumber": "={{ $('Parse SignSnap Data').item.json.phone }}",
          "membershipNote": "={{ $('Parse SignSnap Data').item.json.notes }}"
        }
      },
      "credentials": {
        "hubspotAppToken": {
          "id": "XUCfDvhuGiD9t0za",
          "name": "HubSpot account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b7e1cdb0-507d-4ddd-8fb5-58f2b3fec618",
      "name": "Follow Up Bossに同期",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -64,
        -144
      ],
      "parameters": {
        "url": "https://api.followupboss.com/v1/people",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.email }}"
            },
            {
              "name": "firstName",
              "value": "={{ $json.firstname }}"
            },
            {
              "name": "lastName",
              "value": "={{ $json.lastname }}"
            },
            {
              "name": "phones[0].value",
              "value": "={{ $json.phone }}"
            },
            {
              "name": "phones[0].type",
              "value": "mobile"
            },
            {
              "name": "source",
              "value": "=SignSnap Home {{ json.propertyAddress }}"
            },
            {
              "name": "notes",
              "value": "={{ $json.notes }}"
            }
          ]
        },
        "genericAuthType": "httpBasicAuth"
      },
      "typeVersion": 4.2
    },
    {
      "id": "26b97759-43bd-4046-a118-8ea7df44471f",
      "name": "Monday.comに同期",
      "type": "n8n-nodes-base.mondayCom",
      "position": [
        -64,
        32
      ],
      "parameters": {
        "name": "={{ $json.firstname }} {{ $json.lastname }} - {{ $json.propertyAddress }}",
        "boardId": "YOUR_MONDAY_BOARD_ID",
        "groupId": "topics",
        "resource": "boardItem",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "c06c92c0-ddf0-490a-b846-b8ba32ba51fe",
      "name": "フォローアップの対象か?",
      "type": "n8n-nodes-base.if",
      "position": [
        160,
        -144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "1",
              "operator": {
                "type": "boolean",
                "operation": "true"
              },
              "leftValue": "={{ $('Parse SignSnap Data').item.json.qualifiesForFollowUp }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "819cec37-f9d3-4362-81d9-9e7153483b2a",
      "name": "2日間待機",
      "type": "n8n-nodes-base.wait",
      "position": [
        384,
        -144
      ],
      "webhookId": "d0b0689b-eac5-44db-90b6-d0195c78b84c",
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1,
      "alwaysOutputData": true
    },
    {
      "id": "7df4434d-196d-465f-8f84-2c790e9fbe23",
      "name": "SMSフォローアップ送信(2日目)",
      "type": "n8n-nodes-base.twilio",
      "position": [
        592,
        -144
      ],
      "parameters": {
        "to": "={{ $('Parse SignSnap Data').item.json.phone }}",
        "from": "YOUR_TWILIO_PHONE_NUMBER",
        "message": "=Hi {{ $('Parse SignSnap Data').item.json.firstname }}! Great meeting you at {{ $('Parse SignSnap Data').item.json.propertyAddress }}. Any questions? Reply to this text!\n\nReply STOP to unsubscribe",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "3369be2a-2dd5-489c-9b75-90827583c441",
      "name": "SMSアクティビティを記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        816,
        -144
      ],
      "parameters": {
        "columns": {
          "value": {
            "Notes": "={{ $('Parse SignSnap Data').item.json.notes }}",
            "Message": "Day 2 SMS",
            "Property": "={{ $('Parse SignSnap Data').item.json.propertyAddress }}",
            "Timestamp": "={{ $now.toISO() }}",
            "Contact Name": "={{ $('Parse SignSnap Data').item.json.firstname }} {{ $('Parse SignSnap Data').item.json.lastname }}",
            "Activity Type": "SMS",
            "Contact Email": "={{ $('Parse SignSnap Data').item.json.email }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contact Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Contact Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contact Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Contact Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Activity Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Activity Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Property",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Property",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Success",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Success",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Notes",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Notes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 288628652,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit#gid=288628652",
          "cachedResultName": "SMS SignSnap Log Test"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit?usp=drivesdk",
          "cachedResultName": "Agent Google Maps Scrape n8n"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rcg87wOoQqOfBbHi",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d4e56171-d817-479c-802e-dd6c9131fff3",
      "name": "さらに3日間待機",
      "type": "n8n-nodes-base.wait",
      "position": [
        1040,
        -144
      ],
      "webhookId": "5f4dbdfe-4e5d-4eeb-8597-8fc7b8d1c574",
      "parameters": {
        "unit": "days",
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "3540a701-4bdb-4e0f-ba3f-9e793294c47e",
      "name": "市場アップデートメール送信(5日目)",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1264,
        -144
      ],
      "webhookId": "8ee59399-1d42-4990-afb6-32f77ea0ea2e",
      "parameters": {
        "html": "=Hi {{ $('Parse SignSnap Data').item.json.firstname }},\n\nYOUR_MESSAGE_HERE.\n\nBest regards\nYOUR_NAME_HERE",
        "options": {},
        "subject": "=Market Update",
        "toEmail": "={{ $json.email }}",
        "fromEmail": "YOUR_EMAIL@DOMAIN.COM"
      },
      "typeVersion": 2.1
    },
    {
      "id": "0d1452f4-6e0c-4e1b-b99b-847fc966afc0",
      "name": "メールアクティビティを記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1472,
        -144
      ],
      "parameters": {
        "columns": {
          "value": {
            "Notes": "={{ $('Parse SignSnap Data').item.json.notes }}",
            "Message": "Day 5 Email",
            "Property": "={{ $('Parse SignSnap Data').item.json.propertyAddress }}",
            "Timestamp": "={{ $now.toISO() }}",
            "Contact Name": "={{ $('Parse SignSnap Data').item.json.firstname }} {{ $('Parse SignSnap Data').item.json.lastname }}",
            "Activity Type": "Email",
            "Contact Email": "={{ $json.email }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contact Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Contact Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contact Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Contact Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Activity Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Activity Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Property",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Property",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Success",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Success",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Notes",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Notes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 288628652,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit#gid=288628652",
          "cachedResultName": "SMS SignSnap Log Test"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit?usp=drivesdk",
          "cachedResultName": "Agent Google Maps Scrape n8n"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rcg87wOoQqOfBbHi",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "cd4c3e51-cdb3-4869-9357-89fd3113130d",
      "name": "最後の2日間待機",
      "type": "n8n-nodes-base.wait",
      "position": [
        1696,
        -144
      ],
      "webhookId": "b62e73a2-fb7e-477d-a553-ff5c140c8924",
      "parameters": {
        "unit": "days",
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "4bb2f67f-a640-4daf-850e-0c6ac7c206a1",
      "name": "フォローアップタスクを作成(7日目)",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1920,
        -144
      ],
      "parameters": {
        "resource": "task",
        "authentication": "appToken"
      },
      "credentials": {
        "hubspotAppToken": {
          "id": "XUCfDvhuGiD9t0za",
          "name": "HubSpot account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5ca2bf5a-57a8-4972-9300-10b95c5d4a86",
      "name": "メールアドレス欠落を記録",
      "type": "n8n-nodes-base.set",
      "position": [
        -304,
        144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1",
              "name": "error_reason",
              "type": "string",
              "value": "No email"
            },
            {
              "id": "2",
              "name": "guest_name",
              "type": "string",
              "value": "={{ $json.firstname }} {{ $json.lastname }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "23890819-d826-4c9a-9391-3755eada8049",
      "name": "エラーシートに記録",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -64,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "Timestamp": "={{ $now.toISO() }}",
            "Guest Name": "={{ $json.guest_name }}",
            "Error Reason": "={{ $json.error_reason }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "mode": "list",
          "value": "Errors"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1xWqUC4fGVpjB7c2rYnosAn1mKShs3SKizgA-M8P9tZg/edit?usp=drivesdk",
          "cachedResultName": "Agent Google Maps Scrape n8n"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rcg87wOoQqOfBbHi",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5710d148-ccb0-4324-9f41-3de8a547a8f7",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1504,
        -928
      ],
      "parameters": {
        "color": 5,
        "width": 352,
        "height": 736,
        "content": "## 📋 SETUP INSTRUCTIONS\n\n**Enhanced Multi-CRM + Auto Follow-up Workflow**\n\n### Quick Setup:\n1. **Configure Credentials:**\n   - HubSpot OAuth2 or API Token\n   - Follow Up Boss API Key\n   - Monday.com API Token\n   - Twilio Account (SID + Auth Token)\n   - SMTP for emails\n   - Google Sheets OAuth2\n\n2. **Create Google Sheet with 3 tabs:**\n   - \"Lead Master Log\"\n   - \"Follow-up Activity\"\n   - \"Errors\"\n\n3. **Update placeholders in nodes:**\n   - YOUR_GOOGLE_SHEET_ID_HERE\n   - YOUR_EMAIL@DOMAIN.COM\n   - YOUR_TWILIO_PHONE_NUMBER\n   - YOUR_MONDAY_BOARD_ID\n\n4. Activate workflow\n5. Copy webhook URL\n6. Paste into SignSnapHome.com → Settings → Integrations\n\n✅ Done! Leads auto-sync to 3 CRMs with 7-day follow-up!"
      },
      "typeVersion": 1
    },
    {
      "id": "13fe6aaa-dc6a-4495-ae62-504d3515857f",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        -640
      ],
      "parameters": {
        "width": 224,
        "height": 384,
        "content": "## 🎯 WEBHOOK TRIGGER\n\n**Receives POST data from SignSnap Home**\n\nURL Format:\n`https://your-n8n.com/webhook/signsnap-drip-crm`\n\nAdd this URL to SignSnapHome.com automation settings.\n\n⚡ Triggers on every open house sign-in!"
      },
      "typeVersion": 1
    },
    {
      "id": "3158bc54-e489-4466-af5b-ce0bc9bb0670",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        -768
      ],
      "parameters": {
        "height": 496,
        "content": "## ⚙️ DATA PROCESSING\n\n**Extracts & enriches all data:**\n\n✅ Contact info\n✅ Property & visit details\n✅ Lead score (0-100)\n✅ Lead status (HOT/WARM/COLD)\n✅ Follow-up qualification\n\n**Lead Scoring:**\n- Base: 50 points\n- No agent: +30\n- Rating 4-5: +20\n- Rating 1-2: -20\n- No buyer agreement: +10\n\n**Follow-up Logic:**\nQualifies if NO agent OR (has agent BUT no agreement)"
      },
      "typeVersion": 1
    },
    {
      "id": "5a6fd21b-1bc1-45b4-ade3-af26679eb627",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        -1456
      ],
      "parameters": {
        "color": 4,
        "height": 368,
        "content": "## 🎯 HUBSPOT\n\nIf contact exists:\n→ Updates information\n→ Adds new visit to timeline\n→ Updates lead score\n\nIf contact is new:\n→ Creates new contact\n→ Sets all properties\n→ Marks as 'Lead'\n\n✨ Prevents duplicates!\n\n🔧 **Setup:**\nConfigure OAuth2 or API Token in credentials"
      },
      "typeVersion": 1
    },
    {
      "id": "f6a03f6a-df91-4fc8-8b99-17fd12715a04",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        -1456
      ],
      "parameters": {
        "color": 4,
        "height": 608,
        "content": "## 🔑 FOLLOW UP BOSS\n\n**API Setup:**\n1. Login to Follow Up Boss\n2. Settings → API\n3. Generate API Key\n4. Copy key\n\n**n8n Credential:**\n1. Click credential in this node\n2. Create \"HTTP Basic Auth\"\n3. Username: Your API Key\n4. Password: Leave blank\n\n**Optional Custom Fields:**\nAdd in FUB Settings first:\n- property_visited\n- lead_score\n- visit_date\n\nThen add to body parameters.\n\n📚 https://docs.followupboss.com"
      },
      "typeVersion": 1
    },
    {
      "id": "c1454018-03d8-463f-870a-27595fda1d8e",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -1456
      ],
      "parameters": {
        "color": 4,
        "height": 688,
        "content": "## 📋 MONDAY.COM\n\n**Board Setup:**\n1. Create board: \"Open House Leads\"\n2. Add columns:\n   - Name (text)\n   - Email (email)\n   - Phone (phone)\n   - Property (text)\n   - Lead Status (status)\n   - Lead Score (numbers)\n   - Visit Date (date)\n\n**Get Board ID:**\n1. Open board URL\n2. Look for: monday.com/boards/1234567890\n3. Copy the number (1234567890)\n4. Paste into this node\n\n**Get API Token:**\n1. Avatar → Admin → API\n2. Generate token\n3. Save in n8n credentials\n\n📚 https://developer.monday.com"
      },
      "typeVersion": 1
    },
    {
      "id": "2cad509e-ec9a-4972-b090-894fa95a410a",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -736
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 496,
        "content": "## 🎯 SMART QUALIFICATION\n\n**Who gets full follow-up sequence?**\n\n✅ **QUALIFIED LEADS:**\n- Visitor said \"No\" to having agent\n- Visitor has agent BUT no buyer agreement\n\n❌ **BASIC ONLY:**\n- Has agent + signed buyer agreement\n- (Gets email + CRM sync, no SMS/sequence)\n\n**Why this matters:**\n- Respects existing relationships\n- Focuses energy on available buyers\n- Compliance with agent ethics\n- Higher conversion on qualified leads\n\n**TRUE Path:** Full 7-day sequence\n**FALSE Path:** Workflow ends (already in CRMs)"
      },
      "typeVersion": 1
    },
    {
      "id": "ea992704-fe3a-4830-9cca-e0d716f19bc9",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        -576
      ],
      "parameters": {
        "color": 4,
        "height": 128,
        "content": "## See Above for Individual setups\nDelete/ disconnect the nodes you dont use\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c97076de-ae72-418e-bbaa-fb5b6d723c8f",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        -768
      ],
      "parameters": {
        "width": 352,
        "height": 528,
        "content": "## 📱 TWILIO SMS (DAY 2)\n\n**Requirements:**\n- Twilio account\n- SMS-enabled phone number\n- Account SID + Auth Token\n\n**Setup:**\n1. Console → Get SID & Token\n2. Buy phone number (+15551234567)\n3. Configure n8n credential\n4. Update phone number in node\n\n**TCPA Compliance:**\n✅ Consent via open house sign-in\n✅ \"Reply STOP\" included\n✅ Activity logged automatically\n✅ Business relationship established\n\n**Cost:** ~$0.0079 per SMS\n\n**Message Logic:**\nDifferent text if no agent vs has agent\n\n📚 https://www.twilio.com/docs/sms"
      },
      "typeVersion": 1
    },
    {
      "id": "5f585c80-1984-4505-a408-08f697b9ef69",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        48
      ],
      "parameters": {
        "color": 5,
        "width": 720,
        "height": 1008,
        "content": "## 📊 GOOGLE SHEETS STRUCTURE + Setup\n\n**Create ONE Google Sheet with 3 tabs:**\n\n### Tab 1: \"Lead Master Log\"\n**Column Headers (Row 1):**\nTimestamp | First Name | Last Name | Email | Phone | Property | Lead Score | Lead Status | Has Agent | Buyer Agreement | Qualifies for Follow-up | Source\nCOPY/PASTE:\nTimestamp\tFirst Name\tLast Name\tEmail\tPhone\tProperty\tLead Score\tLead Status\tHas Agent\tBuyer Agreement\tQualifies for Follow-up\tSource\n\n### Tab 2: \"Follow-up Activity\"\n**Column Headers (Row 1):**\nTimestamp | Contact Email | Contact Name | Activity Type | Message | Property | Success | Notes\n\nCOPY/PASTE:\nTimestamp\tContact Email\tContact Name\tActivity Type\tMessage\tProperty\tSuccess\tNotes\n\n### Tab 3: \"Errors\"\n**Column Headers (Row 1):**\nTimestamp | Guest Name | Property | Phone | Error Reason\n\nCOPY/PASTE:\n\nTimestamp\tGuest Name\tProperty\tPhone\tError Reason\n\n\n**TWO WAYS TO CONNECT:**\n\n### Option 1: Manual Selection (EASIER)\n1. Configure Google Sheets OAuth2 credential in n8n\n2. In each Google Sheets node, click \"Document\" dropdown\n3. Select your sheet from the list\n4. Click \"Sheet\" dropdown and select tab name\n5. Done! No IDs needed.\n\n### Option 2: Direct ID Method\n1. Open your Google Sheet\n2. Copy URL: `docs.google.com/spreadsheets/d/`**`SHEET_ID_HERE`**`/edit`\n3. Copy the ID between `/d/` and `/edit`\n4. Paste into \"Document ID\" field in nodes\n5. Type tab names manually\n\n💡 **Recommended:** Use Option 1 (Manual Selection) - it's easier and less error-prone!"
      },
      "typeVersion": 1
    },
    {
      "id": "f28a2b08-52e1-43ab-bc68-c86f6e54ef15",
      "name": "付箋10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        -1040
      ],
      "parameters": {
        "color": 4,
        "width": 448,
        "height": 784,
        "content": "## ⏱️ 7-DAY FOLLOW-UP SEQUENCE\n\n**Only for qualified leads:**\n✅ No agent OR has agent but no buyer agreement\n\n**Timeline:**\n\n📅 **Day 0** (Immediate):\n- ✉️ Thank you email\n- 📊 Logged to all 3 CRMs\n- 📋 Master log updated\n\n📅 **Day 2** (48 hours):\n- 📱 SMS follow-up\n- 📊 Activity logged\n- Different message if no agent\n\n📅 **Day 5** (3 more days):\n- ✉️ Market update email\n- 📊 Activity logged\n- Includes consultation offer\n\n📅 **Day 7** (2 final days):\n- 📋 Task created in HubSpot\n- 🎯 Assigned to agent\n- 📊 Activity logged\n- Priority based on lead score\n\n**Total Touchpoints:** 4\n**Manual Work:** Zero\n**Conversion Rate:** 📈\n\n**Non-qualified leads get:**\n- Thank you email only\n- CRM sync\n- No automated follow-up"
      },
      "typeVersion": 1
    },
    {
      "id": "9138414d-76a4-4d31-9c18-d91ba2f67404",
      "name": "付箋11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        96
      ],
      "parameters": {
        "color": 3,
        "width": 368,
        "height": 928,
        "content": "## 🔧 TROUBLESHOOTING\n\n**Common Issues:**\n\n🔴 **\"Invalid email\"**\n→ Check email format in SignSnap\n→ Enable validation in form\n\n🔴 **\"Authentication failed\"**\n→ Reconnect credentials\n→ Check token expiration\n→ Verify API permissions\n\n🔴 **\"Follow Up Boss 401 error\"**\n→ Verify API key in credential\n→ API key goes in Username field\n→ Leave Password blank\n\n🔴 **\"Monday.com board not found\"**\n→ Verify Board ID is correct\n→ Check API token permissions\n→ Ensure board exists\n\n🔴 **\"Twilio SMS failed\"**\n→ Verify phone number format: +15551234567\n→ Check Twilio account balance\n→ Verify phone number is SMS-capable\n\n🔴 **\"Google Sheets permission denied\"**\n→ Share sheet with service account\n→ Or use OAuth2 credential\n→ Verify Sheet ID is correct\n\n🔴 **\"Wait node not resuming\"**\n→ Ensure workflow is ACTIVE\n→ Check n8n queue is running\n\n**Testing Tips:**\n→ Test each CRM individually\n→ Check execution logs\n→ Verify all credentials\n→ Test with sample data\n\n**Need help?**\n→ n8n community forum\n→ CRM API documentation"
      },
      "typeVersion": 1
    },
    {
      "id": "10db297e-9808-48bf-a230-eba11e372253",
      "name": "付箋12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1520,
        -64
      ],
      "parameters": {
        "color": 5,
        "width": 400,
        "height": 880,
        "content": "## 💡 PRO TIPS & CUSTOMIZATION\n\n**Easy Customizations:**\n\n**1. Add More CRMs**\n- Salesforce: Use HTTP Request node\n- Pipedrive: Native node available\n- Zoho CRM: Native node available\n\n**2. Customize Email Content**\n- Edit email nodes directly\n- Add property photos\n- Include market stats\n- Add agent bio/headshot\n\n**3. Adjust Timing**\n- Change Wait node durations\n- Day 2 SMS → Day 1?\n- Test what works best\n\n**4. Lead Scoring Adjustments**\n- Modify scoring in Parse node\n- Add new criteria\n- Change threshold values\n\n**5. Add More Touchpoints**\n- Day 10: Final check-in\n- Day 30: Monthly market update\n- Clone Wait → Email → Log pattern\n\n**6. Error Handling**\n- Add Slack notifications\n- Email alerts for failures\n- Retry logic for API errors\n\n**7. Reporting Dashboard**\n- Connect Google Sheets to Data Studio\n- Create conversion funnel reports\n- Track touchpoint effectiveness"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "f8b4dbf0-111e-4324-bcdc-a168e15d79c3": {
      "main": [
        [
          {
            "node": "af2b0a12-b231-4e74-b988-51b3a909ab6d",
            "type": "main",
            "index": 0
          },
          {
            "node": "37eea75a-1562-40b9-b5e8-b9f86b9dd804",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5ca2bf5a-57a8-4972-9300-10b95c5d4a86",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "819cec37-f9d3-4362-81d9-9e7153483b2a": {
      "main": [
        [
          {
            "node": "7df4434d-196d-465f-8f84-2c790e9fbe23",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3369be2a-2dd5-489c-9b75-90827583c441": {
      "main": [
        [
          {
            "node": "d4e56171-d817-479c-802e-dd6c9131fff3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d4e56171-d817-479c-802e-dd6c9131fff3": {
      "main": [
        [
          {
            "node": "3540a701-4bdb-4e0f-ba3f-9e793294c47e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5ca2bf5a-57a8-4972-9300-10b95c5d4a86": {
      "main": [
        [
          {
            "node": "23890819-d826-4c9a-9391-3755eada8049",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cd4c3e51-cdb3-4869-9357-89fd3113130d": {
      "main": [
        [
          {
            "node": "4bb2f67f-a640-4daf-850e-0c6ac7c206a1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0d1452f4-6e0c-4e1b-b99b-847fc966afc0": {
      "main": [
        [
          {
            "node": "cd4c3e51-cdb3-4869-9357-89fd3113130d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "26b97759-43bd-4046-a118-8ea7df44471f": {
      "main": [
        [
          {
            "node": "c06c92c0-ddf0-490a-b846-b8ba32ba51fe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "af2b0a12-b231-4e74-b988-51b3a909ab6d": {
      "main": [
        [
          {
            "node": "0c10f03a-1bd4-42aa-b2cb-db1442bf603f",
            "type": "main",
            "index": 0
          },
          {
            "node": "b7e1cdb0-507d-4ddd-8fb5-58f2b3fec618",
            "type": "main",
            "index": 0
          },
          {
            "node": "26b97759-43bd-4046-a118-8ea7df44471f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b84af1e1-e49f-4fa9-8ec2-1d3b6b9cbd81": {
      "main": [
        [
          {
            "node": "f8b4dbf0-111e-4324-bcdc-a168e15d79c3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b7e1cdb0-507d-4ddd-8fb5-58f2b3fec618": {
      "main": [
        [
          {
            "node": "c06c92c0-ddf0-490a-b846-b8ba32ba51fe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "306d7ce6-9e54-49a0-8fbd-5ace7fab8d18": {
      "main": [
        [
          {
            "node": "b84af1e1-e49f-4fa9-8ec2-1d3b6b9cbd81",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c06c92c0-ddf0-490a-b846-b8ba32ba51fe": {
      "main": [
        [
          {
            "node": "819cec37-f9d3-4362-81d9-9e7153483b2a",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "7df4434d-196d-465f-8f84-2c790e9fbe23": {
      "main": [
        [
          {
            "node": "3369be2a-2dd5-489c-9b75-90827583c441",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0c10f03a-1bd4-42aa-b2cb-db1442bf603f": {
      "main": [
        [
          {
            "node": "c06c92c0-ddf0-490a-b846-b8ba32ba51fe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3540a701-4bdb-4e0f-ba3f-9e793294c47e": {
      "main": [
        [
          {
            "node": "0d1452f4-6e0c-4e1b-b99b-847fc966afc0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

SignSnapHome、Discord、Twilioを使ったオープン-house潜在顧客管理の自動化
SignSnapHome、Discord、Twilioを使ってオープンハウスリード管理を自動化
If
Code
Twilio
+
If
Code
Twilio
13 ノードKaden Reese
コンテンツ作成
コーチの募集・入社ガイダンス automatique(自動化)
SMS、Twilio、Google スプレッドシートを使って30日間のコンサルティング研修を自動化
If
Set
Code
+
If
Set
Code
36 ノードRonnie Craig
コンテンツ作成
詐欺防止型リードキャプチャ・育成千リードシステム
AIによるスコアリング、テーブル追跡、マルチチャネルアラートを使って詐欺対策リードをキャプチャーし育成
If
Set
Code
+
If
Set
Code
28 ノードJitesh Dugar
コンテンツ作成
09 - リードプロフィール強化ツール
自動化されたリード情報の豊富さとパーソナライズされたアウトレーシュ:HubSpot、Phantombuster、GPT
If
Set
Code
+
If
Set
Code
30 ノードAvkash Kakdiya
リードナーチャリング
AI駆動型動画制作&Instagram/TikTok/YouTubeへの自動アップロード
クラウドドライブからAI駆動の動画作成およびInstagram、TikTok、YouTubeへのアップロード
If
Set
Code
+
If
Set
Code
53 ノードDevCode Journey
コンテンツ作成
Instagramの趨勢電卓ブックからSEOコンテンツを生成して保存(SharePoint/Drive/Dropbox)
GPT-4o、FAL AI、複数ストレージによるトレンドの自動SEOコンテンツ生成
If
Set
Code
+
If
Set
Code
47 ノードplemeo
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数32
カテゴリー2
ノードタイプ12
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Kaden Reese

Kaden Reese

@kadenreese

I 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で表示

このワークフローを共有

カテゴリー

カテゴリー: 34