Configuring Embedded Messaging Deployment
Configures EmbeddedServiceConfig metadata for Salesforce Messaging for In-App and Web (MIAW). Supports two distinct workflows: creating new deployments via Connect API and updating existing deployments via Metadata API.
Scope
- In scope: Creating new Embedded Service Deployments (API, Mobile, Web types) via Connect API; updating existing deployments with forms, branding, channel settings, and features via Metadata API; generating
EmbeddedServiceConfigXML for updates - Out of scope: Creating the messaging channel itself (use
service-digital-engagement-channel-configure), publishing deployments (Connect API post-step), creating Experience Sites (Connect API prerequisite for Web type)
Clarifying Questions
Before generating, ask the user if not already clear:
- Create or update? Are you creating a new deployment or updating an existing one?
- Deployment type? API (headless), Mobile (native apps), or Web (browser widget)?
- Channel name? What is the
channelPlatformKeyof the messaging channel to associate? - For create: What should the deployment be named?
- For update: What features to configure? (pre-chat forms, business hours, T&C, UI toggles)
- For update (Web): What is the Experience Site name? Branding overrides needed?
Required Inputs
Gather or infer before proceeding:
- Operation:
createorupdate - Deployment type:
API,Mobile, orWeb - Deployment name: Used for
masterLabeland the API name - Channel name: The
channelPlatformKeyof the associated messaging channel
For update operations additionally:
- Site name (Web only): The Experience Site name (format
ESW_<name>_<timestamp>) - Branding name (optional): Reference to existing
BrandingSet - Pre-chat form fields (optional): Field names and required status
- Business hours (optional): Name of existing
BusinessHoursrecord
Defaults unless specified:
isEnabled:truedeploymentFeature:EmbeddedMessaging
Workflow
All steps are sequential. Do not skip or reorder. Branch based on the operation type.
Phase 1 — Gather Context
-
Verify org API version — run
scripts/check-api-version.sh 67.0 <org-alias>and report any errors it returns. If the script fails, generate asfdx-project.jsonin the metadata output folder with"sourceApiVersion": "67.0". -
Determine operation — ask whether the user wants to create a new deployment or update an existing one.
-
Collect inputs — gather deployment name, type, and channel name per Clarifying Questions above.
-
Read deployment settings reference — load
references/deployment_settings.mdto understand all available configuration options.
Phase 2A — Create New Deployment
Use this path when the operation is create.
-
Determine API method by type:
-
For API/Mobile types — read the template
assets/esd_api_mobile_template.xmland generate theEmbeddedServiceConfigXML with:deploymentTypeset toAPIorMobiledeploymentFeatureset toEmbeddedMessaging- All defaults applied
-
For Web type — inform the user that Web deployments require Connect API for initial creation because of a circular dependency between Network and CustomSite. Read
references/connect_api_creation.mdfor the Connect API payload and instructions. -
Generate output — produce the
.EmbeddedServiceConfig-meta.xmlfile (for API/Mobile) or Connect API instructions (for Web). -
Present output and next steps — show the generated file and summarize what was configured. Recommend as next steps:
- Publish the deployment via Connect API to make it live:
To obtain the
EMBEDDED_SERVICE_CONFIG_ID: - Generate code snippet for integration — see
references/code_snippet.md
- Publish the deployment via Connect API to make it live:
To obtain the
Phase 2B — Update Existing Deployment (Metadata API)
Use this path when the operation is update.
-
Retrieve the existing deployment — retrieve the current
EmbeddedServiceConfigmetadata from the org before making changes:Use the retrieved file as the starting structure. If retrieval is not possible, load
assets/esd_web_update_template.xmlas a fallback reference. -
Apply messaging channel settings — configure
<embeddedServiceMessagingChannel>with:messagingChannel— the channel'schannelPlatformKeyshouldShowAgentforceTagline— Agentforce brandingshouldShowDeliveryReceipts— delivery receiptsshouldShowEmojiSelection— emoji pickershouldShowReadReceipts— read receiptsshouldShowTypingIndicators— typing indicatorsshouldStartNewLineOnEnter— Enter key behaviorisChatInvitationCustomizable/isInvitationEnabled— chat invitation settings
-
Apply pre-chat forms — if the user needs pre-chat data collection, generate
<embeddedServiceForms>with<embeddedServiceFormFields>elements containingembeddedServiceFormFieldNameandisRequired. -
Apply branding customization (Web only) — a BrandingSet is automatically created with defaults when the deployment is created via Connect API. If the user wants to override specific branding properties (colors, fonts, dimensions), read
references/branding_and_tooling.mdfor the Tooling API steps to update individual properties. -
Apply invitation (Web only) — if the user wants the widget to proactively invite visitors based on conditions:
- Set
isInvitationEnabledtotruein<embeddedServiceMessagingChannel> - Generate repeatable
<embdMsgChannelInvitationConditions>elements withsequence,conditionType,operand,value, and optionallycustomVariableName - Update the
formulafield in<embeddedServiceMessagingChannel>to reference the condition sequences (e.g.,1 AND 2,1 OR 2). The formula must be updated whenever conditions are added or removed to stay in sync with thesequencenumbers - See
references/deployment_settings.mdfor available condition types and operators
- Set
-
Apply additional settings:
isTermsAndConditionsEnabled/isTermsAndConditionsRequired— T&C in pre-chat- Do NOT update
site— the site name is auto-generated during creation and must never be modified
-
Generate the file — produce the
.EmbeddedServiceConfig-meta.xmlfile at the path the user specifies, or default toEmbeddedServiceConfig/in the project's metadata source path. -
Present output and next steps — show the generated file and summarize what was configured. Recommend as next steps:
- Publish the deployment via Connect API to make changes live:
To obtain the
EMBEDDED_SERVICE_CONFIG_ID: - Generate code snippet for integration — see
references/code_snippet.md
- Publish the deployment via Connect API to make changes live:
To obtain the
Phase 3 — Validate
- Verify against checklist — confirm all items in the Verification Checklist below pass.
Rules / Constraints
Gotchas
Verification Checklist
Universal Checks
- Is
deploymentTypeone ofAPI,Mobile, orWeb? - Is
masterLabelpopulated and unique? - Does
messagingChannelreference an existing channel? - Is
deploymentFeatureset toEmbeddedMessaging? - Is
isEnabledset totrue?
Web Type Checks
- Is
sitepopulated with the Experience Site name? - If branding is configured, does
embeddedServiceBrandingNamereference an existing BrandingSet? - Are pre-chat form field names valid (match channel custom parameters)?
- If
isInvitationEnabledistrue, isformulapopulated and consistent with allsequencenumbers in<embdMsgChannelInvitationConditions>?
API/Mobile Type Checks
- Is
siteUrlempty (no site needed)? - Is
deploymentTypecorrectly set toAPIorMobile?
Post-Deploy Checks
- Is user reminded to publish (Connect API) for Web deployments?
- Is user reminded to activate components (Tooling API) if messaging components were deployed?
Output Expectations
Deliverables:
- For API/Mobile create:
<source-path>/EmbeddedServiceConfig/<DeploymentName>.EmbeddedServiceConfig-meta.xml - For Web create: Connect API payload and instructions (no XML file)
- For update:
<source-path>/EmbeddedServiceConfig/<DeploymentName>.EmbeddedServiceConfig-meta.xml
File structure follows the templates in assets/.


