← API & SDK documentation

Salesforce customer & reviewer guide

Your CRM. Your agent. A Virturing number.

Connect one Salesforce installation to one Virturing workspace. Operators choose a CRM contact, an owned caller number and a voice service from the Virturing Voice app in Salesforce.

Last reviewed · Setup for Salesforce administrators, operators and reviewers.

On this page options

Who supplies the voice?

Virturing supplies the phone number and call transport. The selected voice service supplies the conversation. These are three distinct integration paths.

CRM calling app

Virturing AI

Create and publish the agent in Virturing, then select it in Salesforce. Virturing runs its speech, reasoning and configured tools.

Select Virturing-hosted AI agent under Who supplies the voice? Calls can start now or use the supported individual schedule.

CRM calling app · compatible WSS required

Your AI / audio service

Your service provides a compatible, bidirectional secure WebSocket audio endpoint. Register and activate it in Virturing before operators use it.

Select My AI / audio service — Virturing number only. This action supports immediate calls. A text-only chatbot API cannot receive the call audio.

Separate approval · not enabled yet

Native Agentforce Voice

Salesforce supplies its native voice AI through an approved telephony interconnect. It needs Salesforce entitlements, supported regional configuration and accepted SIP interoperability.

The generic customer audio choice does not activate this channel. Follow the native voice track; inbound and outbound availability must be confirmed separately.

The current Salesforce app provides calling controls and results. Agent creation and model configuration remain in the platform that owns the agent. No platform trial number is required for the Virturing caller number.

Have these ready

Use a sandbox or isolated review org first. An app installation does not buy a number, move an existing number’s route or add Salesforce product entitlements.

  • An authorized Salesforce administrator, compatible Apex/API access and appropriate user licences.
  • An active Virturing workspace, an owned active caller number and sufficient balance and calling capacity.
  • A published Virturing agent, or an already configured compatible customer audio endpoint, for the chosen mode.
  • An approved internal test destination or test bot. Confirm permission to call and any recording/transcription requirements.
  • A record of current Lead/Contact layouts, access rules and any earlier Virturing source components before changing the Salesforce org.

Install the app

Obtain the actual subscriber installation link and any installation key from Virturing through an approved channel. There is no released package link to use yet.

  1. Confirm the Salesforce org

    Sign in as its authorized administrator. Check the intended My Domain and org before opening the supplied installation link.

  2. Review and install for administrators first

    Confirm the version and requested access. Wait for Salesforce’s installation-complete result. Then open Setup → Installed Packages and verify the publisher, namespace and version.

  3. Open Virturing Voice

    Go to App Launcher → Virturing Voice. The app navigation contains Calling, Leads, Contacts, Virturing Call Requests and Connection setup.

Connect securely

Open Virturing Voice → Connection setup. Salesforce stores the connection key in its encrypted credential store. Operators do not enter keys in the calling form.

  1. Create a dedicated Virturing API key

    In Virturing, open Developer API & Webhooks → API keys. Create a key for this Salesforce installation with calls:write, calls:read and numbers:read. Add agents:read for Virturing AI, or media:read for customer audio; include both if offering both choices. Keep endpoint administration on a separate key.

  2. Create the External Credential

    In Salesforce, open Setup → Named Credentials → External Credentials → New. Name it Virturing_External, choose Custom authentication and add the named principal Workspace. Add its encrypted authentication parameter AuthorizationValue: the word Bearer, one space, then the API key. Enter the real key only in that encrypted field.

  3. Create the Named Credential

    Create Virturing with URL https://dashboard.virturing.ai and connect the External Credential. Enable callouts, turn Generate Authorization Header off and enable header formulas. Add the Authorization header with formula {!$Credential.Virturing_External.AuthorizationValue}. For a managed installation, add the exact installed namespace shown by Connection setup to Allowed Namespaces.

  4. Assign app and credential access

    Use the roles below. In each intended permission set’s External Credential Principal Access, enable Virturing_External — Workspace. Each caller and the integration user needs principal access separately. Keep existing Lead/Contact record sharing and field permissions.

  5. Run the read-only connection check

    Return to Connection setup, select Calling mode to connect and click Check connection. Confirm the workspace ID is the intended workspace, required scopes are present and the expected owned numbers and voice choices are available.

