Integrations
The One Voice integrates with the rest of The One Stack and supports embedding in external applications via an SSO widget.
The One PSA
The PSA integration is the deepest integration Voice has with any other product.
What Flows
| Data | Direction | Details |
|---|---|---|
| Caller lookup | Voice ← PSA | When an inbound call arrives, Voice queries PSA for matching contacts by phone number |
| Open tickets | Voice ← PSA | The softphone screen pop shows open PSA tickets for the caller's company |
| Account status | Voice ← PSA | VIP, active/inactive status shown in the screen pop |
| Call history | Voice → PSA | Calls appear in the PSA contact's activity timeline |
| Call-to-ticket | Voice → PSA | Agents can create a PSA ticket directly from the softphone (one click) |
| Billing line items | Voice → PSA | When billing integration mode is Integrated, Voice sends pending charges to PSA for unified invoicing |
| AI sentiment feed | Voice → PSA | Post-call sentiment scores and action items are pushed to the PSA data feed endpoint |
Setup
- In the Voice dashboard, go to Settings → Integrations → PSA
- Enter the PSA API URL and PSA Integration Key
- Toggle Enable Screen Pop to show caller context in the softphone
- Toggle Enable Timeline to write call history back to PSA contact records
- Save
The PSA integration key is a service-to-service key (X-Integration-Key header) — it is separate from your user login.
The One CRM
The CRM integration provides caller lookup and contact matching for organizations using CRM as their primary contact database.
What Flows
| Data | Direction | Details |
|---|---|---|
| Caller lookup | Voice ← CRM | Inbound caller matched to CRM contacts by phone number |
| Contact name | Voice ← CRM | Matched contact name shown in softphone and call log |
| Call log | Voice → CRM | Calls appear in CRM contact activity timeline |
Setup
- Go to Settings → Integrations → CRM
- Enter the CRM API URL and CRM Integration Key
- Save
The One Books
The Books integration handles billing event emission — Voice reports usage events (minutes, SMS, numbers) to Books for consolidated billing.
What Flows
Voice sends the following events to Books:
voice.minutes— per-call usage in secondsvoice.sms— per-message SMS usagevoice.number— monthly phone number rental eventsvoice.fax— per-fax usage
These events are fire-and-forget (non-blocking). If Books is temporarily unavailable, events are queued and retried.
Setup
The Books integration is configured by the platform admin or MSP admin — end tenants do not configure this directly. The relevant env vars are BOOKS_API_URL and VOICE_BOOKS_API_KEY on the Voice API.
Embed Widget (PSA / CHMS / AMS)
The Voice embed widget drops the full phone system into any web application with a <script> tag.
How SSO Bridge Works
- The host app calls
POST /api/sso/tokenwith its integration API key - The Voice API returns a signed 5-minute JWT
- The embed widget loads and exchanges the JWT via
POST /api/sso/exchange - Voice auto-creates a Voice user linked to the host app's user account
- The widget renders the full Voice dashboard inside an iframe — no separate login required
Embedding
<script
src="https://app.theonevoice.app/embed.js"
data-api-key="YOUR_VOICE_API_KEY"
data-container="#voice-widget"
></script>
<div id="voice-widget"></div>
Embed Widget Options
| Attribute | Description |
|---|---|
data-api-key | Your Voice integration API key |
data-container | CSS selector for the container element |
data-mode | softphone (phone panel only) or full (full dashboard) |
data-theme | light or dark |
data-extension | Pre-select a specific extension by ID |
Click-to-Call
The embed widget listens for a custom DOM event. To trigger a call from the host application:
document.dispatchEvent(new CustomEvent('softphone-dial', {
detail: { number: '+12125551234' }
}));
SAML / OIDC SSO
The One Voice supports enterprise SSO via SAML 2.0 and OIDC.
Setup
- Go to Settings → SSO Providers
- Click Add Provider
- Choose SAML 2.0 or OIDC
- For SAML: Enter the Entity ID, SSO URL, and X.509 certificate from your IdP
- For OIDC: Enter the Client ID, Client Secret, and Discovery URL (the
.well-known/openid-configurationendpoint) - Set Domain Restriction — only email addresses from your domain can use this provider
- Toggle JIT Provisioning — automatically creates Voice users on first SSO login
- Save
Your IdP needs:
- SAML ACS URL:
https://api.theonevoice.app/api/auth/sso/saml/callback - SAML Entity ID:
https://theonevoice.app - OIDC Redirect URI:
https://api.theonevoice.app/api/auth/sso/oidc/callback
Microsoft 365 / Azure AD
Voice supports M365 login via the Hub IAM SSO bridge. If your Hub account is linked to M365, your Voice login inherits M365 authentication automatically — no separate SSO provider configuration needed.
Developer API
For custom integrations, Voice exposes a full REST API with API key authentication.
- Go to Developer → API Keys
- Click Create API Key
- Give it a name and select permission scopes
- Copy the key — it is shown only once
API documentation: docs.theonestack.com/voice/api-reference
Outbound webhooks (calls, SMS, fax events) can be configured in Developer → Webhooks.
Troubleshooting Integrations
| Issue | Check |
|---|---|
| Screen pop not showing PSA data | Verify PSA Integration Key is set and PSA API URL is correct; check that caller's phone number matches a PSA contact |
| Books events not appearing | Confirm BOOKS_API_URL and VOICE_BOOKS_API_KEY env vars are set on the Voice API |
| SSO embed not loading | Verify the API key is valid and the data-container selector matches an existing DOM element |
| SAML login fails | Check that the clock on your IdP server is synchronized (SAML assertions have a 5-minute clock skew tolerance) |