Suivi automatisé des journées portes ouvertes immobilières avec SignSnapHome, HubSpot et Twilio
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 32 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, Twilio. Automatisation du suivi des journées portes ouvertes immobilières avec SignSnapHome, HubSpot et Twilio
- •Clé API HubSpot
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (32)
Catégorie
{
"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": "Analyser les données 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": "Email disponible ?",
"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": "Envoyer l'email de remerciement",
"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": "Enregistrer dans la feuille principale",
"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": "Créer/Mettre à jour le contact 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": "Synchroniser avec 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": "Synchroniser avec 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": "Éligible au suivi ?",
"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": "Attendre 2 jours",
"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": "Envoyer le SMS de suivi (Jour 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": "Enregistrer l'activité 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": "Attendre 3 jours supplémentaires",
"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": "Envoyer l'email de mise à jour marché (Jour 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": "Enregistrer l'activité email",
"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": "Attendre 2 derniers jours",
"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": "Créer la tâche de suivi (Jour 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": "Enregistrer l'email manquant",
"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": "Enregistrer dans la feuille d'erreurs",
"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": "Note adhésive",
"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": "Note adhésive1",
"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": "Note adhésive2",
"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": "Note adhésive3",
"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": "Note adhésive4",
"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": "Note adhésive5",
"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": "Note adhésive6",
"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": "Note adhésive7",
"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": "Note adhésive8",
"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": "Note adhésive9",
"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": "Note adhésive10",
"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": "Note adhésive11",
"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": "Note adhésive12",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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 👇🏻
Partager ce workflow