Salesforce components

Status: Current | Last reviewed: 2026-10-07

Configured catalogue cards in Agent Assist or Copilot Workspace can include Send to customer controls. The integration must link the human call to the customer's existing multimodal session. Conversation then shows sent screens and customer replies, with View shared screen for saved snapshots. These buttons come from the catalogue; they are not separate Lightning actions. See Share screens with customers.

The TrueServe Copilot Workspace adds a center panel for case histories, policy evidence and live forms. Configure each Copilot's Display in setting as Center workspace, and bind the workspace and Agent Assist to the same Voice Call. It waits for an existing conversation instead of starting another session. Availability depends on the installed package version. The Takeda Clearway demo uses a native LWC center workspace and exchanges events with Agent Assist instead.

Use this page to put a TrueServe conversation on a Salesforce record page — a live transcript, agent-assist suggestions, or a full chat widget. It covers which component to pick, how to configure it in Lightning App Builder, and what every on-screen warning means.

These components are drag-and-drop Lightning components installed by the Agent Studio for Salesforce managed package. Their App Builder tiles all use the Deloitte D. icon. Each one frames the TrueServe surface, so what an agent sees on a Case is the same experience TrueServe serves everywhere else.

The same package also installs TrueServe Call Settings for real-time call translation and audio enhancement. See Salesforce Live Translation.

Ganymede administrators can create missing Salesforce and Authentik accounts from the separate Add Users to Ganymede component on Ganymede Home.

Choosing the outbound caller identity

In the SCV phone, open Additional Settings → Telephony. The package shows one setting named Outbound queue / caller identity:

You don't enter a Caller ID number in Salesforce. Amazon Connect uses the outbound caller ID configured on the selected queue, and an administrator manages the approved phone number in Amazon Connect. If a queue is later removed from your routing profile, the phone automatically falls back to the current default instead of trying to use the stale selection.

Which component to use

You want Add this component
A read-only transcript of the conversation, live or replayed TrueServe Conversation
Agent-assist and smart-reply suggestions only TrueServe Agent Assist
A full chat widget — transcript, a message box, and rich cards TrueServe Copilot
A copilot's after-call summary next to the transcript it came from TrueServe Wrap-Up Summary
Fine-grained control: custom display modes, host-page events, CTI call resolution TrueServe Surface

Start with one of the first four. They are the same underlying surface, each preset to one display mode, and they have a deliberately short property list. Reach for TrueServe Surface only when you need a knob the four presets don't expose.

You can place more than one on a page — a transcript beside an agent-assist panel is a common layout.

What Agent Assist shows

TrueServe Agent Assist starts directly with the suggestion cards, without an AI Suggestions or profile-name header above them. While data loads, card placeholders appear in the same space. Each card keeps its own title and actions.

This presentation comes from the shared TrueServe surface and requires no Salesforce App Builder setting.

What the wrap-up summary shows

TrueServe Wrap-Up Summary shows the summary a copilot wrote when the call ended, as a card pinned above the transcript's suggestions panel. Use it on an after-call page — a Case or VoiceCall record, or a utility-bar item an agent opens while wrapping up.

Configure it exactly like TrueServe Conversation: set the Conversation ID Field to the field holding the completed conversation's id. It is read-only and has no message box.

Two things to expect:

If you use TrueServe Surface instead, choose the Wrap-Up Summary display mode.

What the conversation shows

TrueServe Conversation (and the transcript half of TrueServe Copilot) reads like the native Service Cloud Voice conversation: under each message is a line giving who spoke and when, and the conversation is bracketed by Call started and Call ended rows carrying the date and time. Chat agents get Chat started / Chat ended instead. When a call ends for a specific reason — a transfer, for example — that reason is shown beside the "Call ended" row.

On a translated call each side appears twice: once in the language it was spoken, and once translated. The meta line distinguishes them, so a Spanish caller's turn shows as Caller on the original and Caller Translation on the English line, and the agent's turns likewise as Agent and Agent Translation.

Reopening a completed conversation shows the same rows, timed to the call itself rather than to when you opened it. If a speech provider sends a longer revision of an assistant turn after a shorter final, the component keeps the longer revision in one bubble instead of displaying both copies. Photos attached to the same turn are likewise shown once while their object-storage reference remains available to the agent.

Things the caller did — completing identity verification, confirming an appointment, attaching a photo, a payment going through — appear as event rows: a centered line with an icon and a short label (for example "Identity verified · via SMS code" or "Payment received · 10.00 USD"), not as speech bubbles. Where the visual component involved defines one, the event carries a short summary and a thumbnail (a captured photo, for instance). Events show live during the call and replay with the transcript afterwards.

