service-cloud-voice-setup

Use this skill when setting up Service Cloud Voice with Amazon Connect — provisioning the contact center, configuring phone numbers, enabling real-time transcription, and configuring After Conversation Work Time. NOT for CTI adapter development, Open CTI customization, or custom Amazon Connect Lambda development outside the guided wizard.

Best use case

service-cloud-voice-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use this skill when setting up Service Cloud Voice with Amazon Connect — provisioning the contact center, configuring phone numbers, enabling real-time transcription, and configuring After Conversation Work Time. NOT for CTI adapter development, Open CTI customization, or custom Amazon Connect Lambda development outside the guided wizard.

Teams using service-cloud-voice-setup should expect a more consistent output, faster repeated execution, less prompt rewriting, better workflow continuity with your supporting tools.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.
  • You already have the supporting tools or dependencies needed by this skill.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/service-cloud-voice-setup/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/service-cloud-voice-setup/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/service-cloud-voice-setup/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How service-cloud-voice-setup Compares

Feature / Agentservice-cloud-voice-setupStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use this skill when setting up Service Cloud Voice with Amazon Connect — provisioning the contact center, configuring phone numbers, enabling real-time transcription, and configuring After Conversation Work Time. NOT for CTI adapter development, Open CTI customization, or custom Amazon Connect Lambda development outside the guided wizard.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Service Cloud Voice Setup

This skill covers the end-to-end admin setup of Service Cloud Voice using the Salesforce-guided wizard that provisions an Amazon Connect instance, configures Omni-Channel routing for voice, enables real-time transcription, and sets up After Conversation Work Time (ACW). Activate this skill when a team needs to go from a licensed org to agents handling calls in the Service Console.

---

## Before Starting

Gather this context before working on anything in this domain:

- Verify the org has the **Service Cloud Voice with Amazon Connect** add-on license. The setup wizard will not appear in Setup without it. Partners and ISVs provisioning on behalf of customers must confirm the license is active on the production org, not just a sandbox.
- Confirm **My Domain** (custom domain) is deployed to all users. The Amazon Connect softphone widget is loaded via a Lightning page that requires a custom domain. Without it, OAuth callbacks from Amazon Connect will fail.
- Confirm **Omni-Channel** is enabled under Setup > Omni-Channel Settings. Service Cloud Voice creates a Voice service channel inside Omni-Channel; if Omni-Channel is not enabled, the wizard will halt.
- The most common wrong assumption: practitioners assume Amazon Connect can be configured from the AWS console independently and then "connected" to Salesforce as a second step. The correct path is the Salesforce-guided wizard, which provisions the AWS-side infrastructure on the admin's behalf and handles OAuth integration. Manual AWS-first setup bypasses the required trust configuration.
- Key limits: one Amazon Connect instance per Salesforce production org (you cannot link two production orgs to the same instance); sandbox environments require a separate Amazon Connect instance; concurrent call capacity is governed by your Amazon Connect service limits in AWS, not Salesforce.

---

## Core Concepts

### The Guided Provisioning Wizard

Service Cloud Voice setup begins at **Setup > Service Cloud Voice > Contact Centers**. The wizard walks through four phases: (1) Contact Center naming and region selection, (2) Amazon Connect instance provisioning (or import of an existing instance), (3) phone number claiming, and (4) Omni-Channel service channel creation. Behind the scenes, Salesforce uses an OAuth 2.0 integration between your org and AWS to create IAM roles, configure the Amazon Connect instance, and install the required Amazon Connect contact flows. Admins do not need to log in to the AWS console for a greenfield provisioning. The wizard handles all trust and permission scaffolding.

If an existing Amazon Connect instance needs to be imported rather than created fresh, the admin must provide the instance ARN and have sufficient AWS IAM permissions to grant Salesforce access. The import path is more fragile — existing contact flows must be manually mapped to Salesforce's expected flow entry points.

### Phone Numbers and Contact Flows

During wizard completion, the admin claims one or more phone numbers from Amazon Connect's number inventory. Numbers can be Direct Inward Dial (DID) from available country pools. Each number is associated with a **contact flow** — a routing program in Amazon Connect that determines how an inbound call is handled before it reaches an agent. Salesforce installs a default "Inbound Flow" contact flow that routes calls to the Omni-Channel queue. Custom contact flows (IVR menus, business hours checks, callback deflection) must be built in the Amazon Connect console after the wizard completes, and then re-associated with the phone number in the Amazon Connect console, not in Salesforce Setup.

### Real-Time Transcription

