Integrations
Integrations connect Speechlytics to the systems where calls are recorded or reviewed. They remove manual uploads and can return completed insights to the originating platform.
| Integration | Direction | What it does |
|---|---|---|
| Microsoft Teams | Inbound | Imports recorded Teams meetings for selected users. |
| Aircall | Inbound + write-back | Imports call recordings and posts the call summary back to Aircall as a comment. |
| FrontSpin | Inbound | Imports dialer recordings. |
| 3CX | Inbound | Imports recordings from your 3CX recording archive when calls end, matching each reported call to its archived file. |
| HubSpot | Outbound | Logs calls, their recordings and summaries on the HubSpot CRM timeline, associated with the contact matched by phone number. |
| SFTP imports | Inbound | Collects recordings from your SFTP server every hour. |
| Account webhook | Outbound | Posts call results to your own endpoint. |
How integrations are enabled
Provider integrations are enabled in two steps:
- Entitlement. Speechlytics grants the integration to your account.
- Configuration. The integration is configured with your provider credentials, saved, and switched on. It stays off until it is explicitly enabled, so saving credentials never starts importing by surprise.
Each integration shows a status of Not configured, Disabled or Enabled, when it last synchronized, and the last error if a synchronization failed.
Share credentials only through the approved secure channel. Do not place secrets in support tickets, documentation, source control or client-side code.
Inbound recording flow
Inbound integrations combine immediate event delivery with an hourly synchronization:
- Each integration has its own webhook URL, shown in its configuration once saved, in the form
https://<api-host>/api/v1/webhooks/<provider>/<integration-id>, where<provider>isaircall,frontspinorthreecx. You register it in the provider. Microsoft Teams subscriptions are registered automatically. - Events are verified with the integration's webhook secret before anything is imported: Aircall and FrontSpin sign each event, 3CX sends the secret itself, and Teams echoes it back as the subscription's client state. Events for an integration that is switched off, or no longer granted to the account, are acknowledged and ignored.
- The hourly synchronization catches events that were delayed or missed. It looks back from the last successful synchronization (or 24 hours for a new integration).
- The provider's call or recording id (for 3CX, the recording's file name) is stored as the call's External Id and prevents duplicates, whichever path imported it first.
- Every call delivered by a provider event, and every hourly synchronization, is recorded in the account's audit log.
An imported recording behaves like any other call: it uses the account's pre-processing, welcome-message removal, sensitive-content protection, keywords, summaries, analytics, custom questions and agent attribution, and it counts against the account's minutes.
Outbound flow
Outbound integrations run automatically as Speechlytics reports on each call:
- Aircall-sourced calls get their summary posted back to Aircall as a comment, once a summary exists. This is best-effort.
- With HubSpot enabled, the call is logged in HubSpot once. HubSpot failures are retried and recorded as the integration's last error.
Outbound failures never block the call itself.
Troubleshooting
When reporting an integration problem, provide the provider name, approximate call time, external call id, account name, and whether the call exists in the provider.
| Symptom | Useful checks |
|---|---|
| A recording did not arrive | Confirm the provider completed the call and made the recording available. Check the integration is Enabled and has no last error. |
| A call arrived late | Immediate delivery failed and the hourly synchronization recovered it. Check the webhook is registered in the provider. |
| A call appears twice | Confirm the provider did not assign different recording ids to the same conversation. |
| Nothing is imported after setup | The integration was saved but not switched on, or the account's minutes are exhausted. |
| Calls arrive without an agent | The provider did not send agent details for that call. |