When the caller used a visual session (forms, cards, photo capture), the component's multimodal view shows those same screens read-only: you can watch fields fill in as the caller types during a live call, and see the completed screens when reviewing afterwards, but you cannot click or edit them — and no camera controls are offered to the viewer.

Context Sidebar identity resolution

Add Context Sidebar to Account, Contact, Case, VoiceCall, and Messaging Session record pages. With Sidebar Mode set to auto, the component chooses the presentation from the resolved customer rather than from the page type alone:

Record context Automatic presentation
Person Account, or a Contact without a business Case Contact-style customer profile
Business Account B2B Account view
Case linked to a business Account B2B view; when the Case also has a Contact, both Account and Contact are shown
Case linked to a Person Account Contact-style customer profile
VoiceCall or Messaging Session The linked Messaging End User supplies the Contact and Account; an attached Case remains available for interaction and SLA context

For VoiceCall and Messaging Session pages, the Messaging End User is authoritative for customer identity. This prevents an interaction Case that belongs to somebody else from replacing the caller or messaging customer. If no End User identity is available, the sidebar falls back to a directly linked Contact or Account, then to the Case relationships.

When none of those relationships identifies a customer, the sidebar shows No customer context is linked to this record instead of an empty panel. Link an Account or Contact to the record to populate the customer details. A phone number in Supplied Phone alone does not identify a customer unless the creation flow matched it to a Contact or Person Account.

For outbound VoiceCalls, Salesforce stores the interaction Case in Related Record and the call Task in Activity. Existing related Cases are retained. New Cases receive both the resolved business Account and Contact when available; Person Accounts use their standard Person Contact.

The View CTR in Amazon Connect link uses the Connect instance URL configured for the Salesforce org. Administrators set it in the Default TrueServe Connect Config Custom Metadata record; moving an org to another Connect instance does not require a formula edit.

Choose b2b or b2c in Sidebar Mode only when a page needs to override these automatic rules.

Approval-created Cases in Embecta

When Request Salesforce Approval creates an Embecta Case, open Additional Information to see Transfer Reason and Related Conversation ID. The detailed approval reason is stored in the custom Transfer Reason field; Salesforce's standard Reason field is separate and may remain blank.

The approval Flow looks up a Contact by an exact match against its phone fields. When a matching caller number is supplied, the new Case receives that Contact and its Account. The incoming number is also retained in Supplied Phone for troubleshooting. A test or fallback ANI such as +15550100000 will leave Contact blank unless a Contact in the sandbox uses that number.

Setting one up in App Builder

  1. Open the record page in Setup → Lightning App Builder (or Edit Page from the record).
  2. Drag TrueServe Conversation, TrueServe Agent Assist, or TrueServe Copilot onto the page.
  3. Fill in the properties on the right:
Property Required What to enter
TrueServe Connection Yes The TrueServe environment this component should use, such as Shimla or Vanguard. An administrator controls the available entries for the org.
Agent ID See below The id of a published agent. For Copilot, use the Copilot agent whose new chat will discuss the record conversation.
Conversation ID Field See below The API name of a field on this record that holds an existing conversation id, e.g. TrueServe_Conversation_Id__c. Read per record.
Assist Source Agent Assist Auto, Live Conversation, Host Record, or Hybrid. Host Record loads a published profile without creating a conversation.
Agent Assist Profile See below Stable slug of a profile published under Tools & Templates → Agent Assist.
Legacy External Actions No Compatibility setting for profiles created with the original card editor. New catalog profiles do not need it.
Context Flow API Name No An autolaunched Flow that supplies CRM context to the agent. Its name must start with TrueServe_Context_.
Context Flow Output Variables No Up to 64 comma-separated Flow output variable names to pass along, e.g. case_reason,account_tier.
Branding Override (Surface Config ID) No A surface configuration id, to theme this one instance differently from the agent's default.
Component Height (px) No Total height of the component. Defaults to 500; enter a value from 200 to 2000.
Fit Composed Workspace Content No Workspace only. Adjusts the iframe height to its current composed content, within 200–2000 px. Off by default; enabled on the Takeda Voice Call page.
Show Debug Information No Leave off on end-user pages. Enable temporarily to show exact setup errors, load checklist, attempted URL, and connection details while troubleshooting.
  1. Save and Activate the page.

