What connects
Finn integrations are configured in the dashboard under Settings → Integrations. There is no API endpoint for creating or authorizing an integration. Each integration appears as a tile with a status label: Not connected, Connected, or Needs attention.
| Category | Options | Auth method |
|---|---|---|
| CRM | HubSpot, Salesforce | OAuth |
| CRM | Pipedrive | API token |
| Calendar | Google Calendar, Microsoft Outlook / Microsoft 365 | OAuth, direct booking |
| Calendar | Calendly, Cal.com | Link-send only, not direct booking |
| Notifications | Slack | OAuth (Add to Workspace) |
| Anything else | Webhooks, REST API | Signing secret / API key |
Connections are reversible. You disconnect from the same screen you used to connect.
CRM
A CRM connection does two things: pulls contacts in as audiences so you do not upload CSVs by hand, and pushes call outcomes back so your sales team sees results without leaving the CRM.
HubSpot. Connect, authorize in HubSpot, then click Choose Lists and tick the lists you want as audiences. Set a sync schedule. Every 15 minutes suits active campaigns, daily suits slower lists. Then map fields: which HubSpot property is the name, which is the phone, which is the country code. Extra properties can be mapped to custom fields so the agent can use them mid-call (see agents-variables).
Enable Outcome Sync to write back. Each completed call becomes a HubSpot engagement, and post-call analysis fields become property updates. See post-call-analysis for what those fields contain.
Salesforce. Same flow. The setup asks whether to connect Production or Sandbox — picking the wrong one is the most common Salesforce mistake, and the symptom is an empty list picker. The connecting user needs "API Enabled" and Read/Write on Leads, Contacts, and any Custom Objects you intend to map. Custom objects are supported as a mapping target instead of standard Lead/Contact.
Pipedrive. Uses an API token, not OAuth. Generate it in Pipedrive under Settings → Personal preferences → API, then paste it into the Pipedrive tile. Rest of setup matches HubSpot.
If your CRM is not listed, use webhooks or the REST API instead. A bridge tool that can receive HTTP works as well.
Calendar
An agent cannot book appointments without a calendar connected.
Google Calendar and Microsoft Outlook / Microsoft 365 both authorize via OAuth. After authorizing, pick which calendar to book into — most accounts have several, and booking into the wrong one is silent. Then set availability rules:
| Rule | Effect |
|---|---|
| Working hours | Window in which bookings are allowed |
| Buffer between events | Minimum gap between consecutive appointments |
| Max events per day | Optional cap |
Once saved, a "Book Calendar" task or workflow action in any agent uses this calendar.
Calendly and Cal.com behave differently. They do not support direct booking the way Google and Outlook do. Instead the agent says it will send a booking link, and an SMS or email goes out with the URL. That is a worse caller experience — the appointment is not confirmed on the call. Connect Google or Outlook directly if you have the choice.
Helpdesk and everything else
Finn does not ship a dedicated helpdesk integration. For Zendesk, Freshdesk, Intercom, or an internal ticketing system, you have two paths.
Push outcomes out. Add a webhook endpoint under Settings → Integrations → Webhooks and subscribe to call.analyzed. Every analyzed call posts JSON to your URL, and you create the ticket on your side. See webhooks and webhook-events for payload shape, and webhook-security for verifying the signing secret.
Pull data in mid-call. A different mechanism: add an Action → Webhook node in the agent's workflow. The agent calls your endpoint during the conversation and the response becomes available as workflow variables. Use this when the agent needs live state that Finn does not hold, such as an order status or a ticket's current assignee.
curl -X POST https://your-app.example.com/lookup \
-H "Content-Type: application/json" \
-d '{"phone_number": "+15551234567"}'
{ "order_status": "shipped", "tracking": "1Z999AA10123456784" }
Your endpoint's latency is inside the caller's silence. A slow lookup is heard as dead air, so keep it fast and return something usable on failure rather than erroring.
Slack
Add to Workspace, authorize, pick a channel, choose notification types: deployment launched, deployment completed with summary stats, deployment failed, daily morning summary, and threshold alerts. Multiple channels can be connected with different notification types each.
Failure modes
| Symptom | Cause |
|---|---|
| CRM list picker is empty | Wrong Salesforce environment, or the connecting user lacks object read permission |
| Contacts sync but calls never place | Phone or country-code field not mapped |
| Bookings land nowhere visible | Wrong calendar selected during setup |
| Webhook events stop | Endpoint returning 5xx. Check the Delivery Log under Settings → Integrations → Webhooks |
Failed webhook deliveries retry with backoff for up to 24 hours and each attempt is recorded in the Delivery Log with its error. See webhook-retries.
For programmatic control that no integration covers, generate a key under Settings → Integrations → API Keys and use the REST API. See authentication and api-conventions.