Re-engage stalled Quo SMS threads with personalized follow-ups

By General Input

Every Monday at 9am, an agent re-reads your Quo texts, spots the ones that went quiet, checks HubSpot, and sends a short, personal nudge from the same number the rep used.

Integrations

  • Quo
  • HubSpot

Type

Agentic Task

Categories

  • Sales

Build me an agent workflow that re-engages stalled Quo SMS threads every Monday at 9am.

Trigger: cron, every Monday at 9am in the org's local timezone.

What the agent should do on each run:

1. Call Quo "List Conversations" scoped to the last 30 days across all of the org's Quo phone numbers. For each conversation, remember which Quo phone number it belongs to so we can later reply from that same number.

2. For each conversation, call Quo "List Messages" to read the full thread. Classify the thread as stalled if either (a) the prospect's most recent message asked a question and no rep has replied, or (b) the rep sent the last message and it has been more than 5 business days with no response. Skip threads that are clearly resolved (an explicit thanks or confirmation from the prospect after the last rep message), threads where the prospect asked to stop, and threads shorter than 2 messages total.

3. For each stalled thread, take the counterparty phone number and call HubSpot "Search Contacts" filtered on the phone and mobilephone properties (E.164 format) to find the matching contact. Request lifecyclestage, hs_lead_status, deal associations, and any do-not-contact flag your account uses (hs_email_optout, or a custom property like sms_opt_out if present). If no contact is found, skip the thread. If the contact has do-not-contact set, skip. If the contact was texted, called, or noted in the last 3 days, skip (to avoid double-touching).

4. For contacts with associated deals, call HubSpot "Get Deal" (or "Search Deals" with an IN filter on the associated deal ids) to pull dealstage, dealname, amount, and closedate. Classify the contact as: open opportunity (deal is in an active stage), paying customer (closedwon or lifecyclestage=customer), closed lost (closedlost), or cold/unknown. Skip closed lost contacts and skip contacts whose only recent HubSpot activity is a resolved support ticket.

5. Rank the remaining stalled threads: open opportunity first, then paying customer, then warm lifecycle stages (marketingqualifiedlead, salesqualifiedlead, opportunity), then everyone else. Hard cap the outbound list at 20 threads per run.

6. For each selected thread, draft a short, natural-sounding SMS (1 to 3 sentences, no marketing tone, no emoji unless the original thread had them) that references what was actually said in the last few messages AND the contact's current status. Examples: reference a demo they booked, a quote or number that was mentioned, a specific product they asked about, or the fact that they're already a customer. Never fabricate details the thread doesn't support. Sign it with the rep's first name if the last rep message on the thread was signed.

7. Send the SMS via Quo "Send Text Message" using the exact Quo phone number the rep originally texted from on that conversation (not a shared or default number). To value = the counterparty number in E.164.

8. After each successful send, call HubSpot "Create Note" associated to the contact. The note body must include: the outbound message text verbatim, the Quo phone number it was sent from, the rep name (if inferable), a one-line reason the agent chose this contact ("stalled 7 days after quote sent", "prospect asked about pricing, never got reply"), and a timestamp. This is the audit trail reps rely on.

9. At the end of the run, produce a short summary: how many conversations were scanned, how many were classified as stalled, how many were skipped and why (broken down: no HubSpot match, do-not-contact, closed lost, recent touch, resolved), and how many texts were actually sent.

Guardrails to bake in and never remove:

- Hard cap of 20 outbound texts per run. This is not a soft target.

- Never send from a shared or arbitrary Quo number. Always match the number the rep originally used on that thread.

- Never text a closed lost contact, an opt-out, a do-not-contact, or someone whose only open thread is a resolved support ticket.

- Never send if there is no HubSpot contact match for the phone number.

- Every send must be mirrored to HubSpot as a note containing the outbound text verbatim, so a rep can audit exactly what went out.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it