What you will build

Customers stay in their Voiceflow conversation while your team replies from Salesforce Service Cloud. Your service translates the platform’s conversation operations and events into the live agent handoff system.

This is a developer implementation guide, not a native connector. The API approach has been reviewed against provider documentation; a live account test is required before rollout.

Before you begin

You need a Salesforce org enabled for Bring Your Own Channel for Messaging and an administrator who can configure routing, an HTTPS service, and access to Custom Handoff in Voiceflow. Start with the shared connection starter. Choose one test customer and one support destination.

This requires more setup than a token-based inbox. Salesforce’s Pub/Sub delivery and org routing are part of the implementation; a plain webhook-only receiver is insufficient.

Implement the connection

1

Prepare the support workspace

Complete Salesforce’s Bring Your Own Channel setup: integration configuration, messaging channel, authentication, and routing to service reps. Verify the required licenses in your org.

Confirm a teammate can receive and answer a manually created test conversation before adding Voiceflow.

2

Implement conversation creation

Use the Bring Your Own Channel conversation/interaction flow to establish a messaging session. Persist the Salesforce conversation and messaging-session identities.

Use the starter’s create(request, connectionId) hook. Persist the provider ID and connection ID together. Forward relevant context as an initial summary or supported private note; never inject internal metadata into customer-visible replies.

3

Forward customer messages

Deliver customer messages through the channel’s messaging integration APIs. Do not create Case comments as a substitute for a messaging session.

Implement the starter’s message(providerConversationId, message) hook. Deduplicate the Voiceflow message id. For the first test, support text and explicitly reject unsupported files rather than acknowledging and dropping them.

4

Receive human replies

Subscribe to the outbound platform events specified by the Salesforce integration contract. Convert public rep messages into handoff replies, and persist replay/checkpoint state for your subscription.

After provider authentication succeeds, look up the mapped connection ID and send a normalized message.received event to the starter’s authenticated /events route. Include a stable provider event ID, timestamp and human display name. Do not manufacture an agent.joined event merely because a conversation was created.

5

Implement closure

Map messaging-session closure to the corresponding Salesforce lifecycle operation and Voiceflow end event. Test actual rep-session closure, not only Case status.

Implement the end(providerConversationId) hook. Deliver conversation.ended for provider-initiated closure. Make both paths idempotent so a reflected closure cannot trigger an endless loop.

6

Connect and test in Voiceflow

Configure your service in Settings → Integrations → Custom Handoff, then follow Set up live agent handoff. Set Queue ID only when your service has a documented mapping. Publish to a test environment and use the actual customer channel.

Provider mapping

Keep these identities separate in your service:

Follow Salesforce’s integration setup sequence before wiring the starter hooks. Use a persistent subscriber for outbound events, with replay recovery; do not acknowledge an event until it has been durably queued for delivery. Test session closure independently from Case closure.

Verify a complete handoff

Run this acceptance sequence with a teammate in Salesforce Service Cloud:

  1. Escalate and confirm exactly one conversation appears in the intended inbox.
  2. Check the customer identity and escalation context.
  3. Send “customer test 1” from Voiceflow and “human test 1” from the support inbox. Both must arrive once.
  4. Add a private note; it must not reach the customer.
  5. Replay the same customer-message ID and provider event ID; neither should duplicate a message.
  6. Close from the support inbox and verify the configured return-to-AI path.
  7. Repeat with invalid credentials and an unavailable provider; verify the fallback.

If messages disappear, inspect the provider delivery log, the ID mapping and Voiceflow callback response in that order. A successful create call alone does not establish that the connection works.

Reference and next steps

Provider setup/API documentation · Provider messages/events documentation

Connection API · Event contract · Troubleshooting

Before production, replace in-memory state with durable storage, implement the provider’s retry/refresh rules, and test attachment and routing support only if your deployment needs them.


Use the up and down arrow keys to select a result, Enter to open it, and Escape to close the search.