Virturing Setup Admin
Connection administrators: setup guidance and read checks. This permission does not grant broad Salesforce Setup administration.
Virturing Calling User
Operators who submit calls and review their permitted requests. Assign only to intended callers.
Virturing CRM Phone Access
Optional read access to telephone and DoNotCall fields when needed. Existing record sharing still applies; this does not grant CRM editing.
Virturing Integration User
A dedicated OAuth integration user for optional automatic results. Ordinary callers do not need this role.

What the check proves: connection authentication, API grants and readable inventory. It places no call and does not verify carrier availability, audio quality, recipient consent or native Agentforce Voice. Subscriber-owned credentials must remain in place through upgrades.

Call a CRM contact

Once an administrator has connected the workspace, operators can work from Salesforce. Each submission targets one reviewed Lead or Contact.

  1. Select the person

    Open Calling, choose Lead or Contact under CRM records and select an accessible record. Alternatively, open the record and choose Call with Virturing once an administrator adds the action to its layout or Dynamic Actions.

  2. Review the voice service and destination

    Under Who supplies the voice?, choose the configured mode. Select the Virturing agent or Your AI / audio endpoint, then the owned Caller number and Recipient phone. The CRM phone must include + and its country code. Do Not Call blocks calling.

  3. Confirm timing and submit

    Review and tick the permission-to-call confirmation. Choose Start call, or set Schedule for and choose Schedule call for a supported Virturing AI call. Customer audio calls start immediately; this mode does not offer scheduling.

  4. Keep the request and inspect its outcome

    Accepted means the request was accepted; it does not mean the recipient answered. Keep the reference and use Recent requests → Refresh results or Open Virturing Call History to review the final outcome.

For the list-toolbar button, open Leads or Contacts. If Contacts opens in Intelligence View, click List View. Choose a named list such as All Open Leads or All Contacts, then use Select list display → Table. In the toolbar, open Show more actions → Call with Virturing.

The custom list button is not shown in Recently Viewed or Split View. It opens a single-recipient picker; selecting list checkboxes does not submit a bulk campaign. The record’s Call with Virturing action remains an alternative once added to its layout or Dynamic Actions.

Individual Virturing AI schedules must be within one year. A later CRM opt-out change does not automatically cancel an already accepted schedule: review and cancel pending work through the supported controls.

Automate a reviewed Flow

Use Flow for an explicit, authorized CRM operation. Preserve the returned request identity so that retries do not become duplicate calls.

  1. Add Request a Virturing call

    In Flow Builder, add the action Request a Virturing call. Supply an accessible Lead/Contact record ID, its reviewed international destination, the owned number UUID and explicit confirmation.

  2. Choose one voice configuration

    Set voiceMode to ai with agentId, or programmable with mediaEndpointId. Do not supply both voice configurations. A future scheduledAt is supported only for ai, within one year.

  3. Set a stable operation key

    Use a 16–100 character operation key containing letters, digits, _ or -. Keep the same key when retrying the same intent and retain the returned request ID for reconciliation.

  4. Respect the transaction limit

    Submit at most 25 inputs per transaction. The action saves request intents and dispatches asynchronously. Queued in Salesforce does not mean a call was placed or answered. Use Virturing Campaigns for larger controlled lists.

Keep outcomes connected

Refresh results is available in the calling app. Administrators can also configure authenticated event writeback to update the corresponding Salesforce request automatically.

  1. Prepare a dedicated Salesforce OAuth user

    Use the required API licence/access, assign Virturing Integration User and grant the credential’s Workspace principal access. Keep this role separate from ordinary callers.

  2. Copy the exact callback path

    In Connection setup → Call results and optional event writeback, copy the displayed callback path. Build the URL using this Salesforce org’s current My Domain followed by that path. The path accounts for the installed namespace; do not guess a managed callback URL.

  3. Configure terminal call events in Virturing

    Open Developer API & Webhooks → Events & media. Select the customer’s Salesforce OAuth connection, enter the callback URL and subscribe to the intended terminal call.* events. No Salesforce Site or guest access is needed.

  4. Verify record correlation

    Use an isolated, approved acceptance call. Confirm the org, CRM record, request and call references match. Unrelated portal calls must not create or overwrite Salesforce request records.

