This commit is contained in:
nusquama
2025-11-12 19:55:00 +01:00
parent 655ea9685b
commit 1ed332280f
@@ -0,0 +1,460 @@
Automate Real Estate Open House Follow-ups with SignSnapHome, HubSpot, and Twilio
https://n8nworkflows.xyz/workflows/automate-real-estate-open-house-follow-ups-with-signsnaphome--hubspot--and-twilio-9256
# Automate Real Estate Open House Follow-ups with SignSnapHome, HubSpot, and Twilio
### 1. Workflow Overview
This workflow automates the follow-up process for real estate open house visitors captured via SignSnap Home. It integrates lead data into multiple CRMs (HubSpot, Follow Up Boss, Monday.com), logs activities in Google Sheets, and executes a timed 7-day communication sequence using emails and SMS powered by Twilio. The workflow is designed to qualify leads based on agent relationships and buyer agreements to optimize follow-up efforts and ensure compliance.
**Logical Blocks:**
- **1.1 Input Reception & Data Parsing:** Receives webhook data from SignSnap Home, extracts, enriches, and scores lead information.
- **1.2 Validation & Basic Follow-up:** Checks for valid email, sends an immediate thank-you email, logs leads to Google Sheets and CRMs.
- **1.3 Lead Qualification:** Determines which leads qualify for the full follow-up sequence based on agent/buyer agreement status.
- **1.4 Automated Follow-up Sequence:** For qualified leads, schedules and sends SMS on Day 2, market update email on Day 5, and creates a HubSpot task on Day 7.
- **1.5 Error Handling:** Logs leads missing emails into a dedicated Google Sheets error tab for review.
- **1.6 CRM Synchronization:** Updates or creates contacts in HubSpot, Follow Up Boss, and Monday.com with relevant lead data and notes.
---
### 2. Block-by-Block Analysis
#### 2.1 Input Reception & Data Parsing
- **Overview:**
Receives HTTP POST requests from SignSnap Home webhook, extracts visitor information, calculates lead score and status, and prepares enriched data for downstream processing.
- **Nodes Involved:**
- Webhook: SignSnap Home
- Parse SignSnap Data
- **Node Details:**
- **Webhook: SignSnap Home**
- **Type & Role:** Webhook node that triggers workflow on receiving POST data from SignSnap Home.
- **Configuration:**
- HTTP Method: POST
- Path: `signsnap-drip-crm`
- **Input/Output:** Receives raw JSON payload containing open house visitor data. Outputs raw data to next node.
- **Failure Cases:** Missed or malformed POST requests, webhook URL misconfiguration.
- **Notes:** The webhook URL must be configured in SignSnap Home integration settings.
- **Parse SignSnap Data**
- **Type & Role:** Code node that parses and enriches input data.
- **Configuration:** Custom JavaScript processes input JSON to extract fields such as email, names, phone, property address, visit date, agent status, rating, buyer agreement.
- Calculates a lead score (0-100) based on conditions: no agent +30, high rating +20, low rating -20, no buyer agreement +10.
- Assigns lead status: HOT, WARM, COLD.
- Determines qualification for follow-up sequence.
- Constructs a notes string summarizing key info.
- **Expressions/Variables:** Uses `$input.all()`, `$json` for data extraction and calculations.
- **Input/Output:** Takes webhook JSON, outputs enriched JSON with lead details and computed fields.
- **Failure Cases:** Missing or malformed fields, unexpected data types causing parsing errors.
---
#### 2.2 Validation & Basic Follow-up
- **Overview:**
Checks if the lead has a valid email; if yes, sends a thank-you email, logs lead to Google Sheets, and syncs with CRMs. If no email, logs the missing email error.
- **Nodes Involved:**
- Has Email? (IF)
- Send Thank You Email
- Log to Master Sheet
- Create/Update HubSpot Contact
- Sync to Follow Up Boss
- Sync to Monday.com
- Log Missing Email
- Log to Error Sheet
- **Node Details:**
- **Has Email?**
- **Type & Role:** IF node verifying presence of a non-empty email field.
- **Configuration:** Checks `$json.email` is not empty.
- **Input/Output:**
- True branch leads to email sending and CRM sync.
- False branch leads to logging missing email error.
- **Failure Cases:** Email field missing or empty.
- **Send Thank You Email**
- **Type & Role:** Email Send node sending immediate thank-you email to visitor.
- **Configuration:**
- To: lead email
- Subject: "Thank You for Visiting [Property]"
- HTML body includes personalized greeting with first name and property address.
- From email must be replaced with a valid sender address.
- **Failure Cases:** SMTP auth errors, invalid email format, blocked emails.
- **Log to Master Sheet**
- **Type & Role:** Google Sheets node appending lead info to "Lead Master Log" tab.
- **Configuration:**
- Appends columns: Email, Phone, Property, Names, Lead Score, Status, Follow-up qualification, Timestamp, etc.
- Uses Google Sheets service account OAuth2 credentials.
- Document and sheet IDs configured with target spreadsheet and tab.
- **Failure Cases:** Authentication errors, sheet permissions, rate limits.
- **Create/Update HubSpot Contact**
- **Type & Role:** HubSpot node to create or update contact record.
- **Configuration:**
- Uses HubSpot API token authentication.
- Sets contact properties: email, first name, last name, phone, notes.
- Lifecycle stage forced to 'lead'.
- **Failure Cases:** API token invalid, rate limits, contact conflicts.
- **Sync to Follow Up Boss**
- **Type & Role:** HTTP Request node posts lead data to Follow Up Boss API.
- **Configuration:**
- Basic Auth with API key as username, blank password.
- Body includes email, names, phone, source, notes.
- API endpoint: `https://api.followupboss.com/v1/people` (POST).
- **Failure Cases:** Auth failure, invalid API key, network errors.
- **Sync to Monday.com**
- **Type & Role:** Monday.com node creating a new board item with lead info.
- **Configuration:**
- Board ID and Group ID configured for "Open House Leads".
- Item name combines first name, last name, and property address.
- Requires Monday.com API token credentials.
- **Failure Cases:** Invalid board ID, API token issues, permission problems.
- **Log Missing Email**
- **Type & Role:** Set node to create error record with reason "No email" and guest name.
- **Configuration:** Assigns error_reason and guest_name variables.
- **Failure Cases:** None intrinsic, depends on input.
- **Log to Error Sheet**
- **Type & Role:** Google Sheets node appending error information to "Errors" tab.
- **Configuration:** Columns: Timestamp, Guest Name, Error Reason.
- **Failure Cases:** Similar to other Google Sheets nodes.
---
#### 2.3 Lead Qualification
- **Overview:**
Determines whether the lead qualifies for the full 7-day follow-up sequence based on agent relationship and buyer agreement.
- **Nodes Involved:**
- Qualifies for Follow-up? (IF)
- **Node Details:**
- **Qualifies for Follow-up?**
- **Type & Role:** IF node evaluating boolean `qualifiesForFollowUp` variable.
- **Configuration:** True if visitor has no agent or has agent but no signed buyer agreement.
- **Input/Output:**
- True branch proceeds to the follow-up sequence nodes.
- False branch ends workflow after CRM sync (no further follow-ups).
- **Failure Cases:** Incorrect or missing boolean value.
---
#### 2.4 Automated Follow-up Sequence
- **Overview:**
Executes a timed 7-day follow-up sequence for qualified leads including SMS, email, and task creation.
- **Nodes Involved:**
- Wait 2 Days
- Send SMS Follow-up (Day 2)
- Log SMS Activity
- Wait 3 More Days
- Send Market Update Email (Day 5)
- Log Email Activity
- Wait 2 Final Days
- Create Follow-up Task (Day 7)
- **Node Details:**
- **Wait 2 Days**
- **Type & Role:** Wait node delaying execution 2 days after initial trigger.
- **Failure Cases:** Workflow must be active; wait state persistence.
- **Send SMS Follow-up (Day 2)**
- **Type & Role:** Twilio node sending personalized SMS to leads phone number.
- **Configuration:**
- From: Twilio phone number (configured in node).
- Message includes personalized greeting, property name, invitation to reply, and STOP instructions for compliance.
- Uses Twilio credentials (SID, Auth Token).
- **Failure Cases:** Invalid phone number format, Twilio API errors, insufficient balance.
- **Log SMS Activity**
- **Type & Role:** Google Sheets node appending SMS activity log to "Follow-up Activity" tab.
- **Columns:** Timestamp, Contact Email, Name, Activity Type (SMS), Message ("Day 2 SMS"), Property, Notes.
- **Failure Cases:** Google Sheets permissions, API limits.
- **Wait 3 More Days**
- **Type & Role:** Wait node delaying another 3 days before next email.
- **Failure Cases:** Same as other wait nodes.
- **Send Market Update Email (Day 5)**
- **Type & Role:** Email Send node sending a market update email.
- **Configuration:**
- Subject: "Market Update"
- Personalized greeting by first name.
- Placeholder for custom message and sender name to be edited.
- From email to be configured.
- **Failure Cases:** SMTP issues, invalid email.
- **Log Email Activity**
- **Type & Role:** Google Sheets node logging email activity similar to SMS log.
- **Failure Cases:** Same as above.
- **Wait 2 Final Days**
- **Type & Role:** Wait node delaying 2 days to complete 7-day sequence.
- **Failure Cases:** As above.
- **Create Follow-up Task (Day 7)**
- **Type & Role:** HubSpot node creating a task associated with the contact for agent follow-up.
- **Configuration:** Uses HubSpot app token credentials.
- **Failure Cases:** API errors, permission issues.
---
#### 2.5 Error Handling
- **Overview:**
Captures and logs leads that do not have an email address for manual review.
- **Nodes Involved:**
- Log Missing Email
- Log to Error Sheet
- **Node Details:**
Covered above in Validation block.
---
#### 2.6 CRM Synchronization
- **Overview:**
Syncs lead data to three CRMs: HubSpot, Follow Up Boss, and Monday.com.
- **Nodes Involved:**
- Create/Update HubSpot Contact
- Sync to Follow Up Boss
- Sync to Monday.com
- **Node Details:**
Covered above in Validation block.
---
### 3. Summary Table
| Node Name | Node Type | Functional Role | Input Node(s) | Output Node(s) | Sticky Note |
|------------------------------|-----------------------|-----------------------------------------|----------------------------|---------------------------------------|-----------------------------------------------------------------------------------------------|
| Webhook: SignSnap Home | Webhook | Receive POST data from SignSnap Home | - | Parse SignSnap Data | See Sticky Note1: webhook trigger details |
| Parse SignSnap Data | Code | Parse and enrich lead data | Webhook: SignSnap Home | Has Email? | See Sticky Note2: data processing & lead scoring logic |
| Has Email? | IF | Check for valid email | Parse SignSnap Data | Log to Master Sheet, Send Thank You Email, or Log Missing Email | |
| Send Thank You Email | Email Send | Send immediate thank-you email | Has Email? (true) | - | |
| Log to Master Sheet | Google Sheets | Log lead info in master spreadsheet | Has Email? (true) | Create/Update HubSpot Contact | See Sticky Note9: Google Sheets structure and setup |
| Create/Update HubSpot Contact | HubSpot | Create or update contact in HubSpot | Log to Master Sheet | Qualifies for Follow-up? | See Sticky Note3: HubSpot integration setup |
| Sync to Follow Up Boss | HTTP Request | Sync lead to Follow Up Boss CRM | Log to Master Sheet | Qualifies for Follow-up? | See Sticky Note4: Follow Up Boss API setup |
| Sync to Monday.com | Monday.com | Create lead item in Monday.com board | Log to Master Sheet | Qualifies for Follow-up? | See Sticky Note5: Monday.com board setup |
| Log Missing Email | Set | Prepare error data for missing email | Has Email? (false) | Log to Error Sheet | |
| Log to Error Sheet | Google Sheets | Log leads missing email in error tab | Log Missing Email | - | See Sticky Note9: Google Sheets structure and setup |
| Qualifies for Follow-up? | IF | Determine if lead qualifies for follow-up| Create/Update HubSpot Contact, Sync to Follow Up Boss, Sync to Monday.com | Wait 2 Days (true), end (false) | See Sticky Note6: lead qualification logic |
| Wait 2 Days | Wait | Pause 2 days before sending SMS follow-up| Qualifies for Follow-up? (true) | Send SMS Follow-up (Day 2) | See Sticky Note10: 7-day follow-up sequence overview |
| Send SMS Follow-up (Day 2) | Twilio | Send Day 2 SMS follow-up | Wait 2 Days | Log SMS Activity | See Sticky Note8: Twilio SMS setup and compliance |
| Log SMS Activity | Google Sheets | Log SMS activity | Send SMS Follow-up (Day 2) | Wait 3 More Days | See Sticky Note9: Google Sheets structure and setup |
| Wait 3 More Days | Wait | Pause 3 days before sending market update email| Log SMS Activity | Send Market Update Email (Day 5) | See Sticky Note10: 7-day follow-up sequence overview |
| Send Market Update Email (Day 5)| Email Send | Send market update email | Wait 3 More Days | Log Email Activity | See Sticky Note10: 7-day follow-up sequence overview |
| Log Email Activity | Google Sheets | Log email activity | Send Market Update Email (Day 5) | Wait 2 Final Days | See Sticky Note9: Google Sheets structure and setup |
| Wait 2 Final Days | Wait | Pause 2 final days before creating task | Log Email Activity | Create Follow-up Task (Day 7) | See Sticky Note10: 7-day follow-up sequence overview |
| Create Follow-up Task (Day 7) | HubSpot | Create follow-up task in HubSpot | Wait 2 Final Days | - | See Sticky Note3: HubSpot integration setup |
| Sticky Note | Sticky Note | Setup instructions | - | - | Contains detailed setup and integration guidance |
| Sticky Note1 | Sticky Note | Webhook trigger description | - | - | Explains webhook URL setup and trigger |
| Sticky Note2 | Sticky Note | Data processing details | - | - | Details lead scoring and enrichment logic |
| Sticky Note3 | Sticky Note | HubSpot integration description | - | - | Explains HubSpot node setup and behavior |
| Sticky Note4 | Sticky Note | Follow Up Boss API setup instructions | - | - | Details API key setup and custom fields |
| Sticky Note5 | Sticky Note | Monday.com board setup instructions | - | - | Explains board and API token setup |
| Sticky Note6 | Sticky Note | Lead qualification logic | - | - | Explains qualification criteria and workflow branches |
| Sticky Note7 | Sticky Note | General node removal instructions | - | - | Advises on deleting unused nodes |
| Sticky Note8 | Sticky Note | Twilio SMS setup and compliance | - | - | Details SMS requirements and TCPA compliance |
| Sticky Note9 | Sticky Note | Google Sheets structure and setup | - | - | Detailed instructions for Google Sheets tabs and connection methods |
| Sticky Note10 | Sticky Note | 7-day follow-up sequence overview | - | - | Timeline and steps of the automated follow-up sequence |
| Sticky Note11 | Sticky Note | Troubleshooting common errors | - | - | Lists frequent issues and fixes |
| Sticky Note12 | Sticky Note | Pro tips and customization ideas | - | - | Suggestions for extending and customizing workflow |
---
### 4. Reproducing the Workflow from Scratch
1. **Create Webhook Node**
- Type: Webhook
- Name: "Webhook: SignSnap Home"
- HTTP Method: POST
- Path: `signsnap-drip-crm`
- Purpose: Receive POST requests from SignSnap Home open house sign-ins.
2. **Add Code Node to Parse Input**
- Type: Code
- Name: "Parse SignSnap Data"
- JavaScript: Extract fields (email, first_name, last_name, phone_number, openHouseTitle, submissionTimestamp, agent status, rating, buyer agreement).
- Calculate leadScore with given rules (base 50, +30 no agent, +20 rating≥4, -20 rating≤2, +10 no buyer agreement).
- Determine leadStatus (HOT ≥70, WARM ≥50, else COLD).
- Set qualifiesForFollowUp boolean accordingly.
- Output enriched JSON with all fields plus notes summary.
3. **Add IF Node to Check Email Presence**
- Type: IF
- Name: "Has Email?"
- Condition: `$json.email` is not empty.
4. **On True Branch: Send Thank You Email Node**
- Type: Email Send
- Name: "Send Thank You Email"
- To: `{{$json.email}}`
- From: Your verified sender email (e.g., YOUR_EMAIL@DOMAIN.COM)
- Subject: "Thank You for Visiting {{$json.propertyAddress}}!"
- HTML Body: Personalized greeting with first name and property address.
5. **Log Lead to Google Sheets Master Log**
- Type: Google Sheets
- Name: "Log to Master Sheet"
- Operation: Append
- Sheet: "Lead Master Log" tab in your configured Google Sheet
- Map columns: Email, Phone, Property, Last Name, Timestamp, First Name, Lead Score, Lead Status, Qualifies for Follow-up, etc.
- Use Google Sheets OAuth2 credentials with access to the sheet.
6. **Sync Lead to HubSpot**
- Type: HubSpot
- Name: "Create/Update HubSpot Contact"
- Authentication: OAuth2 or API Token
- Email: `{{$json.email}}`
- Additional fields: firstName, lastName, phoneNumber, membershipNote (notes)
- Lifecycle stage set to 'lead'.
7. **Sync Lead to Follow Up Boss**
- Type: HTTP Request
- Name: "Sync to Follow Up Boss"
- URL: `https://api.followupboss.com/v1/people`
- Method: POST
- Authentication: HTTP Basic Auth
- Username: Follow Up Boss API Key
- Password: blank
- Body Parameters: email, firstName, lastName, phones[0].value (phone), phones[0].type mobile, source, notes.
8. **Sync Lead to Monday.com**
- Type: Monday.com
- Name: "Sync to Monday.com"
- Board ID: Your Monday.com board ID for leads
- Group ID: e.g., "topics"
- Item Name: `{{$json.firstname}} {{$json.lastname}} - {{$json.propertyAddress}}`
- Authentication: Monday.com API token.
9. **On False Branch of Has Email? Node:**
- Add Set node "Log Missing Email" to assign `error_reason` = "No email" and `guest_name` = `{{$json.firstname}} {{$json.lastname}}`.
- Connect to Google Sheets node "Log to Error Sheet" appending to "Errors" tab with Timestamp, Guest Name, Error Reason.
10. **Add IF Node to Check Follow-up Qualification**
- Type: IF
- Name: "Qualifies for Follow-up?"
- Condition: `{{$json.qualifiesForFollowUp}}` is true.
11. **On True Branch, Add Wait Node (2 Days)**
- Type: Wait
- Name: "Wait 2 Days"
- Amount: 2 days.
12. **Send SMS Follow-up via Twilio**
- Type: Twilio
- Name: "Send SMS Follow-up (Day 2)"
- To: `{{$json.phone}}`
- From: Your Twilio SMS-enabled phone number
- Message: Personalized SMS including first name, property address, question prompt, STOP instruction.
- Setup Twilio credentials with SID and Auth Token.
13. **Log SMS Activity to Google Sheets**
- Type: Google Sheets
- Name: "Log SMS Activity"
- Append to "Follow-up Activity" tab
- Map columns for timestamp, contact email, name, activity type ("SMS"), message ("Day 2 SMS"), property, notes.
14. **Add Wait Node (3 More Days)**
- Type: Wait
- Name: "Wait 3 More Days"
- Amount: 3 days.
15. **Send Market Update Email**
- Type: Email Send
- Name: "Send Market Update Email (Day 5)"
- To: `{{$json.email}}`
- Subject: "Market Update"
- HTML Body: Personalized greeting with customizable message and sender name.
- From: Your verified sender email.
16. **Log Email Activity**
- Type: Google Sheets
- Name: "Log Email Activity"
- Append to "Follow-up Activity" tab with appropriate columns as for SMS log.
17. **Add Wait Node (2 Final Days)**
- Type: Wait
- Name: "Wait 2 Final Days"
- Amount: 2 days.
18. **Create Follow-up Task in HubSpot**
- Type: HubSpot
- Name: "Create Follow-up Task (Day 7)"
- Resource: Task
- Auth: HubSpot credentials
- Configure task assignment and priority as needed.
19. **On False Branch of Qualifies for Follow-up? Node:**
- No further action; workflow ends after CRM sync.
20. **Activate Workflow**
- Ensure the workflow is active/running in n8n.
21. **Configure Credentials:**
- HubSpot OAuth2 or API Token
- Follow Up Boss API Key (HTTP Basic Auth)
- Monday.com API Token
- Twilio SID & Auth Token
- SMTP email credentials
- Google Sheets OAuth2 or Service Account with access to the spreadsheet.
22. **Configure Google Sheets:**
- Create a Google Sheet with 3 tabs:
- "Lead Master Log"
- "Follow-up Activity"
- "Errors"
- Add column headers exactly as specified in Sticky Note9.
23. **Configure Webhook URL in SignSnap Home:**
- Copy webhook URL from "Webhook: SignSnap Home" node.
- Paste into SignSnapHome.com → Settings → Integrations for open house sign-ins.
24. **Update placeholders:**
- YOUR_EMAIL@DOMAIN.COM (email nodes)
- YOUR_TWILIO_PHONE_NUMBER (Twilio node)
- YOUR_MONDAY_BOARD_ID (Monday.com node)
- Google Sheet IDs or use manual selection in Google Sheets nodes.
---
### 5. General Notes & Resources
| Note Content | Context or Link |
|-----------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| Enhanced Multi-CRM + Auto Follow-up Workflow with SignSnap, HubSpot, Follow Up Boss, Monday.com, Twilio | Workflow purpose and setup overview (Sticky Note) |
| Webhook URL must be configured in SignSnap Home integration settings | SignSnapHome.com |
| Lead scoring logic: base 50, +30 no agent, +20 rating≥4, -20 rating≤2, +10 no buyer agreement | See Sticky Note2 |
| HubSpot OAuth2 or API Token required for contact creation/update | HubSpot API documentation |
| Follow Up Boss API key is used as HTTP Basic Auth username, password left blank | https://docs.followupboss.com |
| Monday.com board setup: create board with columns, get board ID, generate API token | https://developer.monday.com |
| Twilio SMS compliance: includes STOP instructions, consent via open house sign-in, activity logged | https://www.twilio.com/docs/sms |
| Google Sheets manual selection recommended for easier setup | See Sticky Note9 |
| 7-day follow-up sequence timeline: Day 0 thank-you email, Day 2 SMS, Day 5 market update email, Day 7 HubSpot task | See Sticky Note10 |
| Troubleshooting tips: check credentials, verify API keys, validate email/phone formats, enable workflow | See Sticky Note11 |
| Customization ideas: add more CRMs, customize content, adjust timing, add error alerts, reporting | See Sticky Note12 |
---
This document provides a comprehensive understanding of the workflow structure, logic, configurations, and setup instructions to enable reproduction, modification, and troubleshooting for advanced users and AI agents.