Back to docs
Integrations

The agent calls your tools.

Every integration is wired per-account, never via the model. The agent picks which tool to call based on your system prompt and the conversation; we resolve credentials at call time from your account's integration config.

How credentials work

You connect an integration once in the dashboard (sign in with the provider, install an app, or paste an API key, depending on the provider). Credentials are stored encrypted and tied to your account, not exposed to the model and not visible to anyone calling the agent.

When the agent invokes a tool — say, send_sms — the tool runs server-side, looks up your account's SMS sender via integration_resolver.get_integration_for_agent(agent_id), and uses those credentials. The model only ever sees “tool succeeded” or “tool returned X”.

The LLM cannot fabricate credentials. Even if a malicious caller got the model to say “send SMS from +1 555 1234”, the tool ignores the LLM-supplied sender and uses what's on file.

CRMs

Connect your CRM once and every call your team or your agent handles shows up in it — with an AI summary, the caller matched to their record, and (for HubSpot, Salesforce, Odoo and Zoho CRM) a dialer inside the CRM so your team can call without switching tabs.

What every CRM connection includes

  • One connection for the whole team. A business admin connects the CRM once. One CRM account, org or database belongs to one ReasonVoice business.
  • Calling seats. The admin syncs CRM users and approves who can call from Account → Calling Seats. Users without a seat can request one.
  • Automatic call logging. Every call is logged to the CRM — including missed calls and voicemails — with an AI summary and structured details: intent, outcome, key details (dates, times, names, amounts), next steps, and flags like callback requested, urgent or upset caller. If the summary finishes after the call is logged, the same CRM record is updated. Failed logs retry automatically.
  • Caller identification. Incoming calls are matched to the CRM contact or lead, with a link to open the record.
  • CRM tools for your AI agent. During a call the voice agent can look up and create contacts and leads.
  • No extra passwords for teammates. Inside the CRM dialer, teammates sign in through the CRM itself — the CRM confirms who they are. A calling seat is required.

Each connection has three switches: Log calls, Include AI summary, and Include full transcript. The transcript is off by default.

If your calls may contain patient health information, leave Include full transcript off so full conversations aren't copied into your CRM.

HubSpot

Connection: Live

Connect

  1. In ReasonVoice, open Integrations → Connect CRM and click Connect on HubSpot.
  2. Sign in to HubSpot and approve access.
  3. Sync your HubSpot users and approve calling seats under Account → Calling Seats.

Calling from inside the CRM

Beta
ReasonVoice appears as a calling provider behind HubSpot's Call button on contact, company and deal records. Outgoing and incoming calls happen in HubSpot's calling window, with the caller's record opened.

Full HubSpot setup guide — every step, what we read and write, and what to do when something stops working.

Where calls are logged: A call on the contact's timeline. Calling seats, AI summaries, caller identification and agent tools work as described in What every CRM connection includes.

Salesforce

Connection: Live

Connect

  1. In ReasonVoice, open Integrations → Connect CRM and click Connect on Salesforce.
  2. Sign in to Salesforce and approve access.
  3. Sync your Salesforce users and approve calling seats under Account → Calling Seats.

Calling from inside the CRM

Beta

A Lightning Phone utility (Open CTI softphone): click-to-dial on phone fields, and incoming calls open the Contact or Lead when answered. To set it up, a Salesforce admin imports the ReasonVoice call center definition and adds the softphone to the app's utility bar.

The softphone is currently enabled per org — contact us to enable it for yours. Call logging, caller identification and agent tools work as soon as you connect.

Where calls are logged: A completed call Task on the Contact or Lead. Callers who aren't in Salesforce yet become a new Lead. Calling seats, AI summaries, caller identification and agent tools work as described in What every CRM connection includes.

Odoo 18 & 19

Connection: Live

Connect

The ReasonVoice app works with Odoo 18 and 19, Community and Enterprise, self-hosted or on Odoo.sh.

  1. Install the ReasonVoice app in your Odoo database.
  2. In Odoo, open Settings → ReasonVoice and click Connect.
  3. Approve the connection in ReasonVoice — no URL, database or API key to type.
  4. Sync your Odoo users and approve calling seats under Account → Calling Seats.