Live transcription of voice calls requires enabling **Live Media Streaming** on the Amazon Connect instance in the AWS console, under **Data Storage > Live Media Streaming**. This is separate from post-call recordings. Once live media streaming is enabled in AWS, the admin must return to Salesforce Setup > Contact Centers and enable **Call Transcription** on the contact center record. Real-time transcription data flows to the VoiceCall record as transcript segments accessible to supervisors via the Service Console. Einstein Real-Time Agent Assist and Einstein Automated Summaries both depend on this stream being active. Without live media streaming enabled at the Amazon Connect level, enabling transcription in Salesforce will silently produce no transcript output.

### After Conversation Work Time (ACW)

After Conversation Work Time is a presence status period that holds an agent in a wrap-up state after a call ends, preventing new work from being routed to them. It is configured under **Setup > After Conversation Work Time**. The admin sets a maximum ACW duration (in seconds). When a call ends, the agent is placed in a reserved "After Conversation Work" presence status automatically; the agent can manually end ACW before the timer expires. ACW is per-contact-center and must be explicitly enabled on the contact center record. If ACW is not configured, calls close immediately and agents are re-queued for work with no wrap-up time.

---

## Common Patterns

### Pattern: Greenfield Provisioning via Guided Wizard

**When to use:** New deployment with no existing Amazon Connect instance. The org has the Voice add-on, Omni-Channel is enabled, My Domain is deployed.

**How it works:**
1. Navigate to Setup > Service Cloud Voice > Contact Centers > New.
2. Follow the wizard: name the contact center, select AWS region closest to the agent population, let Salesforce create a new Amazon Connect instance.
3. Claim at least one phone number during the wizard. You can add numbers later from the contact center record.
4. After wizard completion, verify the Voice service channel appears under Setup > Omni-Channel > Service Channels.
5. Assign the Voice service channel to the appropriate Omni-Channel queue and routing configuration.
6. Add agents to the queue and assign them the "Service Cloud Voice" permission set.
7. Test by calling the claimed number from an external phone; the call should appear as a work item in the agent's Omni-Channel widget in the Service Console.

**Why not the alternative:** Attempting to manually create an Amazon Connect instance in the AWS console and link it afterward skips the automated IAM trust configuration and contact flow installation. This leaves the integration in a broken state where calls route to Amazon Connect but cannot be passed to Salesforce agents.

### Pattern: Enabling Real-Time Transcription on an Existing Contact Center

**When to use:** Voice is already live with basic call routing, but the team wants live transcription for supervisor monitoring or Einstein AI features.

**How it works:**
1. In the AWS console, open the Amazon Connect instance linked to the org.
2. Under Data Storage, enable Live Media Streaming with a Kinesis Video Stream. Select a retention period (minimum 0 hours is acceptable for transcription-only use cases).
3. Return to Salesforce Setup > Service Cloud Voice > Contact Centers, open the contact center record, and enable **Call Transcription**.
4. Assign the "Service Cloud Voice Transcription" permission set to supervisors who should see live transcript panels in the Service Console.
5. Test by placing a call and confirming the Transcript panel populates in the VoiceCall record in real time.

**Why not the alternative:** Enabling transcription in Salesforce Setup without first activating live media streaming in AWS produces no error — it simply silently produces no transcripts. The misconfiguration is hard to diagnose because the VoiceCall record is created and the call routes correctly; only the transcript segments are missing.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| No existing Amazon Connect account | Use guided wizard to provision a new instance | Wizard handles all AWS IAM trust, contact flows, and OAuth — zero manual AWS work required |
| Existing Amazon Connect instance in AWS | Import path in wizard, provide instance ARN | Preserves existing contact flows and numbers, but requires IAM permissions and manual flow mapping |
| Sandbox testing of voice setup | Provision a separate Amazon Connect instance for the sandbox | One Salesforce org per Amazon Connect instance; sharing with production is unsupported |
| Agents need wrap-up time after calls | Enable and configure After Conversation Work Time | ACW is the platform-native mechanism; custom presence rules are not needed |
| Supervisor live monitoring of transcripts | Enable live media streaming in AWS + transcription in Salesforce | Both must be active; Salesforce-only configuration produces no output |
| Custom IVR or business hours routing | Build contact flows in Amazon Connect console after wizard | Salesforce wizard does not expose contact flow editing; all flow logic lives in Amazon Connect |

---

## Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

