High-intent CallRail buying signals to HubSpot and Slack

Every 15 minutes during business hours, scan completed CallRail calls, flag the high-intent ones from the transcript, and alert HubSpot and Slack with the next step.

Agentic Task
CallRailHubSpotSlack BotSalesOperationsNotifications & AlertsLead EnrichmentResearch & Monitoring

Build an agent workflow that detects high-intent buying conversations in CallRail and fans the alert out to HubSpot and Slack. It should run on a cron every 15 minutes during business hours (default Monday to Friday, 8am to 6pm in the user's timezone, ask me if unsure).

On each run, use CallRail's List All Calls to pull completed inbound calls created since the last successful run (keep a watermark and overlap by a couple of minutes so nothing slips through). For each candidate, call Retrieve a Single Call with the fields query parameter set to include transcription, keywords, tags, and call highlights. CallRail only returns transcripts when fields=transcription is explicitly requested, and transcription must already be enabled per tracking number, so surface that as a setup requirement in the run notes when a call comes back with no transcript.

For every call with a transcript, the agent reads the conversation and decides whether it is a high-intent buying call. The signals to look for: a decision maker on the line, a stated budget or timeline, an explicit ask for a demo, pricing, a quote, or a proposal, frustration with a current vendor or a named competitor, and urgency language like "this week", "by end of quarter", or "ready to move". A call must hit at least one strong signal to qualify. Routine calls (existing customer support, wrong number, vendor pitches, voicemails with no content) must be skipped so the Slack channel stays signal-heavy. The agent should write a 2 to 3 sentence summary of the call plus a short bulleted list of the exact buying signals that triggered the alert, and a single recommended next step (return call, send proposal, schedule demo).

For each hot call, normalize the caller's phone number to digits-only and use HubSpot Search Contacts to find a matching contact by phone. If a contact is found, use HubSpot Create Note to attach a note to that contact with the AI summary, the triggering signals, the tracking number that was dialed, and a link to the call in CallRail. Then use HubSpot Create Task to create a task associated to the same contact with a same-day due date, the recommended next step as the subject, and a one-line body. Assign the task to the owner of the contact's primary deal when one exists, otherwise to the contact owner. If no HubSpot contact matches, skip the HubSpot writes but still post to Slack and flag in the message that the caller is not yet in the CRM.

Then use Slack (bot) Send a Message to post to the sales channel (ask me which channel to use on first run). The message should include the caller's name and phone number, the tracking number they dialed, a one-paragraph summary, the bulleted buying signals, the recommended next step, and a link back to the call in CallRail. Use mrkdwn formatting and keep it tight enough to read on a phone.

Dedupe by CallRail call_id so the same call never alerts twice across runs, even if the watermark window overlaps or the agent re-processes a batch. Persist the set of processed call_ids in the agent's memory or workflow state.

At the end of every run, log a one-line summary: how many calls were scanned, how many had transcripts, how many qualified as high intent, and how many were posted to HubSpot and Slack.

Additional information

What does this prompt do?
  • Reads new completed inbound calls from CallRail every 15 minutes during business hours and pulls each transcript and call highlights.
  • Uses AI to flag the calls that sound like real buying conversations, decision makers on the line, budget or timeline mentioned, demo or pricing requests, frustration with a competitor, or urgent language.
  • Finds the caller in HubSpot by phone number, adds a clean note with the call summary and the buying signals that triggered the alert, and creates a same-day task with a concrete next step for the deal owner.
  • Posts a signal-heavy alert to your sales Slack channel with the caller, the tracking number they dialed, a short summary, the recommended next move, and a link back to the call in CallRail. Routine calls are skipped and each call is alerted only once.
What do I need to use this?
  • A CallRail account with call transcription turned on for the tracking numbers you want monitored.
  • A HubSpot account where contacts have phone numbers and your sales team owns deals.
  • A Slack workspace and the channel you want hot-call alerts posted to.
How can I customize it?
  • Tighten or loosen the buying signals you want to flag, for example require an explicit demo or pricing request before alerting.
  • Change the cadence and business hours, for example every 10 minutes or only during your team's working window.
  • Swap the Slack channel, change who the HubSpot task gets assigned to, or adjust the due date and next-step phrasing.

Frequently asked questions

How does it decide a call is high intent?
An AI reads the full transcript and call highlights and looks for clear buying signals like a decision maker on the line, a budget or timeline, an explicit demo or pricing request, frustration with a competitor, or urgent language. Routine support or informational calls are skipped so your Slack channel stays signal-heavy.
Do I need CallRail transcription turned on?
Yes. Call transcription has to be enabled on each tracking number you want monitored, otherwise there is nothing for the AI to score. You can run it on a single high-priority tracking number first and expand from there.
What happens if the caller is not in HubSpot yet?
The Slack alert still goes out so your team can act, and the prompt can be customized to either create a new HubSpot contact from the call data or just leave the CRM update for a human.
Will the same call ever alert twice?
No. Every call is tracked by its CallRail call ID, so once a hot call has been processed it is skipped on every future run.
Can it post to more than one Slack channel or to a specific rep?
Yes. You can fan the alert out to multiple channels, send a DM to the deal owner, or route different tracking numbers to different channels by tweaking the prompt.

Stop letting hot inbound calls cool off in a transcript log.

Connect CallRail, HubSpot, and Slack once, and Geni triages every new inbound call and pings your sales team in minutes.