For Conversation, set either Agent ID or Conversation ID Field. For Agent Assist, choose the source: a live conversation uses those same fields; a host-record rail uses Agent Assist Profile; Hybrid uses both. See Salesforce Agent Assist profiles for catalog inheritance, automatic Flow binding, and external events.

For a contextual Copilot, set both. Agent ID selects the Copilot's own fresh chat, while Conversation ID Field identifies the live or completed conversation it should discuss. The source conversation is passed to the Copilot as relatedConversationId; it is not used as the Copilot chat's own conversation id.

You never enter a token or a password. Credentials stay on the server side, and the component requests a short-lived one-time token per load.

You can select different connections on components in the same Salesforce org. For example, one Lightning app can use Shimla while a component in another app uses Vanguard. The selected connection controls session minting, conversation lookup, and the embedded surface host as one unit.

A conversation-only setup is fully supported for Conversation and live Agent Assist. A profile-only Agent Assist setup needs neither an Agent ID nor a conversation. TrueServe resolves every source from the signed token, so those components can coexist safely on the same page. A contextual Copilot needs its own Agent ID to create the separate chat.

You can run all three while translation is active. Conversation and Agent Assist view the source conversation. Copilot starts a separate conversation against its configured agent and receives the source id as related context, so its messages do not appear in the call transcript.

The record's conversation remains authoritative for Conversation and Agent Assist after the call ends. Contextual Copilot can start a fresh chat about either a live or completed source conversation. Its agent must be configured to use relatedConversationId—for example through a conversation-transcript retrieval tool—so it can read the source content when answering.

Adding CRM context

To let the agent see the record it is sitting on:

  1. Build an autolaunched Flow that takes a recordId input and sets text output variables.
  2. Name it starting with TrueServe_Context_ — for example TrueServe_Context_Case_Summary. Flows without that prefix are refused for security reasons, and the component tells you so.
  3. Enter that API name in Context Flow API Name, and list the output variables you want in Context Flow Output Variables.

For live Agent Assist, these outputs arrive in {{HostContext}} under context, alongside the record identity. A JSON object or array output stays structured. The wrapper sends context.ready after loading and context.updated when the record view refreshes. Prompts can inspect these variables without asking the caller to repeat the earlier interaction.

For a Host Record Agent Assist profile, the outputs instead form the durable record snapshot used for automatic catalog-property binding. Salesforce sends that snapshot through the protected embed bridge, so large email bodies or item dispositions are not copied into the iframe URL.

Native workspaces and Copilot events

A native LWC can share a page with Agent Assist and exchange messages through TrueServeCopilotEvent__c. Match recordId and direction before handling anything; use eventId for duplicate detection. Agent Assist forwards all stream events, including updates that also render a sidebar card.

To send an event, publish direction: "to-copilot", the current recordId, a unique eventId, a namespaced eventName, and JSON data in payloadJson. delivery: "stream" sends it to configured Copilot workers; "both" also allows normal card handling. Workers that use only transcripts ignore custom events. Responses use direction: "from-copilot"; transport acknowledgements use "command-result".

For a native form, set command: "form_context" and send only active_form, confirmed_fields, form_control and/or form_target in payloadJson. form_target identifies copilot_id and form_id. Confirm fields after the record save succeeds. A transport acknowledgement alone does not prove a save.

The new TrueServe Agent Assist, TrueServe Conversation, TrueServe Copilot and TrueServe Wrapup components use TrueServe Connection, defaulting to Default. They do not expose the obsolete domain or legacy external-actions properties. Components marked (Legacy) retain those properties for existing Lightning page versions; use the new components when editing a page.

Assist Source defaults to Auto: it uses the available live conversation and/or configured Agent Assist Profile. Select Host Record for a published record profile without a live call, Live Conversation for the call alone, or Hybrid for both.

On TrueServe Conversation, leave Show Agent Assist off for a transcript-only panel. A separate Agent Assist sidebar continues to work. The Takeda Context Sidebar — Caller and Organization adds simple App Builder switches for organization, account summary and contact details.

Reading the component's own messages

These components never render an empty box. With Show Debug Information disabled, technical failures show a generic SLDS Can't connect illustration and a Retry button. This avoids exposing setup details, attempted URLs, or token errors to end users.

