HubSpot to Salesloft Demo Follow-up Pipeline
A daily automation that finds demo leads who never got sales follow-up and adds them back into a sales cadence so reps can re-engage them at scale.
Client: Marq
Project Details
Marq runs hundreds of product demos each year, but not every attendee gets follow-up. Contacts fall through the cracks when reps get busy or change roles, and there was no way to find them at scale. I built a daily automation that scans 2,700+ demo meetings in HubSpot, identifies contacts with no subsequent sales activity, filters out noise, and auto-enrolls them in a Salesloft cadence attributed to the original AE - so the contact hears back from the rep they already met.
Challenge
The sales development rep responsible for outbound re-engagement was manually combing through HubSpot records to find missed contacts, one by one. The CRM data was messy: only a fraction of demos were properly flagged as "completed," test contacts and personal email addresses cluttered the pipeline, and auto-created deals made inactive contacts look like they were already being worked. A simple query wouldn't cut it. The cadence side had its own gotcha: Salesloft blocks email sends if a referenced custom field is empty, which would have stalled the automation silently.
Approach
I started by aligning with the sales rep on what "no follow-up" actually means in their CRM, then built a sample query script to validate filters against real data before committing to the full workflow. The filter logic went through three rounds of iteration based on his review of sample contact lists - including catching that a deal-based filter was eliminating nearly every contact due to auto-created deals, and that no-shows were being mismarked as canceled.
The n8n workflow runs daily at 6 AM MT. It searches HubSpot for all completed demo meetings from the past 12 months, fetches associated contacts, pulls their properties in batches, then runs two filter layers: a no-follow-up check (lifecycle stage, sales email activity, sequence enrollment) and a spam filter (personal email domains, fake names, test data, internal addresses). Deduplicated results are then enrolled in a multi-step Salesloft cadence.
The cadence enrollment layer handles three things that came up in production:
- AE attribution. I bulk-load the HubSpot owner-to-email map and the Salesloft user map at the start of each run, then resolve each contact's original demo owner. The cadence email sends from that AE's account, not from a generic BDR - so the contact hears back from someone they already met.
- Custom field pre-write. Salesloft blocks email sends if a referenced custom field is empty, which I caught during early testing. I write a default value to the personalization field before enrollment, so the cadence never silently stalls. The same field is the future hook for AI-generated personalization copy.
- Membership history check. Before enrolling, I check the contact's full cadence history - if they were ever in this cadence, active or removed by the rep, we skip. So we never re-enroll someone the AE pulled out manually.
A Slack alert pings the BDR each morning with the count of new contacts added to the cadence.
This is designed as the first of 12 planned lead buckets. The same pattern - signal detection, filter, enrich, enroll, alert - is reusable for abandoned trials, event leads, lapsed contacts, and more.
Results
- Currently the highest-converting trigger in the BDR's outbound stack, with Salesloft-reported metrics well above cold-outbound baselines (30%+ open, 5%+ reply, 2.5%+ meeting-booked)
- Qualified unfollowed demo leads surfaced and enrolled daily, replacing a manual process that wasn't consistently happening
- 2,700+ demo meetings scanned and filtered down to actionable contacts through 8 criteria refined across 3 sample rounds
- Production gotchas caught and handled: mismarked no-shows, auto-created deals masking inactive contacts, the Salesloft empty-custom-field send block
- First of 12 planned lead buckets, with a reusable pattern for expanding coverage
Tools Used
n8n, HubSpot API v3 (Search, Associations, Contacts Batch Read, Owners), Salesloft API v2 (People, Cadence Memberships, Users), Slack API
Get Started
Looking to Hire?
I bring 19+ years of cross-functional experience to every role. Connect on LinkedIn to learn more.
Need a Consultant?
Whether it's a short sprint or a long-term engagement, I'm ready to help your team deliver better results.