Scripting Overview

Explore SFCC language intelligence across JavaScript, TypeScript, Digital Script, ISML, metadata, and cartridge configuration

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

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

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 IDFilesWhat you get
sfcc-javascript**/cartridge/**/*.jsFull type-aware completion, navigation, and diagnostics
sfcc-typescript**/cartridge/**/*.tsThe same, written in TypeScript
digitalscript*.ds (Digital Script)First-class support - treated like a script file, no config
isml**/cartridge/templates/**/*.ismlScript intelligence inside ${ } and <isscript> - see ISML LSP
jsonhooks.json steptypes.json api.jsonSFCC registration indexing, context-specific completion, and navigation
properties*.propertiesResource bundle key indexing for Resource.msg()
yamlCustom API / SCAPI schemasEndpoint and operation indexing
xml*.xml metadataDrives 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

Choose your next guide

If you are working on…Start here
An inherited module or SFRA controllerModule resolution and module.superModule
Product attributes, preferences, or custom objectsMetadata & generated types
Legacy .ds and SiteGenesis codeDigital Script and Pipeline scripts
Hooks, jobs, custom APIs, or translationsSFCC contracts
Missing suggestions or an unexpected definitionConfiguration & troubleshooting
Editor checks and their limitsDiagnostics & 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

On this page