What the component shows What it means What to do
Can't connect illustration and Retry A setup, token-mint, or load failure occurred. Press Retry once. If it persists, ask an administrator to enable Show Debug Information temporarily.
Nothing to display The configured conversation field is empty on this record and no Agent ID fallback is available. Populate the field or configure Agent ID.
Exact setup/token error and Retry (debug enabled) The detailed cause of a configuration or credential failure. Follow the message, correct the property or credential, then press Retry.
Numbered load checklist and URL tried (debug enabled) The frame mounted but did not report ready within about 12 seconds. Work the checklist top to bottom, then press Retry.
Connection details footer (debug enabled) Surface host, agent id, resolved conversation id, connection state, and last event. Include these details when reporting a problem.

A failed setup or connection attempt remains on its message instead of retrying continuously. Change the component property identified by the message, or press Retry after an administrator fixes the underlying credential or access issue.

Setup checklist for administrators

Turn on Show Debug Information for the component in App Builder while diagnosing it, then turn it off again before handing the page back to end users. The load checklist maps to four one-time setup items. If a component times out, this is the order to check them.

  1. The selected TrueServe deployment is reachable. Enable Show Debug Information, expand Connection details, and open the listed surface host in a browser tab.
  2. A CSP Trusted Site covers that host. In Setup → CSP Trusted Sites, confirm an active entry covers https://surface-app.<your-domain>. A wildcard such as https://*.deloitte.com counts. Each new environment needs its own entry unless a wildcard already covers it.
  3. This Salesforce org is a registered embed origin in TrueServe. In TrueServe, go to Settings → Embedding and add your Lightning domain (for example https://acme.lightning.force.com) as an active external client. Without it, the browser refuses to frame the conversation. Changes take effect within about 30 seconds.
  4. The selected connection's credentials and grants are in place. A managed-package install cannot carry per-org secrets. Its Surface API credential needs a tenant API token with agents:manage and an AI Manager URL. Its Conversation API credential needs a token for the same tenant and that environment's conversation-api URL. Grant the running user access to both principals.

Items 2 and 4 are Salesforce-side; items 1 and 3 are TrueServe-side.

Add another TrueServe environment

The package installs a Default connection that uses the packaged TrueServe Surface API and TrueServe Orchestrator Vanguard credentials. Changing those two credential URLs moves Default for every component that selects it.

Create a separate connection when some pages must stay on another environment:

  1. In Setup → Named Credentials, create an External Credential and named principal for the environment. Add a secret authentication parameter named BearerToken containing that environment's tenant API token. Add an External Credential custom header named Authorization with value {!'Bearer ' & $Credential.YourExternalCredential.BearerToken}. You may use the same External Credential for both endpoints when the token works for both services.
  2. Create two Named Credentials. Point one at the environment's AI Manager URL and the other at its conversation-api URL. Attach the External Credential, enable merge fields in request headers, and add trueservedev under Allowed Namespaces so the managed package can use the credentials.
  3. Grant agents and page administrators External Credential Principal Access through a permission set.
  4. Open Setup → Custom Metadata Types → TrueServe Connection → Manage Records. Create an active record and enter the API names of the two Named Credentials. Leave the two optional External Credential fields blank; they exist only for legacy connections where Apex injects BearerToken itself.
  5. Add a CSP Trusted Site for that environment's surface host and register the Salesforce Lightning origin under TrueServe → Settings → Embedding in that environment.
  6. Return to Lightning App Builder and select the new record under TrueServe Connection on each component that should use it.

The old TrueServe Domain and Surface App Base URL fields remain visible as deprecated properties on upgraded pages because Salesforce retains design properties in FlexiPage history. The components ignore them.

Other systems

The same architecture works outside Salesforce. ServiceNow has an equivalent set of three UI Builder components with the same properties and the same on-component diagnostics, and any web application can embed a surface directly. See Embedding surfaces.

Components removed in July 2026

Several earlier TrueServe components were retired and deleted. If a page you own suddenly has an empty region, it referenced one of these:

Removed Use instead
Embedded Surface TrueServe Surface
Native Surface Panel, Native Surface Sentiment, TrueServe Sentiment Gauge TrueServe Surface — it renders transcript and sentiment already
TrueServe Chat TrueServe Conversation + TrueServe Agent Assist
TrueServe Bridge (the unmanaged one) Nothing needed. Each component now manages its own connection.

TrueServe Surface also had a second Native rendering mode, which is gone. Its Rendering Mode property and four related properties remain visible in App Builder labelled "(Deprecated — ignored)". They do nothing; Salesforce does not allow removing a property once a page has referenced it. Leave them alone.

TrueServe Call Settings now ships beside these components in Agent Studio for Salesforce. Existing Lightning page references keep working because the underlying bundle API names did not change.

See also