Calling from inside the CRM

Beta
A phone button in Odoo's top bar, click-to-dial on phone fields, and incoming calls that open the matching contact or lead.
Odoo Online (Standard plan) can't install third-party apps. You can still connect from ReasonVoice with Advanced: connect with an API key on the Connect CRM page — that gives you call logging, AI summaries, contact lookup and agent tools. Calling from inside Odoo needs the app.

Where calls are logged: A note in the contact's chatter, or on their open lead. Calling seats, AI summaries, caller identification and agent tools work as described in What every CRM connection includes.

Zoho CRM

Connection: Live

Connect

  1. In ReasonVoice, open Integrations → Connect CRM and click Connect on Zoho CRM.
  2. Sign in to Zoho and approve access. Any Zoho data center works.
  3. Sync your Zoho users and approve calling seats under Account → Calling Seats.

Calling from inside the CRM

Beta
A telephony widget behind Zoho CRM's phone icon, with click-to-dial and incoming calls. Calling from Zoho CRM requires Zoho CRM Professional edition or higher.

Where calls are logged: A Call record on the Contact or Lead. Missed calls and voicemails are logged as Missed calls. Calling seats, AI summaries, caller identification and agent tools work as described in What every CRM connection includes.

Built-in CRM

Live

Don't use an external CRM? ReasonVoice includes contacts, leads, tasks and a call log out of the box — no setup and nothing to connect.

More CRMs are on the way. If yours isn't listed, tell us which one — or use a Custom REST tool in the meantime.

Payments

Stripe

Live

Charge cards, issue refunds, create + send invoices, manage subscriptions — all called by the agent mid-conversation when your prompt asks it to.

process_paymentrefund_paymentcreate_invoicesend_invoicecreate_subscriptioncancel_subscription

Scheduling

Google Calendar

Live

Check availability, book appointments, reschedule, cancel. Connect via OAuth from the dashboard; the agent reads the connected calendar without seeing the token.

check_availabilitybook_appointmentreschedule_appointmentcancel_appointment

Telephony / SMS

Your own carrier

Live

Bring your existing carrier account for phone numbers and SMS. Agent uses your provisioned numbers as the SMS sender; we never proxy through our own number unless you ask.

inbound_callsoutbound_callssend_smsget_sms_status

ReasonVoice phone lines

Live

Buy a managed number from the dashboard and it is wired to your agent in about a minute. Managed numbers stream wideband audio end-to-end, which is why latency on them is lower than on a bring-your-own carrier number.

inbound_callsoutbound_callssend_smsmanaged_provisioning

Notifications

Slack

Live

Post to a channel or DM a person from the agent. Useful for a "tell sales when a hot lead calls" style of automation, or pinging on-call when the agent transfers a difficult call.

send_slack_messagesend_slack_dm

Microsoft Teams

Live

Post messages via incoming-webhook URLs. Same pattern as Slack — agent fires the notification, your team sees it instantly.

send_teams_message

Push notifications

Live

Send FCM / APNS pushes to a device token. Common pattern: agent texts a confirmation and pushes the same content to your staff app.

send_push_notification

Messaging

WhatsApp

Live

Send WhatsApp messages from your registered Business channel (Meta Cloud API or Twilio WhatsApp). Templates supported for outbound sessions.

send_whatsappsend_whatsapp_template

Communication

Email

Live

Send transactional email from your verified sender domain. Custom fields on the agent map directly to email templates so the LLM never composes the body from scratch when it doesn’t need to.

send_emailsend_template_email

Webhooks

Custom REST

Live

Define an HTTP tool with URL, method, headers, body template, and parameter schema. The agent calls it like any other tool. Use this when you have an internal API the agent needs to hit — booking system, inventory check, ERP — and we don’t have a first-party integration yet.

custom_webhook

Don’t see what you need?

If your stack isn't in the list, you have two options:

  • Custom REST tool. Define one in the dashboard with a URL, headers, and a parameter schema. The agent calls it like a first-party integration.
  • Ask the founder. If we're hearing about a missing integration repeatedly we usually build it. Get in touch.