Loading...
Loading...
Configures and deploys enhanced chat Messaging Channels for Messaging for In-App and Web (MIAW). Use when the user needs to create, deploy, and activate a messaging channel configured with Omni-Channel Flow, Omni-Channel Queue, User, or Agentforce Service Agent routing. Generates MessagingChannel metadata, deploys it to the target org, and activates the channel with User Verification, pre-chat forms, automated responses, consent settings, and all customizable channel options via Metadata API. TRIGGER when the user mentions messaging channel, MIAW, enhanced chat, in-app messaging, web messaging setup, or references a .messagingChannel-meta.xml file. DO NOT TRIGGER when the user is configuring legacy Live Agent chat, Embedded Service deployments without messaging, or standard Omni-Channel routing rules without a messaging channel.
npx skill4agent add forcedotcom/sf-skills service-digital-engagement-channel-configureMessagingChannelMessagingChannelautomation-flow-generateservice-digital-engagement-deployment-configureplatform-permission-set-generatemasterLabeltruemasterLabel<Name>.messagingChannel-meta.xmlQueueFlowUserAgentforceServiceAgenttruemessagingChannelTypeEmbeddedMessagingauthModeAuthchatAbandonmentTimeout5endUserIdleTimeOut5isAttachmentUploadEnabledtruemaxFileSize5allowedFileTypesbmp,csv,doc,docx,gif,jpg,pdf,png,tiff,txt,xls,xmlanonymousUserJwtExpirationTime360verifiedUserJwtExpirationTime60isAbandonedChatsEnabledfalseisSaveTranscriptEnabledfalseisFallbackMessageEnabledfalseisEstimatedWaitTimeEnabledfalseisFileAttachmentExtUnrestrictedfalseisQueuePositionEnabledfalseisSynchronousChatEnabledfalseisVoiceModeEnabledfalsescripts/check-api-version.sh 67.0 <org-alias>sfdx-project.json"sourceApiVersion": "67.0"scripts/normalize-channel-name.sh "<LABEL>"sf data query --query "SELECT Id, DeveloperName FROM Group WHERE Type='Queue' AND DeveloperName='<QUEUE_NAME>'" --target-org <org-alias>sf data query --query "SELECT Id, ApiName FROM FlowDefinitionView WHERE ApiName='<FLOW_NAME>' AND IsActive=true" --target-org <org-alias>sf data query --query "SELECT Id, Username FROM User WHERE Id='<USER_ID>' AND IsActive=true" --target-org <org-alias>sf data query --query "SELECT Id, DeveloperName FROM BotDefinition WHERE DeveloperName='<BOT_NAME>'" --target-org <org-alias>.queue-meta.xmlMessagingSessionqueueSobjectreferences/channel_settings.mdassets/messaging_channel_template.xmlsessionHandlerType| Routing Type | | Required Fields |
|---|---|---|
| Omni-Channel Queue | | |
| Omni-Channel Flow | | |
| User | | |
| Agentforce Service Agent | | |
embeddedConfig.authModeAuth<messagingAuthorizations>embeddedConfig.authModeUnAuth<messagingAuthorizations><embeddedConfig>allowedFileTypesanonymousUserJwtExpirationTimeverifiedUserJwtExpirationTimechatAbandonmentTimeoutisAbandonedChatsEnabledisAttachmentUploadEnabledisEstimatedWaitTimeEnabledisFallbackMessageEnabledisFileAttachmentExtUnrestrictedisSaveTranscriptEnabledmaxFileSize<messagingKeywords>OptOut<keyword>Help<keyword><standardParameters>parameterType<actionParameterMappings>actionParameterName<customParameters>namemasterLabelparameterDataTypeexternalParameterNamemaxLength<actionParameterMappings>actionParameterName.messagingChannel-meta.xmlmessagingChannels/.messagingChannel-meta.xmlsf project deploy start --source-dir <path-to-messagingChannels-folder> --target-org <org-alias>sf data update record --sobject MessagingChannel --where "DeveloperName='<CHANNEL_NAME>'" --values "IsActive=true" --target-org <org-alias><automatedResponses>autoResponseContentType: TextResponselanguageresponse| Constraint | Rationale |
|---|---|
| File name serves as the channel API name | No |
| Setting |
Flow routing requires both | Queue is the mandatory fallback for human escalation |
User routing requires both | Queue is the mandatory fallback when user is unavailable |
ASA routing requires both | Queue is the mandatory fallback for human escalation |
| Platform limit on channel labels |
File name must match | API name format enforced by Metadata API |
| Not a nested list or array |
| Not a comma-separated list |
| Incomplete parameters fail silently |
File extension is | Metadata API uses this specific extension |
Do not hardcode file paths — respect | Customer orgs customize source paths |
| Channel must be activated after deployment | Channels are inactive by default — messages won't route until activated |
| Platform rejects "You can't enable Session-Based Chat for verified users" for Auth channels |
| Issue | Resolution |
|---|---|
| Channel name conflicts with existing channel | Check org for existing channels; file name must be unique |
| Queue not found on deploy | Ensure the referenced queue exists and has |
| Omni-Channel Flow not found on deploy | Ensure the referenced flow exists and is active before deploying the channel |
| ASA bot reference invalid | Bot must be published and active; use exact developer name from BotDefinition metadata |
| Flow or ASA routing fails without fallback queue | |
| JWT verification not working | Connected app and certificate must be configured for the org |
| Custom parameters not collected | |
| Automated responses not showing | Use exact |
| Channel deployed but messages not routing | Channel must be activated after deployment — it defaults to inactive |
| "You can't enable Session-Based Chat for verified users" | Set |
^[a-zA-Z][a-zA-Z0-9_]*$masterLabelmessagingChannelTypeEmbeddedMessagingsessionHandlerTypeQueueFlowUserAgentforceServiceAgentsessionHandlerQueuesessionHandlerFlowsessionHandlerUsersessionHandlerAsasessionHandlerQueueembeddedConfig.authModeAuthembeddedConfig.authModeUnAuthchatAbandonmentTimeoutallowedFileTypesmaxFileSizeanonymousUserJwtExpirationTimeverifiedUserJwtExpirationTimetypeOptOutConfirmationHelpResponseresponseOptOut<keyword>languageIsActive=true<source-path>/messagingChannels/<ChannelName>.messagingChannel-meta.xmlassets/messaging_channel_template.xml| Need | Delegate to |
|---|---|
| Creating the Omni-Channel Flow for routing | |
| Creating permission sets for messaging agents | |
| Creating the Embedded Service Deployment | |
| File | When to read |
|---|---|
| Before generating — use as the starting structure |
| When configuring channel options beyond defaults |
| Phase 1 — verify org API version meets the passed minimum (67.0) |
| Phase 1 — derive file API name from channel label |
| To verify output for Omni-Channel Flow routing |
| To verify output for Omni-Channel Queue routing |
| To verify output for Agentforce Service Agent routing |