SIVO
Salesforce Service Cloud Voice

Integrations

Salesforce Service Cloud Voice

Connect SIVO to your Salesforce org in one click. Zero-touch OAuth, auto push to Conversation/ConversationEntry, Einstein-ready.

Updated:
salesforcescvintegrationsoauth

The Salesforce integration is SIVO’s flagship piece. It’s designed so the SF admin can complete onboarding in under 10 minutes, without uploading certificates or configuring Connected Apps manually.

Prerequisites

  • Salesforce org with Service Cloud Voice enabled.
  • SCV licenses assigned to users who will handle calls.
  • Manage Connected Apps permission (or equivalent) on the SF admin’s profile.

Connector installation

  1. In your SF org, open the SIVO package:

    https://login.salesforce.com/packaging/installPackage.apexp?p0=<package-id>

    The package contains an External Client App, a Lightning Web Component (calltreeSetup) and two custom metadata records. Auto-detects sandbox vs production.

  2. After install, open Setup → search “SIVO Connector”Setup tab.

OAuth connection

  1. Click “Connect with SIVO”. SF opens an OAuth window with PKCE.
  2. SIVO receives the callback at https://app.sivocenter.com/salesforce?autoConnect=1.
  3. If you don’t have an open SIVO session, it takes you to login and resumes the flow after.

What SIVO discovers automatically:

FieldHow we obtain it
org_id (15-char)SELECT Id FROM Organization LIMIT 1
scrt_base_urlSELECT Endpoint FROM ScrtServiceConfiguration LIMIT 1
call_center_nameSELECT InternalName FROM CallCenter WHERE InternalName LIKE 'SIVO_%'
Sandbox vs productionSELECT IsSandbox FROM Organization

No copy/paste of IDs required.

User mapping

Click “Auto-import SF users”. SIVO runs:

SELECT Id, Email, Name FROM User
WHERE IsActive = true AND UserType = 'Standard'

And matches by email against your existing SIVO agents. Matched users are linked; unmatched ones can be created with one click.

Data model in Salesforce

SIVO pushes to SCRT2 (Service Cloud Real-Time API v2), which materializes your calls in these objects:

VoiceCall

The canonical call record. Key fields:

  • VendorCallKey — SIP channel UUID in SIVO.
  • CallStatusinProgress, completed, abandoned, etc.
  • StartDateTime / CallEndDateTime.
  • FromPhoneNumber / ToPhoneNumber.
  • OwnerId — the SF User who answered.

Conversation + ConversationEntry

When live transcription is enabled, each turn is pushed as:

POST /telephony/v1/voiceCalls/{vendorCallKey}/messages
Telephony-Provider-Name: calltree

{
  "messageId": "uuid-v4",
  "messageSequenceNumber": 1,
  "senderType": "ENDUSER",
  "content": "Hi, I'm calling about last month's invoice.",
  "timestamp": "2026-05-20T10:23:45Z"
}

Salesforce materializes it as Conversation (the thread) + ConversationEntry (each individual message). Directly compatible with Einstein Conversation Insights for sentiment, topics and coaching.

Enabling transcription in SF

For transcripts to appear in SF:

  1. In SIVO: Settings → Salesforce → Push transcripts → enable.
  2. In SF: the registered Call Center must have the Telephony-Provider-Name: calltree header configured. The calltreeSetup LWC does this automatically on connect.

Multi-org

A single SIVO instance can connect to N Salesforce orgs. Each org has:

  • Its own user mapping.
  • Its own org_id and SCRT2 endpoint.
  • Optional dedicated RS256 keypair (Enterprise) — see JWT key rotation.

Useful for holdings, BPOs and partners running calls for multiple brands with their own SF orgs.

Embedded softphone (Open CTI)

SIVO’s WebRTC softphone renders as an Open CTI panel inside the SF console. Benefits:

  • No double login — SIVO JWT obtained from SF session.
  • Auto-popup of the related record (Contact, Account, Case) when a call arrives.
  • Click-to-call from any phone field.

End-to-end verification

After setup:

  1. Call from your mobile to a DID configured in SIVO.

  2. In SF, run:

    SELECT Id, CallStatus, FromPhoneNumber, StartDateTime
    FROM VoiceCall
    ORDER BY CreatedDate DESC LIMIT 1
  3. Should return a row with CallStatus = inProgress or completed.

  4. If you enabled transcription, also search:

    SELECT Id, Message FROM ConversationEntry
    WHERE Conversation.RelatedRecordId = '<voiceCallId>'
    ORDER BY MessageSequenceNumber

Troubleshooting

See Troubleshooting → Salesforce SCV for the most common issues and solutions.