Proactive Voice Outreach Agent
A scheduled outreach system that reviews your HubSpot pipeline, identifies deals and contacts that need follow-up, and initiates outbound voice calls through ElevenLabs when conditions are met. An MCP server provides the voice agent with limited, call-scoped tools so it can look up deal context and schedule follow-ups during live conversations. A separate skillset gives the scheduler agent the ElevenLabs calling abilities and the minimal CRM reads it needs to decide who to call. A third skillset gives the sales team full CRM access for pipeline review - complete separation of concerns across all three surfaces.
Most voice agent demos stop at inbound. A customer calls in, the agent answers, tools fire, everyone is impressed. But the harder and more valuable problem is outbound - an agent that decides when to call, who to call, and what to say, all without a human pushing a button.
This blueprint solves that problem by combining three ChatBotKit primitives: a trigger integration that wakes an agent on a schedule, CRM abilities that let the agent inspect pipeline state, and the ElevenLabs SIP trunk call ability that lets the agent initiate a real phone call.
How it works
A Scheduler Agent runs every hour via a trigger integration. On each run it:
- Searches HubSpot deals that are stalled, overdue, or in a stage that requires follow-up.
- Fetches the associated contact details including phone number.
- Evaluates whether a voice call is warranted based on deal value, days since last activity, and stage.
- If conditions are met, initiates an outbound call via
elevenlabs/sip-trunk-call/start, passing the contact phone number and injecting CRM context (deal name, value, stage) as dynamic variables so the ElevenLabs voice agent has full context. - Logs the outreach attempt to a shared workspace file for audit and deduplication.
- Updates the HubSpot contact with a note recording that an automated call was placed.
The ElevenLabs voice agent handles the live conversation. It is configured on the ElevenLabs side with a prompt that references the dynamic variables injected at call time. ChatBotKit does not control the voice conversation itself - it controls when and why the call happens, and what context the voice agent receives.
Separation of concerns
The system uses three independent skillsets. The Voice Agent MCP Toolkit powers the MCP server that the ElevenLabs voice agent connects to during live calls. It provides limited, read-only deal and contact lookups plus a calendar scheduling ability - just enough for the voice agent to be useful on a call without exposing full CRM write access. The Voice Calling Toolkit powers the Scheduler Agent. It contains the ElevenLabs call ability with a hardcoded agent ID, read-only CRM lookups for deciding who to call, and workspace logging for audit and deduplication. The Pipeline CRM Toolkit powers the Pipeline Assistant bot with full CRM read/write access for the sales team.
The MCP layer
The MCP server exposes only the Voice Agent MCP Toolkit - a limited set of read-only tools the ElevenLabs voice agent can call during live conversations. It intentionally does not include calling abilities, CRM write access, or workspace operations. The voice agent gets just enough context to have a productive conversation without overstepping.
Safeguards
The scheduler writes a call log to the shared workspace before placing each call. On subsequent runs it reads the log to avoid calling the same contact twice within a configurable cooldown window. The backstory instructs the agent to never call outside business hours and to cap outbound calls per run.
Extending the system
- Add
slack/message/sendto notify your sales team when a call is placed. - Add
sendgrid/email/sendto send a follow-up email after each call. - Swap HubSpot for Salesforce or Pipedrive by changing the CRM abilities.
- Add a second trigger on a different schedule for different deal stages.
- Connect a Telegram or Slack integration to the scheduler bot so you can ask "who did you call today?" conversationally.
Backstory
Common information about the bot's experience, skills and personality. For more information, see the Backstory documentation.
Skillset
This example uses a dedicated Skillset. Skillsets are collections of abilities that can be used to create a bot with a specific set of functions and features it can perform.
Look Up Deal
Retrieve deal details so the voice agent can reference the deal context during a live call.Look Up Contact
Retrieve contact details so the voice agent can reference customer information during a live call.Schedule Follow-Up
Schedule a follow-up event in Google Calendar when the customer agrees to a next step during the call.Search Deals
Search HubSpot deals with filters to find pipeline opportunities that need follow-up.Fetch Deal
Retrieve full details for a specific HubSpot deal by ID.Search Contacts
Search HubSpot contacts by filters to find associated contact details for deals.Fetch Contact
Retrieve full details for a specific HubSpot contact by ID including phone number and recent activity.Update Contact
Update a HubSpot contact record, such as adding a note about an outbound call attempt.Read Outreach Log
Read call logs and outreach summaries to review what the scheduler has done.Search Deals
Search HubSpot deals to find pipeline opportunities that need outbound follow-up calls.Fetch Contact
Retrieve contact details including phone number to determine whether an outbound call should be placed.Log Call Note
Update a HubSpot contact with a note recording that an automated outbound call was placed.Start Outbound Call
Initiate an outbound voice call through ElevenLabs SIP trunk using the hardcoded outreach agent. The only dynamic input is the destination phone number and optional CRM context passed as dynamic variables.Read Outreach Log
Read call logs and outreach summaries from the shared workspace for deduplication and reporting.Write Outreach Log
Write call log entries, outreach summaries, and deduplication state to the shared workspace.
Terraform Code
This blueprint can be deployed using Terraform, enabling infrastructure-as-code management of your ChatBotKit resources. Use the code below to recreate this example in your own environment.
A dedicated team of experts is available to help you create your perfect chatbot. Reach out via or chat for more information.