AI & Automation

Marq - HubSpot Lead Recovery Automation

A daily automation that finds demo leads who never got sales follow-up, so reps can re-engage them before they go cold.

Client: Marq

Key Metrics

2,700+ Demo Meetings Scanned
8 Filter Criteria
Daily Run Frequency
12 Lead Buckets Planned
n8n workflow diagram for HubSpot lead recovery automation

Project Details

Marq's sales development rep had no systematic way to find contacts who attended a product demo but never got follow-up from a rep. I built a daily n8n automation that searches HubSpot for demo meetings, identifies contacts with no subsequent sales activity, filters out spam and test data, and outputs qualified leads to a Google Sheet with Slack notifications, giving the rep a ready-to-work list every morning.

Challenge

Marq runs hundreds of product demos each year, but not every demo attendee gets timely follow-up. Contacts fall through the cracks when reps get busy, change roles, or simply miss them. The sales development rep responsible for outbound re-engagement had no reliable way to find these missed contacts at scale, and was manually combing through HubSpot records one by one.

The data was messy too. HubSpot's meeting outcomes were inconsistently marked (only 38 of 2,700+ demos were flagged as "completed"), test contacts and personal email addresses cluttered the CRM, and some contacts had auto-created deals that made them look active when they weren't.

Approach

  • Aligned with the sales development rep on "no follow-up" criteria over multiple iterations, refining filters based on his review of sample contact lists
  • Explored the HubSpot data model to identify which properties reliably indicate follow-up activity vs. automated CRM actions
  • Designed a multi-step pipeline: meeting search with pagination, contact association, batch property fetch, multi-layer filtering, deduplication, and output
  • Built a sample query script first to validate filters against real data before committing to the n8n workflow
  • Iterated on filter logic three times based on rep feedback, including removing a deal-based filter that was eliminating nearly every contact due to auto-created deals, and handling mismarked meeting outcomes (no-shows marked as canceled)

How It Works

An n8n workflow runs daily at 6 AM MT:

  1. Meeting search - queries HubSpot for all Demo-type meetings from the past 12 months (older than 30 days), paginating through the full result set
  2. Contact association - fetches the contact linked to each meeting via HubSpot's associations API, deduplicating contacts who attended multiple demos
  3. Property batch fetch - pulls contact properties in batches of 100: lifecycle stage, last contacted date, sales email activity, sequence enrollment, and deal count
  4. No-follow-up filter - flags contacts where lifecycle stage is MQL or SQL, no sales emails were replied to, and the contact isn't currently in an active sequence
  5. Spam and test data filter - excludes personal email domains (gmail, yahoo, hotmail, etc.), fake names (numeric prefixes, consonant clusters), known test domains, and Marq internal addresses
  6. Deduplication - checks against previously surfaced contacts to avoid re-adding them
  7. Output to Google Sheets - appends new qualified contacts to a shared spreadsheet the rep reviews each morning
  8. Slack notification - sends the rep a DM with the count of new contacts added

Deliverables

  • Production-ready n8n workflow with daily cron trigger, HubSpot API integration, multi-layer filtering, and Google Sheets output
  • 8 filter criteria refined through 3 rounds of sample review with the sales development rep
  • Sample query script (bash + HubSpot API + jq) for rapid filter prototyping and data validation
  • Slack DM notification for the rep when new contacts are surfaced
  • Documented 12-bucket lead segmentation framework for future expansion beyond the MVP "leads never followed up with" bucket
  • Google Sheets interim output (designed for easy migration to HubSpot static lists once API write permissions are granted)

Results

  • Surfaces qualified unfollowed demo leads daily, replacing a manual process that wasn't consistently happening
  • Scans 2,700+ demo meetings and filters down to actionable contacts matching all criteria
  • Filter logic validated across three sample rounds with the sales rep, catching edge cases like mismarked no-shows and auto-created deals
  • Built as the first of 12 planned lead buckets, with the same n8n pattern reusable for abandoned trials, event leads, lapsed contacts, and more
  • Google Sheets output works as a functional interim solution while HubSpot API write permissions are pending approval

Tools Used

n8n, HubSpot API v3 (Search, Associations, Contacts Batch Read), Google Sheets, Slack API, Claude Code

n8n HubSpot automation marketing-ops Google Sheets Slack sales

Get Started

Looking to Hire?

I bring 15+ 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.