Skip to content

After this module you can catch deals going cold before they're lost: every weekday, each salesperson gets a short, prioritized list of their quiet deals with a follow-up email ready to send.

What it does

Every weekday at 8 AM the workflow pulls open deals from HubSpot, compares each deal's days without activity to a limit per pipeline stage (e.g. 3 days after a contract is sent, 7 days when qualifying), and ranks the stale ones by urgency (days overdue × deal size). Each deal gets a follow-up draft, from a template or written by AI, and each owner gets one digest.

The same logic is exposed as POST /webhook/deals/stale-check with { deals: [...], now?, ai? }, so you can test it deterministically, or feed deals from any CRM (Pipedrive, GoHighLevel, a spreadsheet).

Flow

Weekdays 8 AM ─┐                         ┌─(schedule)→ Get HubSpot Deals → Map HubSpot Deals ─┐
Stale Check API┴→ Settings → Deals from API? ─(API)→ Has deals[]? → Deals from Request ───────┴→ Find Stale Deals → Any Stale?
                                                         └→ 400                                                       │
     ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
     ├yes→ Use AI? ─yes→ Draft Follow-up (AI) → Attach AI Drafts ─┐
     │             └no─→ Template Drafts ─────────────────────────┴→ Group by Owner → Called via API? → Collect Owners → Respond
     │                                                                                              └→ Send Nudges (Exercise 1)
     └no─→ (API) Respond Nothing Stale

Verification status (n8n 2.43.6)

  • API path: 15/15 checks with assets/sample-deals.json (closed and recent deals skipped, per-stage limits, owner grouping, urgency order, pipeline-at-risk totals, template drafts, empty result, 400).
  • AI drafts: need an OpenAI credential (WITH_CREDS=1 ./test/test.sh).
  • HubSpot path: the node renders as Deal → Get Many with the deal properties set, and needs a HubSpot Service Key (private app) credential. The mapping handles both HubSpot property shapes, but it has not run against a live HubSpot account.

Files

File Tier Purpose
lesson.md Free Step-by-step build + HubSpot setup
workflow/starter.json Free Triggers, both deal sources, validation
workflow/learner.json Learner Finished nudger
workflow/code/ Learner Readable copies of the Code nodes
assets/sample-deals.json Learner Test pipeline with known answers
exercises.md Learner Practice tasks
solutions.md Learner Exercise solutions
notes.md Private Learning log
sell/ Private Offer, video script, blog post