
service-digital-engagement-deployment-configure
Configures Embedded Messaging Deployments for Messaging for In-App and Web (MIAW). Use when the user needs to create a new embedded messaging deployment from scratch using Connect API with defaults, or update an existing deployment's settings using Metadata API. Produces Connect API request payloads for new deployments and EmbeddedServiceConfig metadata XML for updates. TRIGGER when the user mentions embedded messaging deployment, embedded service deployment, MIAW deployment, messaging widget setup, chat widget configuration, embedded chat deployment, or references a .EmbeddedServiceConfig-meta.xml file. DO NOT TRIGGER when the user is creating a messaging channel (use service-digital-engagement-channel-configure), configuring legacy Live Agent embedded service, or generating the JavaScript code snippet for website embedding.
- Installs
- 2.4K
- Last 24h
- +9
- Trending rank
- #9075
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/forcedotcom/sf-skills --skill service-digital-engagement-deployment-configure- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads service-digital-engagement-deployment-configure automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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), generating the website code snippet (offered only as a next step, seereferences/code_snippet.md), creating Experience Sites (Connect API prerequisite for Web type)
Entry points and transport
- Delegated (
context.calledFrom == "service-onboarding"): use the approvedvalues, ask nothing, and returnfailednaming any missing required key. Standalone (nocontext): run Clarifying Questions. - Transport A (primary): headless-360 MCP
dispatch/dispatch_readonlyon/services/data/vXX.0/headless/metadata. Transport B: thesfcommands below, only where a probe shows Transport A unavailable. Exception: Web create always uses thesfCLI (step 17a).
Details: references/onboarding_contract.md (§1 entry points, §2 transport, §3 pre-scan, §5 result).
Clarifying Questions
Before generating, ask the user if not already clear (standalone only):
- 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 pre-chat (if requested): the questions in
references/prechat_forms.md§Inputs to Gather - 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 as
masterLabel. Derive the API name (fullName/DeveloperName, Connectname) from it: replace each run of characters other than letters and digits with_, then trim leading/trailing_(Acme Support Chat→Acme_Support_Chat). The result must match^[a-zA-Z][a-zA-Z0-9_]*$. Use the API name for every lookup and write - 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): see
references/prechat_forms.md§Inputs to Gather - 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 — standalone: ask whether the user wants to create a new deployment or update an existing one. Delegated: taken from
values.operation, then confirmed by the pre-scan (step 4a). -
Collect inputs — standalone: per Clarifying Questions. Delegated: from
values(deploymentName,deploymentType,channelNamerequired).
3a. Probe transport — read-only GET of EmbeddedServiceConfig (contract §2).
- Read deployment settings reference — load
references/deployment_settings.mdto understand all available configuration options.
4a. Pre-scan — look up the deployment by its derived API name (contract §3): none → create (Phase 2A); matches → no write, already-configured, skip to Phase 3; differs → update (Phase 2B), announce each change (standalone: ask first); linked to a different channel → standalone: ask before repointing, delegated: failed. Standalone, deployment exists: offer exactly three choices — no change / override / add to existing.
Phase 2A — Create New Deployment
Use this path when the operation is create.
-
Determine API method by type — API/Mobile: Metadata API deploy. Web: Connect API (creates the Experience Site). All types need the channel to exist.
-
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 — as in step 17.
Phase 2B — Update Existing Deployment (Metadata API)
Use this path when the operation is update.
-
Retrieve the existing deployment — take the current
EmbeddedServiceConfigfrom the org before making changes. Transport A: thexmlRepfrom the step 3a/4aGET. Transport B:sf project retrieve start --metadata EmbeddedServiceConfig:<DEPLOYMENT_NAME> --target-org <org-alias>Use it as the starting structure — the update is always a full document (see Rules). If retrieval is not possible, load
assets/esd_web_update_template.xmlas a fallback reference. -
Apply messaging channel settings — in
<embeddedServiceMessagingChannel>setmessagingChannel(the channel'schannelPlatformKey) and the UI toggles (shouldShow*,shouldStartNewLineOnEnter, invitation flags). Include every boolean, even whenfalse; full list inreferences/deployment_settings.md. Leave eachshouldShow*/shouldStartNewLineOnEnterat its retrieved value (defaultfalseif nothing was retrieved); set one totrueonly when the user explicitly asks for that feature — never infer it from an example. -
Apply pre-chat forms — pre-chat is OFF by default: omit
<embeddedServiceForms>unless the user asks to collect data before the conversation. If they do, readreferences/prechat_forms.mdfirst and follow it (field attributes, hidden fields, ChoiceList,displayNameFormat, deactivate vs. remove).- Before generating, run the checks in its §Validating and Remediating Prerequisites against the retrieved channel. Channel fixes go through
service-digital-engagement-channel-configure; never hand-edit the channel here. - Delta to graft onto a base deployment:
examples/esd_web_prechat_fields.xml.
- Before generating, run the checks in its §Validating and Remediating Prerequisites against the retrieved channel. Channel fixes go through
-
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) — set
isInvitationEnabledtotrue, add<embdMsgChannelInvitationConditions>(fields and operators inreferences/deployment_settings.md), and keepformula(e.g.1 AND 2) in sync with the conditionsequencenumbers whenever conditions change. -
Apply additional settings:
isTermsAndConditionsEnabled/isTermsAndConditionsRequired— T&C in pre-chatsite— Web: the retrieved value, unchanged (see Rules); omit for API/Mobile
-
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 (Web) — only after the user approves, per step 17c
- Generate code snippet for integration — see
references/code_snippet.md
Phase 2C — Apply to the org
Runs for both Phase 2A and 2B, except when the pre-scan returned already-configured. Standalone: confirm before writing. Delegated: the plan approval is the confirmation; still announce each write.
17a. Write the deployment —
- Web create: Connect API (see references/connect_api_creation.md) via sf api request rest — always, not dispatch (MCP dispatch fails with INTERNAL_ERROR during site creation).
- API/Mobile create: Transport A POST EmbeddedServiceConfig (body carries type, fullName, xmlRep); Transport B sf project deploy start.
- Update: Transport A PUT of the full document; Transport B sf project deploy start.
Check results[].success, not just HTTP status. On failure stop and report the step — no silent retry.
17b. Re-read and diff — GET the component again and confirm every intended field landed and no inline block (embeddedServiceMessagingChannel, forms) was dropped.
17c. Publish (Web only) — never automatic. Publishing makes the changes live to customers; the deploy only saves a draft. After 17b, stop: summarize what changed, give the plain Setup link <instanceUrl>/lightning/setup/EmbeddedServiceDeployments/<EmbeddedServiceConfigId>/view so the user can review the draft, and ask whether to publish now. Publish only on an explicit yes in that turn (a "publish" in the original request does not count). Then dispatch POST on the fully-qualified publish path; if it returns a path/route error, or on Transport B, run the sf publish command from references/connect_api_creation.md. Delegated: do not publish; return published: false. Note: a Web create via Connect API publishes by itself (isPublishSuccess: true); say so in the plan before creating.
Phase 3 — Validate
-
Verify against checklist — confirm all items in the Verification Checklist below pass.
-
Report — delegated: return the contract §5 result. Standalone: the same outcome in plain language.
Rules / Constraints
| Constraint | Rationale |
|---|---|
deploymentType must be API, Mobile, or Web | Platform rejects other values |
Web updates must include site, set to the retrieved value unchanged | Site (ESW_<name>_<timestamp>) is auto-generated at creation; the platform rejects a missing or changed value |
embeddedServiceMessagingChannelName must reference an existing channel | Deployment fails if channel doesn't exist |
File extension is .EmbeddedServiceConfig-meta.xml | Metadata API uses this specific extension |
Do not hardcode file paths — respect sfdx-project.json package directories | Customer orgs customize source paths |
| Do not embed deploy/push commands inside generated files or artifacts | Artifacts stay portable; in-session writes happen in Phase 2C through the chosen transport |
| Update with the full retrieved document, never a minimal PUT | Omitted inline blocks can be silently cleared by the update |
Gotchas
| Issue | Resolution |
|---|---|
| Branding overrides not applied | Use Tooling API to update individual BrandingSet properties after the deployment is created |
Pre-chat form, field, ChoiceList, or displayNameFormat issues | See the Gotchas table in references/prechat_forms.md |
| Changes not appearing in widget | The deploy is a draft until published (step 17c) |
sf api request rest fails ("No 'mode' found", "Nonexistent flag: --url") | See references/connect_api_creation.md §Publishing After Updates |
| Deploy fails with "required field missing" or "upsert failed null" | All attributes are mandatory: boolean fields in embeddedServiceMessagingChannel (include all even with default false), and all pre-chat form field attributes |
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? - Pre-chat (if configured): does every item in the
references/prechat_forms.mdVerification Checklist pass? - 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
- Web: did you stop before publishing, give the review link, and publish only after the user's explicit yes? Is the user reminded to activate any deployed messaging components (Tooling API)?
Output Expectations
Deliverables:
- API/Mobile create, and any update:
<source-path>/EmbeddedServiceConfig/<DeploymentName>.EmbeddedServiceConfig-meta.xml - Web create: Connect API payload and instructions (no XML file)
File structure follows the templates in assets/.
Cross-Skill Integration
| Need | Delegate to |
|---|---|
| Creating the messaging channel | service-digital-engagement-channel-configure skill |
| Channel custom parameters, flow-variable mappings, or Queue → Omni-Flow routing | service-digital-engagement-channel-configure skill (pass the retrieved channel; see step 12) |
| Creating Omni-Channel routing flows | automation-flow-generate skill |
| Creating permission sets for agents | platform-permission-set-generate skill |
Reference File Index
| File | When to read |
|---|---|
references/onboarding_contract.md | Pre-scan (§3, both modes); delegated mode (context.calledFrom == "service-onboarding"), org writes (transport), module registration |
assets/esd_api_mobile_template.xml, assets/esd_web_update_template.xml | Before generating API/Mobile deployments and Web updates, respectively |
references/deployment_settings.md | When configuring deployment options beyond defaults; less common gotchas (embedded flow, reCAPTCHA, business hours) |
references/prechat_forms.md | Whenever pre-chat is requested — inputs, field rules, ChoiceList, displayNameFormat, deactivate vs. remove, pre-chat gotchas and checklist |
references/connect_api_creation.md | When creating Web type deployments (Connect API required); publish command and ID query |
references/branding_and_tooling.md | When user asks about branding configuration |
references/code_snippet.md | When user wants the JavaScript embed code snippet for their website |
scripts/check-api-version.sh | Phase 1 — verify org API version meets the passed minimum (67.0) |
examples/esd_api.xml, esd_mobile.xml, esd_web_full.xml, esd_web_prechat_fields.xml | To verify output per type; the pre-chat file is a forms delta to graft onto esd_web_full.xml |
FAQ
What does the service-digital-engagement-deployment-configure skill do?
Configures Embedded Messaging Deployments for Messaging for In-App and Web (MIAW). Use when the user needs to create a new embedded messaging deployment from scratch using Connect API with defaults, or update an existing deployment's settings using Metadata API. Produces Connect API request payloads for new deployments and EmbeddedServiceConfig metadata XML for updates. TRIGGER when the user mentions embedded messaging deployment, embedded service deployment, MIAW deployment, messaging widget setup, chat widget configuration, embedded chat deployment, or references a .EmbeddedServiceConfig-meta.xml file. DO NOT TRIGGER when the user is creating a messaging channel (use service-digital-engagement-channel-configure), configuring legacy Live Agent embedded service, or generating the JavaScript code snippet for website embedding.
How do I install service-digital-engagement-deployment-configure?
Run npx skills add https://github.com/forcedotcom/sf-skills --skill service-digital-engagement-deployment-configure in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/service-digital-engagement-deployment-configure/ (personal) or .claude/skills/service-digital-engagement-deployment-configure/ (project).
Which AI agents can use service-digital-engagement-deployment-configure?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is service-digital-engagement-deployment-configure safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains service-digital-engagement-deployment-configure?
It is published by forcedotcom in forcedotcom/sf-skills. It has 2,427 recorded installs.
More from forcedotcom/sf-skills
platform-apex-generate
forcedotcom/sf-skills
Primary Apex authoring skill for class generation, refactoring, and review. ALWAYS ACTIVATE when the user mentions Apex, .cls, triggers, or asks to create/refactor a class (service, selector, domain, batch, queueable, schedulable, invocable, DTO, utility, interface, abstract, exception, REST resource). Use this skill for requests involving SObject CRUD, mapping collections, fetching related records, scheduled jobs, batch jobs, trigger design, @AuraEnabled controllers, @RestResource endpoints, custom REST APIs, or code review of existing Apex.
platform-apex-test-generate
forcedotcom/sf-skills
Use to generate and validate Apex test classes with TestDataFactory patterns, bulk testing (251+ records), mocking, assertions, and disciplined test-fix loops. Use when creating Apex test classes (for triggers, services, controllers, batch jobs, queueables, and callouts), improving coverage, debugging or fixing failing Apex tests, or running test/coverage analysis. Triggers on Test.cls files, sf apex run test, coverage reports. Do NOT trigger for production Apex (use platform-apex-generate) or Jest/LWC tests.
platform-apex-test-run
forcedotcom/sf-skills
Apex test execution, coverage analysis, and test-fix loops with 120-point scoring. Use when the user runs Apex tests, checks code coverage, fixes failing tests, or touches Test.cls / Test.cls files. DO NOT TRIGGER when writing Apex production code (use platform-apex-generate), Agentforce agent testing (use agentforce-test), or Jest/LWC tests (use experience-lwc-generate).
platform-apex-logs-debug
forcedotcom/sf-skills
Salesforce debug log analysis and troubleshooting with 100-point scoring. TRIGGER when: user analyzes debug logs, hits governor limits, reads stack traces, or touches .log files from Salesforce orgs. DO NOT TRIGGER when: running Apex tests (use platform-apex-test-run), generating or fixing Apex code (use platform-apex-generate), or Agentforce session tracing (use agentforce-observe).
platform-soql-query
forcedotcom/sf-skills
Use when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan/selectivity analysis, and performance or safety improvements. TRIGGER when the user writes, optimizes, or debugs SOQL/SOSL, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER for bulk data operations (use platform-data-manage), Apex DML logic (use platform-apex-generate), or report/dashboard queries.
platform-metadata-deploy
forcedotcom/sf-skills
Salesforce DevOps automation using sf CLI v2. TRIGGER when: user deploys metadata, validates a deploy or does a dry-run, deploys to a Production org, quick-deploys a validated job ID, ships/promotes to prod, creates/manages scratch orgs or sandboxes, sets up CI/CD pipelines, or troubleshoots deployment errors with sf project deploy. DO NOT TRIGGER when: writing Apex code, building LWC components (use experience-lwc-generate), creating metadata definitions (use platform-custom-object-generate), deleting metadata from an org (use platform-destructive-deploy), or querying org data (use platform-data-manage).
Popular devops & cloud skills
microsoft-foundry
microsoft/azure-skills
Build, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and resources end to end. USE FOR: foundry, azd ai agent, azd provision/deploy, hosted agent scaffold/develop/run/deploy/troubleshoot, prompt agent create, managed harness agent create, GitHub Copilot harness agent, create agent, update agent, add tool to agent, invoke agent, agent insights, evaluate agent, batch eval, continuous eval, continuous monitoring, agent CI/CD, optimize prompt, improve prompt, optimize agent instructions, Agent Optimizer scaffold, dataset curation from traces, deploy model, model fine-tuning (SFT/DPO/RFT), Foundry project, RBAC, role assignment, permissions, quota, capacity, region, deployment failure, AI Services, create Foundry resource, knowledge index, customize deployment, onboard, availability, training-data, grader, distillation, large file upload. DO NOT USE FOR: Azure Functions, App Service, general Azure deploy (use azure-deploy), general Azure prep (use azure
azure-diagnostics
microsoft/azure-skills
Debug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, container app 503 or target port mismatch, troubleshoot functions, function telemetry missing or stopped after a config/connection-string change, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, analyze logs, KQL, insights, image pull failures, cold start issues, health probe failures, resource health, root cause of errors, troubleshoot event hubs, troubleshoot service bus, messaging SDK error, AMQP connection failure, message lock lost, lock renewal during long-running processing, service bus dead letter.
azure-prepare
microsoft/azure-skills
Prepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azd infrastructure, modernize app for Azure with azd, deploy with azd, function app, timer trigger, service bus trigger, event-driven function, managed identity, generate Bicep, generate Terraform, create and deploy to Azure.
azure-ai
microsoft/azure-skills
Use for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.
azure-deploy
microsoft/azure-skills
Execute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: "run azd up", "run azd deploy", "execute deployment", "push to production", "push to cloud", "go live", "ship it", "bicep deploy", "terraform apply", "publish to Azure", "launch on Azure". DO NOT USE WHEN: "create and deploy", "build and deploy", "create a new app", "set up infrastructure", "create and deploy to Azure using Terraform" — use azure-prepare for these.
azure-validate
microsoft/azure-skills
Pre-deployment validation for Azure readiness. Run deep checks on configuration, infrastructure (Bicep or Terraform), RBAC role assignments, managed identity permissions, and prerequisites before deploying. WHEN: validate my app, check deployment readiness, run preflight checks, verify configuration, check if ready to deploy, validate azure.yaml, validate Bicep, test before deploying, troubleshoot deployment errors, validate Azure Functions, validate function app, validate serverless deployment, verify RBAC roles, check role assignments, review managed identity permissions, what-if analysis, validate Container Apps deployment.