1. **Verify prerequisites** — Confirm the Voice add-on license is active, My Domain is deployed to all users, and Omni-Channel is enabled. Check that the provisioning admin has the "Manage Contact Centers" permission and the "Service Cloud Voice" permission set.
2. **Run the provisioning wizard** — Navigate to Setup > Service Cloud Voice > Contact Centers > New. Complete all wizard steps: contact center name, AWS region, instance creation (or import), phone number claiming. Do not exit the wizard mid-flow; partial completions leave orphaned AWS resources.
3. **Verify Omni-Channel integration** — Confirm the Voice service channel was created under Setup > Omni-Channel > Service Channels. Add the channel to the appropriate routing configuration and queue. Assign capacity weights appropriate for voice (calls are typically weighted at 1.0 with lower capacity settings than chat).
4. **Assign permission sets to agents and supervisors** — Assign "Service Cloud Voice" permission set to all agents who will handle calls. Assign "Service Cloud Voice Transcription" to supervisors if transcription is in scope.
5. **Enable real-time transcription (if required)** — Enable Live Media Streaming in the AWS Amazon Connect console, then enable Call Transcription on the Salesforce contact center record. Test with a live call to confirm transcript segments appear.
6. **Configure After Conversation Work Time** — In Setup > After Conversation Work Time, set a maximum ACW duration appropriate for the team's wrap-up process. Enable ACW on the contact center record. Test by completing a call and confirming the agent enters ACW presence status automatically.
7. **End-to-end test** — Place inbound test calls from an external phone, confirm routing to the queue, answer in the Service Console, verify VoiceCall record creation with call metadata and (if enabled) transcript. Confirm ACW timer triggers post-call.

---

## Review Checklist

Run through these before marking work in this area complete:

- [ ] Voice add-on license is active and the Contact Centers menu appears in Setup
- [ ] Amazon Connect instance provisioned (or imported) and linked to the contact center record
- [ ] At least one phone number claimed and associated with the inbound contact flow
- [ ] Voice service channel exists in Omni-Channel and is assigned to a queue and routing config
- [ ] Agents and supervisors have correct Service Cloud Voice permission sets
- [ ] Real-time transcription tested end-to-end if enabled (live media streaming active in AWS)
- [ ] After Conversation Work Time configured and tested if wrap-up time is required
- [ ] No orphaned Amazon Connect instances in AWS from failed partial wizard runs

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **Live media streaming must be enabled in AWS before transcription works in Salesforce** — Enabling Call Transcription on the Salesforce contact center record without first enabling Live Media Streaming in the Amazon Connect AWS console produces no error and no transcript output. Calls route normally; only transcripts are silently missing. Always validate in AWS first.
2. **One Amazon Connect instance per Salesforce org** — Salesforce enforces a one-to-one relationship between a Salesforce org and an Amazon Connect instance. Attempting to link the same Amazon Connect instance to a sandbox and production org will fail. Sandboxes must provision their own Amazon Connect instances.
3. **Partial wizard runs leave orphaned AWS resources** — If the guided wizard is abandoned mid-flow (e.g., after the Amazon Connect instance is created but before phone number claiming), an Amazon Connect instance remains in AWS with no corresponding active contact center record in Salesforce. These orphaned instances consume AWS service limits. Always complete or roll back wizard runs fully.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| Contact Center record | Salesforce record linking to the Amazon Connect instance; holds transcription and ACW settings |
| Voice service channel | Omni-Channel service channel of type Voice, used for queue and routing configuration |
| VoiceCall record | Created per call; stores call metadata, participant info, and transcript segments |
| After Conversation Work presence status | System presence status agents enter automatically after call completion |

---

## Related Skills

- omni-channel-routing — Configure routing rules, queue assignments, and capacity weights for voice alongside other channels
- sales-engagement-cadences — Service Cloud Voice integrates with Sales Engagement for outbound call cadences

Related Skills

omni-channel-routing-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configuring Salesforce Omni-Channel routing from scratch or updating existing routing: enabling Omni-Channel, creating Service Channels, configuring Routing Configurations (queue-based and skills-based), setting up Presence Statuses and Presence Configurations, assigning skills to Service Resources, and defining Skills-Based Routing Rules. Trigger keywords: Omni-Channel setup, routing configuration, queue-based routing, skills-based routing, presence status, service channel, routing rules. NOT for capacity model design (use omni-channel-capacity-model). NOT for OmniStudio FlexCards or DataRaptors. NOT for Omni-Channel Supervisor dashboard analysis.

shield-kms-byok-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Shield Platform Encryption with customer-supplied (BYOK) or customer-held (Cache-Only Key Service) tenant secrets, rotate them, and recover. NOT for Classic Encryption or field masking.

