FollowUpBoss + Gmail: lead follow-up that sticks
Leads come in, you mean to follow up, and then the day happens. By the time you remember, the hot one is cold, and the “easy win” is suddenly a lost deal.
This FollowUpBoss automation hits real estate agents first, honestly. But marketing managers and small sales teams feel the same drag when follow-up depends on memory and manual checks. The goal is simple: every new lead gets the right outreach, on the right channel, without you babysitting the process.
You’ll see how this workflow pulls new leads from FollowUpBoss, cleans and validates contact data, then sends personalized email and/or text (including WhatsApp) via Gmail and Twilio while keeping your records tidy for reporting.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: FollowUpBoss + Gmail: lead follow-up that sticks
flowchart LR
subgraph sg0["Scheduled Automation Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Automation Start", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Retrieve Previous Run"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Store Current Run Time"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Recent Leads"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Missing Contact Info", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Valid Contacts", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Lead Records", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Message", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/twilio.svg' width='40' height='40' /></div><br/>Send Text Outreach"]
n9@{ icon: "mdi:cog", form: "rounded", label: "Delay Processing", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/twilio.svg' width='40' height='40' /></div><br/>Send WhatsApp Alert"]
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Full Contact Outreach", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch Email Only Path", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Batch SMS Only Path", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Lead Fields", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Lead Fields B", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Lead Fields C", pos: "b", h: 48 }
n17@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Message B", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Email & Phone", pos: "b", h: 48 }
n9 --> n6
n18 --> n11
n18 --> n4
n7 --> n8
n17 --> n12
n14 --> n7
n15 --> n17
n16 --> n10
n6 --> n5
n0 --> n1
n1 --> n3
n8 --> n11
n10 --> n13
n3 --> n9
n5 --> n18
n4 --> n12
n4 --> n13
n12 --> n2
n12 --> n15
n13 --> n2
n13 --> n16
n11 --> n2
n11 --> n14
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n4,n5,n18 decision
class n3 api
class n1,n2 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n8,n10 customIcon
Why This Matters: Leads Go Cold When Follow-Up Is Manual
Most “lead follow-up systems” break in boring places. The lead lands in FollowUpBoss, someone skims it on mobile, and then it’s a coin flip whether the next step happens. You also waste time doing tiny admin tasks that feel safe but don’t close deals: fixing phone formats, checking if the email is real, hunting duplicates, deciding whether to text or email, then trying to remember what you sent. And if you get the channel wrong (texting a bad number, emailing a blank address), you lose time and momentum.
The friction compounds. Here’s where it breaks down in real life.
- New leads get treated unevenly because follow-up depends on who saw the notification first.
- Phone numbers and emails arrive messy, so outreach fails silently or you spend a few minutes cleaning every record.
- Duplicates sneak in, which means two messages go out (awkward) or the “real” lead gets ignored.
- Channel decisions take mental energy when you’re busy, so you default to “I’ll do it later” and later never comes.
What You’ll Build: Automated Multi-Channel Lead Outreach
This workflow runs on a schedule, checks the last time it ran, and pulls only the newest leads from FollowUpBoss using an HTTP request. From there it validates the basics before any message goes out: contact records are filtered, email and phone fields are checked, and obvious bad data gets routed away from the “send” steps. Then it makes a practical decision about how to reach each lead. If both email and phone look usable, it sends a personalized Gmail email and a Twilio text. If the phone is invalid, it takes the email-only path. If the email is missing, it switches to SMS or WhatsApp. Finally, it stores the current run time so the next run only processes fresh leads, keeping the process consistent and repeatable.
The workflow starts with scheduled lead retrieval from FollowUpBoss. It cleans and validates contact info, then routes each person into the correct outreach path (email, SMS, WhatsApp, or a combination). After messages are sent, processing is batched and the run is recorded so you don’t re-contact the same lead.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say your team gets 40 new leads a week. Manually, it’s easy to spend about 5 minutes per lead checking for missing info, cleaning phone/email, deciding a channel, then sending messages. That’s roughly 3 hours of repetitive work, plus the follow-up you forget when things get busy. With this workflow, the “human time” is closer to 10 minutes to set it up and spot-check a sample; the scheduled run, validation, batching, and sending happens in the background.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- FollowUpBoss for your lead source and contact fields.
- Gmail to send personalized email outreach.
- Twilio (SMS/WhatsApp) to message leads by phone.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Intermediate. You’ll connect accounts, add credentials, and sanity-check the routing logic for your data.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
Scheduled lead pull from FollowUpBoss. The workflow runs on a schedule trigger, looks up the previous run time, then fetches only the most recent leads via an HTTP request so you don’t reprocess old contacts.
Cleaning and validation. Leads get filtered and checked for missing details. Email and phone validation happens before any message is sent, which prevents wasted sends and reduces “bounce” chaos in your reporting.
Smart routing to the right channel. Using If/Switch logic, contacts with good email and phone go down the full path (Gmail plus Twilio SMS). Missing email routes to SMS/WhatsApp. Invalid phone routes to email-only. Simple. Effective.
Send, then track the run. Gmail and Twilio dispatch the outreach, and batching keeps the workload stable if you have lots of leads. At the end of each path, the workflow stores the current run time for the next scheduled run.
You can easily modify the message copy and channel rules to match your brand voice and compliance needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the workflow to run on a fixed schedule so it can pull only newly created leads since the last run.
- Add the Scheduled Automation Start node as the trigger.
- Set Rule to an interval of
minutesand Minutes Interval to3. - Connect Scheduled Automation Start to Retrieve Previous Run.
Step 2: Connect Follow Up Boss API
Use the last run timestamp to fetch only recent leads from the Follow Up Boss API.
- In Retrieve Previous Run, keep the JavaScript as provided to read
lastRunfrom workflow static data. - Configure Fetch Recent Leads with URL set to
=https://api.followupboss.com/v1/people?createdAfter={{$json["lastRun"]}}. - Set Authentication to
genericCredentialTypeand Generic Auth Type tohttpBasicAuth. - Credential Required: Connect your
httpBasicAuthcredentials in Fetch Recent Leads. - Connect Fetch Recent Leads to Delay Processing and set Amount to
6.
⚠️ Common Pitfall: If lastRun isn’t stored yet, Retrieve Previous Run defaults to 15 minutes ago—this is expected on first run.
Step 3: Set Up Lead Validation and Routing
Split leads into individual records, validate contact data, and route leads to the correct outreach path.
- In Split Lead Records, set Field To Split Out to
people. - In Filter Valid Contacts, set conditions for Email Status and Phone Status with expressions
={{ $json.emails[0].status }}and={{ $json.phones[0].status }}to equalValid. - Configure Validate Email & Phone to require both
={{ $json.emails[0].status }}and={{ $json.phones[0].status }}equalValid. - In Check Missing Contact Info, keep the condition
={{ $json.emails[0].status }}equalsValidto route to email-only or SMS-only paths. - Note that Check Missing Contact Info outputs to both Batch Email Only Path and Batch SMS Only Path, depending on the condition result.
⚠️ Common Pitfall: Ensure your API response includes emails and phones arrays—missing arrays can cause the status checks to fail.
Step 4: Map Lead Fields for Outreach
Normalize lead data into consistent fields before sending emails and messages.
- In Map Lead Fields, set firstName to
={{ $json.firstName }}and lastName to={{ $json.lastName }}. - Set Source to
={{ $if($json.source === "<unspecified>", "Manually/Other", $json.people[0].source) }}in Map Lead Fields. - Map Email to
={{ $json.emails[0].value }}and Phone Number to={{ $json.phones[0].value }}in Map Lead Fields. - Repeat the same mapping structure in Map Lead Fields B and Map Lead Fields C for the email-only and SMS-only paths.
- Batch Full Contact Outreach outputs to both Store Current Run Time and Map Lead Fields in parallel to update the last run timestamp while preparing outreach data.
Step 5: Configure Outreach Actions
Send emails, SMS, and WhatsApp messages based on validated lead data.
- In Dispatch Email Message, set Send To to
={{ $json.Email }}, Subject toFollowing Up!, and Message to your email body. - Credential Required: Connect your
gmailOAuth2credentials in Dispatch Email Message. - In Send Text Outreach, set To to
={{ $('Batch Full Contact Outreach').item.json.phones[0].value }}, From to[YOUR_ID], and Message to your SMS copy. - Credential Required: Connect your
twilioApicredentials in Send Text Outreach. - In Send WhatsApp Alert, set To to
=+1{{ $('Batch Full Contact Outreach').item.json.phones[0].value }}and enable To WhatsApp. - Credential Required: Connect your
twilioApicredentials in Send WhatsApp Alert. - Configure Dispatch Email Message B for the email-only path with Send To set to
={{ $json.Email }}and connect gmailOAuth2 credentials.
Use different message templates in Dispatch Email Message and Dispatch Email Message B to tailor outreach for different lead types.
Step 6: Test and Activate Your Workflow
Verify the workflow end-to-end, then switch it on for production use.
- Click Execute Workflow to run Scheduled Automation Start manually with test data.
- Confirm that Fetch Recent Leads returns new leads, then watch the flow through Split Lead Records and Validate Email & Phone.
- Verify that emails, SMS, and WhatsApp messages are sent from Dispatch Email Message, Send Text Outreach, and Send WhatsApp Alert.
- Check that Store Current Run Time updates the stored timestamp on completion.
- Toggle the workflow to Active to run it every
3minutes in production.
Troubleshooting Tips
- FollowUpBoss credentials can expire or need specific permissions. If things break, check your FollowUpBoss API access (and the HTTP Request node’s auth settings) first.
- If you’re using Wait nodes or external sending, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About an hour if your accounts and API keys are ready.
No. You’ll mostly connect accounts, paste API keys, and adjust the message templates.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage and Twilio messaging costs.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. Most teams swap the Gmail content in the “Dispatch Email Message” nodes, adjust the If/Switch rules that decide email vs SMS/WhatsApp, and update the “Map Lead Fields” steps to match their FollowUpBoss fields. You can also turn off WhatsApp entirely by disabling the “Send WhatsApp Alert” node. If your compliance rules are strict, add an opt-out line and route “do not contact” leads to a no-send path.
Usually it’s the FollowUpBoss API token or permissions used in the HTTP Request node. Regenerate the token, confirm it can read people/leads, and update it in n8n. If the workflow suddenly returns zero leads, also check the “last run” logic, because a bad stored timestamp can make your query too restrictive.
A lot, as long as you batch it. n8n Cloud Starter gives you a monthly execution limit, while self-hosting has no execution cap (your server is the limit). This workflow uses Split in Batches nodes, so it can chew through big lead lists without timing out; just keep an eye on provider limits from Gmail and Twilio if you scale up fast.
It depends. n8n is usually better for this kind of branching logic (email-only vs SMS-only vs both), batching, and tracking a “last run” state without paying extra for every path. Zapier or Make can be quicker for a simple two-step “new lead → send email,” but this workflow has more moving parts: validation, routing, and multi-channel sends. If you’re going to run this hourly or for high lead volume, self-hosted n8n is often the most cost-stable choice. Talk to an automation expert if you want help choosing.
Once this is live, follow-up becomes a system instead of a daily scramble. The workflow handles the repetitive checks and sending so you can focus on the conversations that actually close.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.