Text stalled HubSpot deal owners on iMessage every weekday

By General Input

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.

Integrations

  • HubSpot
  • Sendblue
  • Slack Bot

Type

Agentic Task

Categories

  • Sales

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.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery boardLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts fromLinkedIn Ads budget pacing dashboard for every client account