service-account-credential-rotation

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing credential rotation for integration users, connected apps, named credentials, and OAuth client secrets in Salesforce. Covers rotation cadence, zero-downtime handover, secret storage, and detection of stale credentials. Triggers: 'rotate integration user password', 'connected app secret rotation', 'named credential rotation', 'stale service account', 'zero downtime secret rotation'. NOT for end-user password policies.

experience-cloud-security

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when configuring access controls, sharing, or site security for authenticated or guest Experience Cloud (community) users: external OWD, Sharing Sets, Share Groups, CSP, clickjack protection, guest user record access. NOT for internal sharing model configuration (use sharing-and-visibility).

wire-service-patterns

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing or reviewing Lightning Web Components that use `@wire`, Lightning Data Service, UI API, or the GraphQL wire adapter, especially for reactive parameters, cache behavior, and refresh strategy. Triggers: 'wire service', 'refreshApex', 'reactive parameter', 'getRecord', 'wire vs imperative Apex'. NOT for component communication or generic lifecycle issues when data provisioning is not the main concern.

headless-experience-cloud

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when building custom frontends (React, Vue, mobile, static sites) that consume Salesforce CMS content via the Connect REST API headless delivery endpoint. Triggers: 'headless Salesforce CMS', 'deliver CMS content to external frontend', 'React app Salesforce content API', 'custom frontend Experience Cloud data', 'CMS delivery channel API'. NOT for standard Experience Builder site development. NOT for CMS Connect (3rd-party CMS federation into Experience Builder). NOT for Experience Cloud LWC components rendered inside a site.

experience-cloud-search-customization

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring or extending search on an Experience Cloud site — covering Search Manager scope configuration, LWR vs Aura search component selection, federated search setup, guest user search access, and custom search result components. NOT for SOSL/SOQL query development. NOT for internal Salesforce global search or Einstein Search for agents.

experience-cloud-multi-idp-sso

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring multiple identity providers (OIDC and/or SAML) on a single Experience Cloud site or across tenant-specific portals in the same org — covering auth provider registration, Start SSO URL routing, Federation ID mapping, RegistrationHandler implementation, and simultaneous SP+IdP topology. Trigger keywords: multiple identity providers Experience Cloud, multi-tenant SSO community portal, vendor and citizen portal same site, OIDC SAML both on login page, tenant-specific login routing community. NOT for internal Salesforce employee SSO configuration. NOT for single auth provider setups — see experience-cloud-authentication for basic SSO.

experience-cloud-lwc-components

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when building custom LWC components for Experience Cloud (Experience Builder sites, LWR portals, Aura-based communities). Covers community context imports, guest user Apex access patterns, navigation API differences between LWR and Aura, and JS-meta.xml target configuration for Experience Builder exposure. NOT for internal LWC components deployed to Lightning App Builder or standard record pages (see lwc/lwc-development). NOT for Aura community components. Trigger keywords: build LWC for Experience Cloud, custom component community portal LWC, guest user LWC component, community context import salesforce, lightningCommunity target, @salesforce/community, guest Apex.

experience-cloud-authentication

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when building custom login pages, social SSO flows, self-registration flows, or passwordless OTP login for Experience Cloud (community) sites. Trigger keywords: custom login page Experience Cloud, social SSO community portal, passwordless login Experience Cloud, self-registration custom flow, headless authentication community, auth provider OIDC SAML site. NOT for internal SSO configuration (use identity/sso skills). NOT for standard username/password authentication with no customization.

experience-cloud-api-access

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring or troubleshooting API access for Experience Cloud external users and guest users: guest user Apex data access, Customer Community Plus or Partner Community REST/SOAP API access, external user OAuth scopes, and sharing enforcement on API responses. Trigger keywords: Experience Cloud API access external user, community user REST API, guest user API limits, Customer Community API permissions, external user OAuth. NOT for internal Salesforce API authentication, non-community OAuth flows, or internal user API security.

slack-salesforce-integration-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or troubleshooting the Salesforce for Slack managed app — including connecting a Salesforce org to a Slack workspace, configuring the three-party admin handshake, linking Slack channels to Salesforce records, enabling record preview sharing, and managing org-level limits. Triggers on: Salesforce for Slack app not connecting, Slack org connection setup, Salesforce record sharing in Slack, Slack workspace admin approval, connecting Salesforce to Slack. NOT for building custom Slack apps or Slack bots (separate development platform), not for Slack Workflow Builder Salesforce connector (use slack-workflow-builder skill), not for Flow-based Slack messaging (use flow-for-slack skill).