The extension sends code to the selected code version of a connection in three ways:
- Auto upload sends each file that changes in a linked cartridge to the active connection
- B2C - Upload to Active Instance uploads the files and folders you pick
- The Deployment Manager deploys linked cartridges to every instance you select, each to its own code version
Every step is written to the B2C Sync Log output channel. It is the only record of uploads and deployments, and it starts empty each time VS Code starts
Before you upload
- Add the instance in Connections and select its Code Version. The connection needs an account with a username and a password or WebDAV access key
- Link your cartridges with Cartridge Management. Uploads and deployments send files from linked cartridges and modules. When a connection has Connection Cartridges, the cartridges in that list are sent too, even if they are not linked
- Linking a cartridge does not change the site's cartridge path on the instance. Keep the cartridge path of the site aligned with the code you deploy
- Uploading and deploying are paid features, gated as Upload, Auto upload, and Deploy. Without access, the status bar items are hidden
Status bar
The active connection's status bar items sit on the left, in this order:
| Item | Tooltip | Click |
|---|---|---|
| Connection | Active connection | Pick another active connection. With no connections, the item adds one |
| Code version | Selected Code Version on Sandbox 01 | Change the code version. Without one, the item reads Select Code Version on a red background |
| Wand | Switch to Active Code Version on Sandbox 01 | Select the code version that is active on the instance |
| Deploy | 🚀 Deployment Manager | Open the Deployment Manager. It spins while a deployment runs |
| Auto upload | Auto Upload Enabled for Sandbox 01 or Auto Upload Disabled for Sandbox 01 | Turn auto upload on or off for the active connection |
The deploy and auto upload items appear once the workspace has a linked cartridge and at least one connection
Auto upload
Click the auto upload item to turn it on for the active connection. Each connection keeps its own state in the workspace, so switching connections switches auto upload with it. The B2C Sync Log shows 🙉 File Watcher Started and 🙈 File Watcher Stopped
While it is on, a file watcher follows every linked cartridge:
- A file that changes on disk is uploaded to the selected code version, whether you saved it, a Git checkout changed it, or another tool wrote it
- A file or folder you delete locally is deleted on the instance
- A TypeScript file is transpiled first, and its
.jsfile is uploaded to the same path. If the transpile fails, nothing is uploaded - A new empty folder is not created on the instance; its files are uploaded as they change
- Every file inside the cartridge folder is uploaded, so keep dependencies and build output outside cartridge folders
- Uploads run in a queue, up to
intellij-sfcc.concurrentRequestsPerSecondat a time. Queued files are dropped when you switch the active connection or its code version
After a save, the line under the cursor turns green for a second when the upload succeeds, or red when it fails. The B2C Sync Log shows 🆕 Created for a new file or 🔄 Updated for a changed or deleted one, with the cartridge path. A failed upload logs [☁️ Sandbox 01] HTTP Code: 401 | Path: ... | Unauthorized. Please check your credentials., and its notification offers Select Account
Upload selected files
B2C - Upload to Active Instance uploads exactly what you pick to the selected code version of the active connection. Run it from the context menu of the Explorer, the editor, or an editor tab. Select several files or folders to upload them together. From the Command Palette, it uploads the current Explorer selection
- Each item has to be inside a linked cartridge or module, or a cartridge in the connection's Connection Cartridges list. A folder and a file inside it count once
- Each item is zipped, uploaded next to its remote folder, unzipped on the instance, and the archive is removed
node_modules,.git,.vscode,.idea,.intellij-sfcc,.settings,.DS_Store, and.eslintrcare left out. TypeScript sources are transpiled and uploaded as JavaScript, without.d.tsfiles- A cartridge folder uploads the whole cartridge on top of the remote one. Files that exist only on the instance stay. To replace a cartridge, deploy it
- The notification, titled with the connection, counts Zipping 2/4 and Uploading 2/4 and can be cancelled. Up to 15 items upload at a time
- While a deployment runs, the command warns Sandbox 01 → deployment in progress. Please wait and try again. and does not upload
| Message | Why |
|---|---|
| Nothing to upload. Make sure file/folder you select is child of linked cartridge or module. | None of the selected items is in a linked cartridge or module |
| 🚨 You specified Connection Cartridges for Sandbox 01 connection. File you want upload is from int_loyalty cartridge and it's not in the list of Connection Cartridges. | The connection has Connection Cartridges and the file's cartridge is not in the list. Edit Connection Cartridges opens the list |
| No active connection. Please create or select active connection. | No connection is active. Select B2C Connection picks one, or Add B2C Connection adds the first one |
Deploy with the Deployment Manager
Click the deploy item in the status bar or run Intellij SFCC: Deploy code to Active B2C Instance from the Command Palette. The 🚀 Deployment Manager opens with Confirm instances, code versions to deploy the code. Press Esc to exit
- The active connection comes first, under Active connection, and is selected
- Grouped connections follow under their group names. Connections without a group follow without a header of their own
- Each row shows the code version it deploys to, or Not selected
- Instances you saved with Save Selection for Future Deployments come back selected
- Select every instance to deploy to, then press OK. The Deployment Manager has no history view; the B2C Sync Log keeps the record
| Button | Where | What it does |
|---|---|---|
| Change Code Version | Row | Opens 🚀 Confirm code version for deployment | Sandbox 02 with a Back button. The version you pick becomes the connection's selected code version, and the Deployment Manager reopens. The picker also creates and deletes code versions |
| Switch to Active Code Version on Instance | Row | Selects the code version that is active on that instance |
| Include .apiversion file into deployment | Title | Opens Set API Compatibility Version |
| Switch to Active Code Version on All Instances | Title | Selects the active code version of every listed connection, with a Switching to Active Code Versions progress. It changes each connection's selected code version |
| Save Selection for Future Deployments | Title | Remembers the selected instances for the current active connection and confirms ✅ Selection saved based on current active connection for future deployments |
API compatibility version
Set API Compatibility Version takes a version such as 18.10. When it is set, each deployment from the Deployment Manager uploads an .apiversion file with version=18.10 to the root of the code version, and the title button turns on. The value is one per workspace and applies to every instance. Press Esc to keep the current value, or clear the field to deploy without the file. After a deployment with a compatibility version, re-enable the code version on the instance
A deployment does not activate the code version. If it is not the active one on the instance, activate it in Business Manager, or use the code version actions in Connections, before you test
What a deployment does
Every selected instance deploys at the same time, in its own background worker, with its own notification titled with the connection name. For each instance:
Transpile and zip
TypeScript is transpiled, then 📦 Zipping cartridges... zips the linked cartridges and modules, or the Connection Cartridges when the connection has a list. node_modules and .git folders are left out. The B2C Sync Log shows 💾 TOTAL SIZE: 1.8 MB (zipped)
Remove the old cartridges
🗑 Removing remote cartridges 2/4 removes the cartridges with the same names as the ones being deployed, plus .apiversion. Cartridges that are only on the instance stay. Each one is logged as 🗑️ app_custom → removing remote cartridge
Upload the compatibility file
When a compatibility version is set, 🏷️ Sandbox 01 → uploading .apiversion ... sends the .apiversion file
Upload the cartridges
🚀 Uploading cartridges 3/4 uploads each archive, unzips it on the instance, and removes the archive. The log shows 📤 app_custom → uploading zip..., then the unzip and the zip removal
To empty the whole code version in step 2 instead, turn on intellij-sfcc.deployment.clearCodeVersion (Clear Code Version Before Deployment, off by default). Connections with Connection Cartridges never clear the code version
When an instance is done, ✅ Sandbox 01: Deployment completed. Duration: 00 min, 14 sec offers See details, which brings up the B2C Sync Log. The summary of that instance is printed there as soon as it finishes:
◢■■■■■■■■■■■■■■■■■■ ◈ DEPLOYMENT ◈ ■■■■■■■■■■■■■■■■■■■■■◣
▌ ⟫ Sandbox 01 (dev01-sfcc.demandware.net)
▌ ┌─────────────────────────────────────────────────┐
▌ │ STATUS................ ✅ DONE
▌ │ DURATION.............. 00 min, 14 sec
▌ │ CARTRIDGES............ 4
▌ │ CODE VERSION.......... version3
▌ │ SIZE.................. 1.8 MB (zipped)
▌ │ COMPATIBILITY MODE.... Not Specified
▌ └─────────────────────────────────────────────────┘
◥■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■◤Cancel a deployment from its notification. Cartridges that were already removed are not restored, so the code version stays partial until you deploy again. A failed upload or unzip, such as app_custom → ERROR UNZIP. Run code deployment again., leaves it the same way
With nothing to deploy, the extension reports No cartridges to deploy to Sandbox 01 instance. A WebDAV error during a deployment shows its message with See details to bring up the B2C Sync Log
B2C Sync Log
The B2C Sync Log output channel opens with 🚀 B2C Sync Terminal Started and records every upload and deployment. Each line starts with the connection and the code version, for example [Sandbox 01] [version3] 🔄 Updated app_custom/cartridge/controllers/Checkout.js. Lines from a deployment carry the instance they belong to, so parallel deployments stay readable
| Line | Meaning |
|---|---|
| 🙉 File Watcher Started / 🙈 File Watcher Stopped | Auto upload turned on or off |
| 🆕 Created / 🔄 Updated | Auto upload sent a new file, or a changed or deleted one |
| 🚨 You specified Connection Cartridges... | Auto upload skipped a file outside the connection's Connection Cartridges |
| Uploaded | B2C - Upload to Active Instance sent an item |
| 💾 TOTAL SIZE | The zipped size of a deployment |
| 🗑️ ... → removing remote cartridge / 📤 ... → uploading zip... | Deployment progress for each cartridge |
| ◈ DEPLOYMENT ◈ | The summary block of a finished deployment |
| HTTP Code, Path | A failed auto upload or WebDAV request, with the reason |
Validation and errors
Before any upload or deployment, the extension checks the connection
| Message | Fix |
|---|---|
| 😱 Username is not provided for Sandbox 01 connection | Select Account opens the account picker |
| 😱 Password is not provided for Sandbox 01 connection | Edit Password sets the account's password, or add a WebDAV access key for the host in Credentials |
| 😱 Code version is not selected for Sandbox 01 connection | Select Code Version opens the code version picker |
| 😱 No active B2C connection | Make a connection active before you turn on auto upload |
Connection Cartridges
By default, deployment and auto upload use every linked cartridge. To limit one connection to a subset, open Connection Cartridges under the connection's Settings and choose Edit Connection Cartridges. With a list in place:
- Deployments send only those cartridges and never clear the code version
- Auto upload and B2C - Upload to Active Instance skip files from other cartridges
- The list can include cartridges that are not linked. They deploy and upload, but auto upload does not watch them and their TypeScript is not transpiled
- Code assistance still uses all linked cartridges
Compare with the instance
Compare with B2C Instance in the editor title bar of a file in a linked cartridge opens a diff titled Local ↔ Sandbox 01 (version3), against the same file in the selected code version of the active connection. Use it to check what the sandbox runs before you upload, or after a teammate deployed. For TypeScript, it compares the transpiled JavaScript
TypeScript projects
SFCC runs JavaScript, so uploads and deployments send the transpiled .js of your TypeScript sources:
- The extension transpiles every linked cartridge when the cartridges load and before a deployment, the selected files before B2C - Upload to Active Instance, and a changed file while auto upload is on
- Output goes to
.intellij-sfcc/transpiled/<cartridge>/in the workspace, with source maps. Messages go to the B2C TypeScript Transpiler output channel - Show Transpiled File in the editor title bar opens the
.jsfor the TypeScript file in the editor
To build the same output in CI, see TypeScript transpilation and CI/CD
Deploys from AI agents
The SFCC MCP server can upload and deploy too. intellijsfcc.deploy.plan and intellijsfcc.deploy.execute deploy the linked cartridges to the active connection, to its selected code version or one the agent names, once you confirm in VS Code. This deployment runs inside VS Code instead of a worker:
- It cannot be cancelled
- It does not send the
.apiversionfile - It clears the B2C Sync Log before it starts
Agents also read the deploy state with intellijsfcc.deploy.settings.status, intellijsfcc.upload.queue.status, and intellijsfcc.auto_upload.status, and change the clear-before-deploy and compatibility version settings with the confirmed intellijsfcc.deploy.settings.update pair. See SFCC MCP
Settings
| Setting | Default | What it does |
|---|---|---|
intellij-sfcc.deployment.clearCodeVersion | false | Empties the code version before a deployment uploads |
intellij-sfcc.concurrentRequestsPerSecond | 7 | Maximum parallel WebDAV requests for auto upload and deployments. A value below 1 falls back to 10. A change applies without a reload |
Related pages
Connection Settings
Account, code version, auto upload, and Connection Cartridges of a connection
B2C WebDAV Explorer
Browse the deployed code versions and upload by drag and drop
Cartridge Management
Link the cartridges that uploads and deployments send
Debugging
Step through the deployed code on your sandbox