Salesforce’s current result field contains the public call result/summary, capped at 32,000 characters. Full recordings and transcripts remain in Virturing unless a separately accepted integration provides them. Recording and transcription depend on the selected service, capture settings, consent, access and retention policy.

Portal campaigns do not automatically create one Salesforce request record per recipient. Review the campaign’s own results in Virturing.

Verify before launch

A successful read check is the first step. Verify the chosen voice service and normal user permissions with an authorized test before customer calling.

  1. Run Check connection and confirm the intended workspace, scopes, number and agent/audio inventory.
  2. Sign in as a normal calling user and select only the CRM records and phone fields they are permitted to access.
  3. Call an approved internal destination or test bot. Answer, listen to the greeting, exchange several two-way turns and hang up. Check that the selected voice service handled the conversation.
  4. Use Refresh results and verify the final status and references. If capture is enabled and permitted, compare the recording/transcript with the actual conversation.
  5. Review the opt-out, validation and timeout behaviour in the isolated test setup before enabling an automated Flow.
Connection or principal access fails
Have the administrator check the encrypted key, its actual API scopes, credential formula and Workspace principal access. Correct a workspace mismatch before calling.
No caller number or voice option appears
Confirm the number belongs to the connected workspace and is active. Publish the intended Virturing agent or activate the compatible audio endpoint, then repeat the read check.
The record or call button is unavailable
Check Virturing Calling User, Lead/Contact sharing and phone-field permissions. Add the record action to the relevant layout or Dynamic Actions. For a list-toolbar button, switch Contacts from Intelligence View to List View if needed, choose All Open Leads or All Contacts and set Select list display to Table. Open Show more actions → Call with Virturing; Recently Viewed and Split View do not show this custom list button.
A request times out or remains uncertain
Keep its request/reference and reconcile it in Call History. Use the app’s retry for the same request where applicable. Creating a fresh request can create another call.
Accepted call has no usable audio
Retain the call reference, time, selected mode and outcome for support. Check the configured agent/audio service and approved carrier route. An API acceptance or connection check does not prove audio or native Salesforce Voice compatibility.

Upgrade or disconnect

Plan changes around saved requests, active work and the customer’s data policy. Removing an app does not cancel an accepted call or erase external data.

  1. Test an approved successor before production

    Export required audit data. Install an approved upgrade in a test org first and verify the namespace, preserved credentials and principal grants, actions, ordinary-user permissions and supported upgrade path.

  2. Rotate credentials without exposing them

    Replace the encrypted principal parameter, run Check connection, then revoke the old dedicated key. Review any other consumers before revocation.

  3. Stop new work before disconnecting

    Stop automated Flow submissions. Review pending schedules and campaigns; allow authorized active work to finish or explicitly cancel it where supported. Keep final outcomes and request references.

  4. Revoke and remove deliberately

    Disable event subscriptions and revoke the dedicated Salesforce OAuth grant and Virturing key when no longer needed. Export required Salesforce audit data, remove customer Flow/layout dependencies and review Salesforce’s uninstall and data-loss warnings.

  5. Handle external data separately

    Apply the customer’s Virturing recording, transcript and account deletion policy. Salesforce uninstall does not remove external storage, usage or billing records.

Use native Agentforce Voice

The goal is a Virturing number connected to Salesforce’s own native voice agent. This requires Salesforce-approved telephony onboarding and a verified channel; the CRM calling app alone does not provide that approval.

  1. Confirm Salesforce eligibility and supported direction

    Confirm the customer’s native Agentforce Voice entitlement, supported region, number type and approved telephony path with Salesforce and Virturing. Inbound support does not imply native outbound CRM dialing. Confirm each direction explicitly.

  2. Provision the approved channel

    Use Salesforce-provided SIP/channel configuration and the customer’s agent, routing and escalation flows. Exchange only the approved network, authentication and public-key material through the agreed onboarding process.

  3. Complete interoperability acceptance

    Verify the actual provisioned channel with the required echo, native agent conversation and human escalation checks before moving a customer number’s route. Obtain the customer administrator’s approval for any route change.

For the vendor requirements, see Salesforce’s Agentforce Voice SIP setup and Agentforce Voice authorization documentation. Contact Virturing to confirm the current onboarding status before promising native connectivity.