Triage Mailshake replies into HubSpot and Slack every 15 minutes

Every 15 minutes, sort fresh Mailshake replies by intent, push hot ones into HubSpot with a suggested next step, and alert your sales channel in Slack.

Agentic Task
MailshakeHubSpotSlack BotSalesMarketingNotifications & AlertsFeedback TriageData Sync
PromptCreate

Build me an agent workflow that triages new replies to my Mailshake campaigns every 15 minutes and routes them into HubSpot and Slack. Trigger: cron, every 15 minutes.

On each run, call Mailshake's List Replies Activity filtered to the last 15 minutes across all my campaigns. For each reply, read the body and classify the intent into exactly one of: interested, question, objection, not-now, out-of-office, unsubscribe. Be conservative. If the reply is ambiguous, prefer question over unsubscribe, and never pause a recipient unless the opt out is unambiguous.

For interested and question replies, do all of the following. First, use HubSpot Search Contacts to look up the sender by email. If a contact exists, use HubSpot Update Contact to move the lifecycle stage forward (for example, subscriber or lead becomes marketingqualifiedlead, and marketingqualifiedlead becomes salesqualifiedlead). If no contact exists, use HubSpot Create Contact with the sender's email and any name available from the reply, and set lifecycle stage to marketingqualifiedlead. Then use HubSpot Create Note associated with that contact, containing the full reply body and a short AI drafted follow-up the rep can send. Finally, post a Slack message via Slack Bot Send a Message to my sales channel that includes the prospect's email, a one line summary of the reply, the suggested follow-up, and a link to the HubSpot contact record.

For unsubscribe replies and clearly negative replies (hard objections such as "stop emailing me", "remove me", "take me off your list"), call Mailshake Pause Recipient on the campaign the reply came from so no further messages are sent, and then use HubSpot Create Note on the contact (creating the contact first via Create Contact if they do not exist) recording the outcome and the reply text. Do not post anything to Slack for these.

For out-of-office replies, extract the return date if present and use HubSpot Update Contact to record it on the contact (create the contact via Create Contact if they do not exist). Skip Mailshake pausing and skip the Slack alert. For not-now replies, treat similarly to out-of-office: log a HubSpot note capturing the requested timing but do not pause and do not alert Slack.

Inputs I should be able to configure: the Slack channel to alert, the HubSpot lifecycle stage transitions, and whether to auto pause on hard objections in addition to explicit unsubscribes (default off). The sales channel is the only Slack destination. Only ever pause a recipient once per reply. The judgement should always err on the side of keeping the recipient in the campaign so we never silently drop a real opportunity.

Additional information

What does this prompt do?
  • Reads the last 15 minutes of Mailshake replies across your campaigns and classifies each one as interested, question, not now, out of office, or unsubscribe.
  • For interested and question replies, updates the matching HubSpot contact or creates a new one, attaches a note with the reply and a drafted follow-up, and posts a heads up to your sales Slack channel with a link to the record.
  • For unsubscribes and clearly negative replies, pauses the recipient in Mailshake so no more emails go out, and logs the outcome as a note in HubSpot.
  • Leans conservative on the read, so a genuine interested reply is never treated as an opt out.
What do I need to use this?
  • A Mailshake account with access to your reply activity and permission to pause recipients on a campaign.
  • A HubSpot login with rights to read, create, and update contacts and to attach notes.
  • A Slack workspace and a channel your sales team watches for hot replies.
How can I customize it?
  • Change how often it runs. Every 15 minutes is a good default for daytime hours, but you can slow it down for nights and weekends.
  • Point the alert at a different Slack channel or route by campaign, region, or rep.
  • Tune the intent labels or which ones trigger a pause. For example, you can stop auto pausing on soft objections and route those to a rep instead.

Frequently asked questions

Will this pause someone who just asked a normal question?
No. The agent leans conservative and only pauses on clear unsubscribes or hard opt outs. Questions and objections stay active in the campaign and get surfaced to your sales channel instead.
What happens if the person who replied is not already in HubSpot?
The agent creates a new HubSpot contact from their reply email and name, then attaches the reply and a drafted follow-up as a note on that new record.
Does the Slack message include a suggested reply?
Yes. Each alert for an interested or question reply includes the prospect's email, a one line summary of what they said, a short follow-up your rep can copy and send, and a link straight to the HubSpot record.
Can I run this less often than every 15 minutes?
Yes. You can change the schedule to every 30 minutes, hourly, or business hours only. The agent always looks back over the same window it just waited, so nothing is missed.
What if the reply is an out of office?
The agent notes the return date on the HubSpot contact so your rep knows when to try again, and skips the Slack alert so the channel stays focused on live opportunities.

Stop losing hot Mailshake replies in the shared inbox.

Connect Mailshake, HubSpot, and Slack once, and Geni triages every reply every 15 minutes so your reps only see the ones worth acting on.