Text stalled HubSpot deal owners on iMessage every weekday
Each weekday at 9am, sweep HubSpot for deals stuck more than 14 days, text each owner a personalized iMessage nudge, and post a team digest to Slack.
Build me an agent workflow that nudges deal owners over iMessage about stalled HubSpot deals every weekday morning.
Trigger: cron. Run every weekday at 9am in my local timezone.
Steps the agent should take on each run:
1. Call HubSpot Search Deals filtered to open pipeline stages (exclude closed-won and closed-lost) where the last modified date is more than 14 days ago. Pull dealname, amount, dealstage, hubspot_owner_id, hs_lastmodifieddate, and the associated primary contact id. Page through results until done.
2. For each stalled deal, call HubSpot Get Owner to resolve hubspot_owner_id into a name and email, and HubSpot Get Contact for the primary contact id to pull the prospect's first name, last name, and company. The rep's mobile number is not stored in HubSpot, so the workflow should be configured with a lookup table mapping HubSpot owner email to a Sendblue-ready E.164 phone number; ask me for that mapping at setup.
3. Rank the stalled deals by a combination of deal amount and stall risk (days since last update, plus how late-stage the deal is). Keep the top results per owner; cap at 3 nudges per owner per day so no one gets spammed.
4. Suppress duplicates. Before sending, check whether the same deal id was already nudged in the last 7 days (persist a small list of recently-nudged deal ids in workflow memory) and skip if so.
5. For each surviving stalled deal, have the agent reason about what specifically to say and draft a one or two sentence iMessage that names the prospect by first name, the dollar amount, the stage the deal is parked in, and a concrete next-step suggestion (book a 15 min call, send a recap, loop in the champion, etc.). Write personalized copy per deal; do not template. Then call Sendblue Send Message to the rep's phone number with that text.
6. After all iMessages are sent, post one team digest to Slack via Slack Bot Send a Message in the configured channel. The digest should include: total stalled deals found, total at-risk pipeline value (sum of amounts), and the top three owners by at-risk pipeline value with their stalled count and dollar total. Use Slack mrkdwn (single-asterisk bold).
Setup inputs to collect from me: the HubSpot pipeline(s) to include, the stall threshold in days (default 14), the per-owner daily nudge cap (default 3), the owner-email-to-phone-number mapping, the Sendblue from_number, and the Slack channel id for the team digest.
Behavior notes: phone numbers must be E.164 (e.g. +14155551234). Mark deals as nudged after a successful Sendblue send; do not mark them if the send fails so they get retried tomorrow. If a rep has no mapped phone number, skip the iMessage for that deal but still count it in the Slack digest, and flag the missing-mapping owners at the bottom of the digest.
Additional information
What does this prompt do?
- Sweeps your HubSpot pipeline every weekday morning for open deals that haven't moved in more than 14 days.
- Ranks the stalled list by deal value and stall risk so the biggest at-risk pipeline gets attention first.
- Texts each deal owner a one or two sentence iMessage that names the prospect, the dollar amount, the stage, and a concrete next step.
- Posts a team digest to Slack with the total stalled count, total at-risk pipeline value, and the top three owners who got pinged.
- Suppresses repeat nudges so the same deal does not get texted two weeks in a row.
What do I need to use this?
- A HubSpot account with read access to deals, contacts, and owners.
- A Sendblue account with a phone line that can send iMessage, and the mobile numbers for each rep you want texted.
- A Slack workspace and a channel where the team digest should land.
How can I customize it?
- Change the stall threshold (14 days by default) or the run time and timezone to match how your team works.
- Narrow the sweep to specific pipelines, deal stages, owners, or a minimum deal value so only the deals that matter get touched.
- Swap the team digest channel, change how many top owners get called out, or fall back to SMS for reps who do not use iMessage.
Frequently asked questions
Do my reps need iPhones for this to work?
What counts as a stalled deal?
Will the same deal get texted every single day?
Can I send the nudge to the rep's manager instead of the rep?
Will this work on HubSpot's free plan?
Stop letting deals quietly die in the pipeline.
Connect HubSpot, Sendblue, and Slack once, and Geni texts your reps every weekday with the stalled deals worth saving.