Intellij SFCC connects your storefront code to the files that give it meaning: cartridge order, metadata XML, hook registrations, routes, templates, and resource bundles. The scripting language server uses a TypeScript language service with bundled SFCC definitions and project-specific types. The VS Code extension adds CodeLens actions, project panels, deployment, and debugging around that intelligence
Start with your existing cartridges. You do not need to install a type package or create a tsconfig.json for SFCC editor support. Features become available as the workspace is discovered and indexed
Open your first cartridge to check file detection, language modes, and the active cartridge context
Choose a language
JavaScript
SFCC API types, JSDoc, CommonJS exports, and SFRA controllers in existing .js files
TypeScript
Typed cartridges, sandbox transpilation, and debugging in your original source
Digital Script
Script and class imports, legacy syntax, and typed pipeline inputs and outputs
ISML
Template tags, includes, embedded expressions, links, and formatting
Language intelligence
Each guide below includes the source files or configuration a feature depends on, an example, and the editor action that makes it useful
Completion & SFCC APIs
Typed dw APIs, project exports, route names, hooks, templates, and resource keys
Cartridge overrides
Resolve require() and follow module.superModule through the active cartridge order
Metadata becomes types
Custom attributes, site preferences, and custom objects, connected back to their XML
Forms & fields
Form XML becomes typed native forms and SFRA getForm results with field navigation
Digital Script
Legacy imports, global-symbol analysis, transitive dependencies, and for each syntax
Definitions & references
Follow implementations, locate indexed callers, and search SFCC symbols across files
Hooks, routes & APIs
Connect configuration to code, including typed system-hook parameters and SFRA extensions
Pipeline scripts
Typed execute(args) dictionaries from @input and @output, plus XML path completion
CodeLens actions
Eight integrations for navigation, usages, localizations, cartridge paths, and log issues
Hover, signatures & hints
Inspect types and documentation, follow overloads, and read inline parameter and return hints
Diagnostics & fixes
Type and syntax checking, SFCC-specific checks, and the current limits of code actions
Scripts inside ISML
Use scripting intelligence in expressions and script blocks, alongside tag-aware tooling
One change, connected across files
Consider adding a product badge to a storefront:
Define the attribute
Add badgeLabel to your local Product metadata XML. It becomes a suggested, typed member of product.custom, with a definition link back to the XML. Metadata & generated types
Extend the existing model
Import the next implementation with module.superModule. Inspect its exports, call the base implementation, and add your attribute in the overriding cartridge. Cartridge overrides
Connect the storefront
Complete the route name in URLUtils.url, the template path in res.render, and a resource key in Resource.msg. Follow definitions to inspect the files behind those strings. SFCC contracts
Trace the result
Find references to the export or metadata attribute, inspect route extensions through CodeLens, and use the extension's debugger or Local Log Center when you need runtime evidence. CodeLens
Files and project context
| Language ID | Files | What you get |
|---|---|---|
sfcc-javascript | **/cartridge/**/*.js | Full type-aware completion, navigation, and diagnostics |
sfcc-typescript | **/cartridge/**/*.ts | The same, written in TypeScript |
digitalscript | *.ds (Digital Script) | First-class support - treated like a script file, no config |
isml | **/cartridge/templates/**/*.isml | Script intelligence inside ${ } and <isscript> - see ISML LSP |
json | hooks.json steptypes.json api.json | SFCC registration indexing, context-specific completion, and navigation |
properties | *.properties | Resource bundle key indexing for Resource.msg() |
yaml | Custom API / SCAPI schemas | Endpoint and operation indexing |
xml | *.xml metadata | Drives Metadata types, forms, and pipeline references |
Server-side .js, .ts, and .ds files use the scripting engine. Frontend code under cartridge/client/ and cartridge/static/ stays with VS Code's normal language tooling. JSON, XML, YAML, and properties files contribute SFCC configuration, definitions, and indexes; they do not all expose the same set of editor features
ISML has complementary markup and scripting language services: one handles tags, formatting, and template structure; the scripting engine handles embedded expressions and script blocks. See ISML support for the combined workflow
CodeLens integrations
CodeLens adds clickable context above the source. Its availability depends on indexed registrations, metadata, or logs; an unregistered script will not show a hook or step-type lens just because it has a matching function name
Routes
Open or copy endpoint URLs, inspect usages, and follow SFRA append, prepend, and replace actions
Hooks
Jump from a registered implementation to its hooks.json declaration
Job steps
Trace task and chunk lifecycle functions back to steptypes.json
Custom APIs
Move between api.json, an OpenAPI operation, and its implementation
Resource keys
Inspect indexed usages and localization variants from a .properties entry
Metadata attributes
See indexing state and usage counts on XML attribute definitions
Cartridge paths
Open the path editor from supported site and Business Manager metadata
Log issues
Inspect occurrences mapped to a source line and export a grouped issue
Choose your next guide
| If you are working on… | Start here |
|---|---|
| An inherited module or SFRA controller | Module resolution and module.superModule |
| Product attributes, preferences, or custom objects | Metadata & generated types |
Legacy .ds and SiteGenesis code | Digital Script and Pipeline scripts |
| Hooks, jobs, custom APIs, or translations | SFCC contracts |
| Missing suggestions or an unexpected definition | Configuration & troubleshooting |
| Editor checks and their limits | Diagnostics & quick fixes |
Editor intelligence describes the indexed local project. It does not prove that the active sandbox contains the same files, metadata, or cartridge order. Keep those aligned when moving from editing to testing