
Sfcc Business Manager
- 63 installs
- 41 repo stars
- Updated March 13, 2026
- finsilabs/awesome-ecommerce-skills
Configure Salesforce Commerce Cloud via Business Manager: manage catalogs, promotions, site preferences, and XML import/export jobs.
About
Administers Salesforce Commerce Cloud through Business Manager for catalogs, promotions, site preferences, and XML import/export jobs. A developer uses it to configure and operate an SFCC storefront's back office.
- Catalog, promotion, and site-preference management
- XML import/export jobs
Sfcc Business Manager by the numbers
- 63 all-time installs (skills.sh)
- Ranked #3,136 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill sfcc-business-managerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 63 |
|---|---|
| repo stars | ★ 41 |
| Last updated | March 13, 2026 |
| Repository | finsilabs/awesome-ecommerce-skills ↗ |
What it does
Configure Salesforce Commerce Cloud via Business Manager: manage catalogs, promotions, site preferences, and XML import/export jobs.
Files
SFCC Business Manager
Overview
Business Manager (BM) is the SFCC administration interface accessed at https://{instance}.dx.commercecloud.salesforce.com/on/demandware.store/Sites-Site/default/ViewApplication-DisplayWelcomePage. It controls every aspect of the SFCC installation: catalog and product management, site preferences, promotion engine, content assets, A/B tests, and job scheduling. Bulk data operations are performed via XML import/export using the Import & Export framework, which processes files from the IMPEX directory via scheduled jobs.
When to Use This Skill
- When performing initial catalog setup for a new SFCC site
- When importing products, prices, or inventory from an ERP or PIM system via XML
- When configuring OCAPI settings for API client registrations
- When setting up site preferences for custom cartridge configurations
- When managing promotions, coupon campaigns, and A/B tests across sites
- When diagnosing job failures or reviewing import error logs in Business Manager
Core Instructions
1. Navigate key Business Manager areas
Business Manager URLs follow the pattern {instanceUrl}/on/demandware.store/Sites-Site/default/{Controller-Action}:
# Site Selection (global)
/on/demandware.store/Sites-Site/default/ViewApplication-DisplayWelcomePage
# Catalog Management (site-specific)
/on/demandware.store/Sites-{SiteID}/default/ViewCategories-Start
# Site Preferences
/on/demandware.store/Sites-{SiteID}/default/ViewSitePreference-StartGroups
# OCAPI Settings
/on/demandware.store/Sites-Site/default/ViewApplicationApiSettings-Start
# Import & Export
/on/demandware.store/Sites-{SiteID}/default/ViewJobSchedule-Start
# Job Execution
/on/demandware.store/Sites-Site/default/ViewJobSchedule-Start2. Import products via XML catalog import
SFCC catalog XML follows Demandware's catalog.xsd schema. Products are imported as catalog objects:
<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns="http://www.demandware.com/xml/impex/catalog/2006-10-31" catalog-id="your-catalog">
<!-- Category definition -->
<category category-id="electronics">
<display-name xml:lang="x-default">Electronics</display-name>
<display-name xml:lang="en-US">Electronics</display-name>
<online-flag>true</online-flag>
<parent>root</parent>
</category>
<!-- Simple product -->
<product product-id="PROD-001">
<ean>1234567890123</ean>
<upc>123456789012</upc>
<display-name xml:lang="x-default">Wireless Headphones Pro</display-name>
<display-name xml:lang="en-US">Wireless Headphones Pro</display-name>
<long-description xml:lang="x-default">Premium wireless headphones with ANC</long-description>
<online-flag>true</online-flag>
<available-flag>true</available-flag>
<searchable-flag>true</searchable-flag>
<tax-class-id>standard</tax-class-id>
<brand>AudioPro</brand>
<manufacturer-sku>AP-WH-001</manufacturer-sku>
<classification-category catalog-id="your-catalog">electronics</classification-category>
<images>
<image-group view-type="large">
<image path="products/PROD-001-large.jpg"/>
</image-group>
<image-group view-type="small">
<image path="products/PROD-001-small.jpg"/>
</image-group>
</images>
<custom-attributes>
<custom-attribute attribute-id="color">Black</custom-attribute>
<custom-attribute attribute-id="batteryLife">30</custom-attribute>
</custom-attributes>
</product>
<!-- Variation master product -->
<product product-id="SHIRT-MASTER">
<display-name xml:lang="x-default">Classic Cotton Shirt</display-name>
<online-flag>true</online-flag>
<classification-category catalog-id="your-catalog">apparel</classification-category>
<variations>
<attributes>
<variation-attribute attribute-id="color" variation-attribute-id="color">
<display-name xml:lang="x-default">Color</display-name>
<variation-attribute-values>
<variation-attribute-value value="Blue">
<display-value xml:lang="x-default">Blue</display-value>
</variation-attribute-value>
<variation-attribute-value value="Red">
<display-value xml:lang="x-default">Red</display-value>
</variation-attribute-value>
</variation-attribute-values>
</variation-attribute>
<variation-attribute attribute-id="size" variation-attribute-id="size">
<display-name xml:lang="x-default">Size</display-name>
<variation-attribute-values>
<variation-attribute-value value="S"><display-value xml:lang="x-default">S</display-value></variation-attribute-value>
<variation-attribute-value value="M"><display-value xml:lang="x-default">M</display-value></variation-attribute-value>
<variation-attribute-value value="L"><display-value xml:lang="x-default">L</display-value></variation-attribute-value>
</variation-attribute-values>
</variation-attribute>
</attributes>
<variants>
<variant product-id="SHIRT-BLUE-S"/>
<variant product-id="SHIRT-BLUE-M"/>
<variant product-id="SHIRT-RED-M"/>
</variants>
</variations>
</product>
<!-- Variant products -->
<product product-id="SHIRT-BLUE-S">
<display-name xml:lang="x-default">Classic Cotton Shirt - Blue / S</display-name>
<online-flag>true</online-flag>
<variation-attribute-values>
<variation-attribute-value attribute-id="color">Blue</variation-attribute-value>
<variation-attribute-value attribute-id="size">S</variation-attribute-value>
</variation-attribute-values>
</product>
<!-- Product category assignment -->
<category-assignment category-id="electronics" product-id="PROD-001">
<primary-flag>true</primary-flag>
</category-assignment>
</catalog>3. Import inventory and prices
<!-- inventory.xml — import stock levels -->
<?xml version="1.0" encoding="UTF-8"?>
<inventory xmlns="http://www.demandware.com/xml/impex/inventory/2007-05-31">
<inventory-list>
<header list-id="your-inventory-list">
<default-in-stock>false</default-in-stock>
<description>Main Inventory</description>
</header>
<records>
<record product-id="PROD-001">
<allocation>150.00</allocation>
<allocation-timestamp>2026-03-12T00:00:00.000Z</allocation-timestamp>
<perpetual>false</perpetual>
<preorderable>false</preorderable>
<backorderable>false</backorderable>
</record>
<record product-id="SHIRT-BLUE-S">
<allocation>42.00</allocation>
<perpetual>false</perpetual>
</record>
</records>
</inventory-list>
</inventory> <!-- pricebook.xml — import prices -->
<?xml version="1.0" encoding="UTF-8"?>
<pricebooks xmlns="http://www.demandware.com/xml/impex/pricebook/2006-10-31">
<pricebook>
<header pricebook-id="usd-m-list-prices">
<currency>USD</currency>
<display-name xml:lang="x-default">USD List Prices</display-name>
<online-flag>true</online-flag>
</header>
<price-tables>
<price-table product-id="PROD-001">
<amount quantity="1">149.99</amount>
</price-table>
<price-table product-id="SHIRT-BLUE-S">
<amount quantity="1">39.99</amount>
</price-table>
</price-tables>
</pricebook>
</pricebooks>4. Configure site preferences for custom cartridge settings
Site preferences are custom attributes defined in Business Manager → Administration → Site Development → System Object Types → SitePreferences:
<!-- system-objecttype-extensions.xml — define custom site preference -->
<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://www.demandware.com/xml/impex/metadata/2006-10-31">
<type-extension type-id="SitePreferences">
<custom-attribute-definitions>
<attribute-definition attribute-id="myIntegration_apiEndpoint">
<display-name xml:lang="x-default">My Integration API Endpoint</display-name>
<type>string</type>
<mandatory-flag>false</mandatory-flag>
<externally-managed-flag>false</externally-managed-flag>
<min-length>0</min-length>
<max-length>255</max-length>
</attribute-definition>
<attribute-definition attribute-id="myIntegration_enabledFlag">
<display-name xml:lang="x-default">My Integration Enabled</display-name>
<type>boolean</type>
<mandatory-flag>false</mandatory-flag>
</attribute-definition>
</custom-attribute-definitions>
<group-definitions>
<attribute-group group-id="MyIntegration">
<display-name xml:lang="x-default">My Integration Settings</display-name>
<attribute attribute-id="myIntegration_apiEndpoint"/>
<attribute attribute-id="myIntegration_enabledFlag"/>
</attribute-group>
</group-definitions>
</type-extension>
</metadata>Access in cartridge ISML/controller:
// In SFCC ISML controller (server-side JS)
var Site = require('dw/system/Site');
var currentSite = Site.getCurrent();
var apiEndpoint = currentSite.getCustomPreferenceValue('myIntegration_apiEndpoint');
var isEnabled = currentSite.getCustomPreferenceValue('myIntegration_enabledFlag');5. Configure and run import jobs
SFCC import jobs are configured in Business Manager → Administration → Operations → Jobs. Jobs use XML feed files placed in /IMPEX/src/ or uploaded via the Jobs API:
// Upload an XML file to IMPEX via OCAPI WebDAV before triggering job
const importFile = fs.readFileSync('./catalog.xml');
// Upload via WebDAV (SFCC exposes IMPEX as WebDAV)
const webdavUrl = `${instanceUrl}/on/demandware.servlet/webdav/Sites/Impex/src/catalog-import.xml`;
await fetch(webdavUrl, {
method: "PUT",
headers: {
Authorization: `Basic ${Buffer.from(`${clientId}:${clientSecret}`).toString("base64")}`,
"Content-Type": "application/xml",
},
body: importFile,
});
// Trigger the import job via Jobs API
const jobResponse = await fetch(
`${instanceUrl}/s/-/dw/data/v23_2/jobs/sfcc-site-archive-import/executions`,
{
method: "POST",
headers: {
Authorization: `Bearer ${adminToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
parameters: [
{ name: "ImportFile", value: "catalog-import.xml" },
{ name: "catalogID", value: "your-catalog" },
],
}),
}
);Examples
Export orders for ERP sync
<!-- Order export configuration — Business Manager → Merchant Tools → Site Preferences → Export/Import -->
<!-- Or via OCAPI Data API order search: -->// Paginated order export via OCAPI Data API
async function exportOrdersSince(sinceDate: string) {
const token = await getAdminToken();
const instanceUrl = process.env.SFCC_INSTANCE_URL!;
const siteId = process.env.SFCC_SITE_ID!;
let start = 0;
const count = 100;
const allOrders = [];
while (true) {
const response = await fetch(
`${instanceUrl}/s/${siteId}/dw/data/v23_2/order_search`,
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
query: {
filtered_query: {
query: { match_all_query: {} },
filter: {
range_filter: {
field: "creation_date",
from: sinceDate,
},
},
},
},
select: "(**)",
count,
start,
sorts: [{ field: "creation_date", sort_order: "asc" }],
}),
}
);
const { hits, total } = await response.json();
allOrders.push(...(hits ?? []));
start += count;
if (start >= total) break;
}
return allOrders;
}Create a promotion via OCAPI
async function createPromotion(promo: {
id: string;
name: string;
discountPercent: number;
startDate: string;
endDate: string;
}) {
const token = await getAdminToken();
const instanceUrl = process.env.SFCC_INSTANCE_URL!;
const siteId = process.env.SFCC_SITE_ID!;
await fetch(
`${instanceUrl}/s/${siteId}/dw/data/v23_2/promotions/${promo.id}`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
id: promo.id,
name: { default: promo.name },
enabled: true,
start_date: promo.startDate,
end_date: promo.endDate,
discount: {
type: "percentage",
value: promo.discountPercent,
},
promotion_class: "order",
}),
}
);
}Best Practices
- Validate XML imports against Demandware schemas before uploading — the XSD files are available in Business Manager under Administration → Site Development → System Object Types; invalid XML fails silently without line-level error messages
- Use unique job IDs for concurrent imports — SFCC jobs are single-threaded per job definition; use multiple job definitions if you need parallel catalog + inventory imports
- Always include `catalog-id` in catalog XML — mismatched or missing catalog IDs cause products to import into the wrong catalog or fail completely
- Test imports on staging before production — there is no bulk "undo" for catalog imports; test with a small subset first
- Monitor job logs in BM → Administration → Operations → Jobs — failed jobs log to
/IMPEX/log/; download and review logs immediately after automated imports - Use `<display-name xml:lang="x-default">` for all localized strings — the
x-defaultlocale is required; missing it causes display issues in all locales - Set site preferences via import XML, not manually — document all custom site preference values in XML files committed to version control for environment consistency
Common Pitfalls
| Problem | Solution |
|---|---|
| Products imported but not visible in storefront | Check product online-flag is true, the category assignment has primary-flag set, and the site catalog is assigned to the current site |
| Import job completes but log shows "0 records processed" | Verify the file was uploaded to the correct IMPEX path and the job's ImportFile parameter matches the exact filename including extension |
| Custom site preference not appearing in BM UI | Ensure the system-objecttype-extensions.xml has been imported via BM → Administration → Site Development → Import & Export and the cache has been cleared |
| Inventory not updating despite successful import | Check that the inventory-list list-id in the XML matches the inventory list assigned to the site in BM → Merchant Tools → Products and Catalogs |
| OCAPI Data API returns 403 on job trigger | The client ID must have Data API permissions for the jobs resource; verify in BM → Administration → Site Development → OCAPI Settings → Data |
| Prices show default catalog price instead of imported pricebook | Assign the pricebook to the site customer groups in BM → Merchant Tools → Pricing → Pricebooks; imported pricebooks are not active until assigned |
Related Skills
- @sfcc-cartridge-development
- @sfcc-ocapi-scapi
- @catalog-management
- @product-import-export
- @promotion-engine
{
"context": "Tests whether the agent produces a correctly structured SFCC catalog XML import file. Focuses on correct namespaces, required attributes, localized string formatting, variation product structure, and category assignment correctness.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Correct catalog namespace",
"max_score": 10,
"description": "The <catalog> root element uses xmlns=\"http://www.demandware.com/xml/impex/catalog/2006-10-31\""
},
{
"name": "catalog-id on root",
"max_score": 10,
"description": "The <catalog> root element includes a catalog-id attribute with a non-empty value"
},
{
"name": "x-default locale on display names",
"max_score": 10,
"description": "Every <display-name> element in the XML includes xml:lang=\"x-default\" (no display-name elements are missing this attribute)"
},
{
"name": "Products have online-flag true",
"max_score": 8,
"description": "All product definitions include <online-flag>true</online-flag>"
},
{
"name": "Variation master structure",
"max_score": 12,
"description": "The variation master product includes a <variations> block containing both <attributes> (with at least one <variation-attribute>) and <variants> (with at least two <variant product-id=\"...\"/> entries)"
},
{
"name": "Variant attribute values",
"max_score": 10,
"description": "Each variant product definition includes a <variation-attribute-values> block with at least one <variation-attribute-value> element"
},
{
"name": "Category assignment primary-flag",
"max_score": 10,
"description": "Every <category-assignment> element includes <primary-flag>true</primary-flag>"
},
{
"name": "classification-category catalog-id",
"max_score": 10,
"description": "Product <classification-category> elements include a catalog-id attribute that matches the catalog root's catalog-id"
},
{
"name": "Simple products completeness",
"max_score": 8,
"description": "Simple products include at least: display-name, online-flag, and a category-assignment"
},
{
"name": "XML declaration present",
"max_score": 6,
"description": "File starts with <?xml version=\"1.0\" encoding=\"UTF-8\"?>"
},
{
"name": "Notes on gotchas",
"max_score": 6,
"description": "import-notes.md mentions at least one of: wrong catalog risk, primary-flag, online-flag visibility, or x-default locale requirement"
}
]
}
Catalog Data Migration for a Fashion Retailer
Problem/Feature Description
A mid-sized fashion retailer is launching a new Salesforce Commerce Cloud storefront and needs their product catalog migrated from a legacy spreadsheet system into SFCC. The merchandising team has compiled a product list that includes both simple standalone products and configurable products (shirts available in multiple colors and sizes). Their ERP team will handle inventory separately, but the catalog structure — categories, product definitions, and variation relationships — needs to be ready for the platform engineers to test.
The platform team has asked for a complete SFCC catalog XML import file. The file needs to define a category hierarchy, a mix of simple and variation products, and proper category assignments so products show up in the storefront once the import runs. A product manager has flagged from a previous migration attempt that some products ended up in the wrong catalog and others never appeared in the storefront, so the import file needs to be done correctly.
Output Specification
Produce a single file catalog-import.xml that:
- Defines at least two product categories
- Includes at least two simple products and one variation product (master + at least two variants) that use color and/or size as variation attributes
- Assigns each product to a category
- Uses realistic product data (names, attributes, etc.)
Also produce a brief import-notes.md explaining any decisions made about the structure and what to watch out for during the import.
{
"context": "Tests whether the agent correctly implements SFCC import automation using WebDAV for file upload and the Jobs API for job triggering. Focuses on correct URL patterns, authentication methods, job parallelism, parameter names, and diagnostic logging.",
"type": "weighted_checklist",
"checklist": [
{
"name": "WebDAV URL pattern",
"max_score": 10,
"description": "File upload uses the WebDAV URL pattern: {instanceUrl}/on/demandware.servlet/webdav/Sites/Impex/src/{filename}"
},
{
"name": "WebDAV Basic auth",
"max_score": 10,
"description": "WebDAV PUT requests use Basic authentication with clientId:clientSecret base64-encoded (not Bearer token)"
},
{
"name": "WebDAV PUT method",
"max_score": 6,
"description": "File uploads use HTTP PUT method (not POST or multipart)"
},
{
"name": "Jobs API URL pattern",
"max_score": 10,
"description": "Job trigger requests POST to {instanceUrl}/s/-/dw/data/v23_2/jobs/{jobId}/executions"
},
{
"name": "Jobs API Bearer auth",
"max_score": 8,
"description": "Job trigger requests use Bearer token authentication (not Basic auth)"
},
{
"name": "ImportFile parameter",
"max_score": 10,
"description": "Job trigger request body includes a parameter named exactly 'ImportFile' with the filename as its value"
},
{
"name": "Separate job IDs",
"max_score": 10,
"description": "Catalog, inventory, and pricebook imports use separate/distinct job IDs (not one shared job definition for all three)"
},
{
"name": "Parallel execution",
"max_score": 8,
"description": "Catalog and inventory job triggers are initiated concurrently (e.g. using Promise.all or similar parallel execution pattern)"
},
{
"name": "Zero-records logging",
"max_score": 10,
"description": "import-log-schema.md or script comments mention checking for '0 records processed' and the likely cause (file path mismatch or ImportFile parameter mismatch)"
},
{
"name": "Log output present",
"max_score": 8,
"description": "Script includes console.log or similar logging after each upload and job trigger step (not just on error)"
},
{
"name": "catalogID parameter",
"max_score": 10,
"description": "Catalog import job trigger body includes a parameter named 'catalogID' with the catalog ID value"
}
]
}
Automated Nightly Data Feed Import for SFCC
Problem/Feature Description
A retail operations team runs a nightly batch process that generates three export files from their ERP system: a product catalog XML, an inventory levels XML, and a pricebook XML. These files need to be pushed into Salesforce Commerce Cloud each night. Previously, a team member would manually log into Business Manager to upload the files and trigger the import jobs, but this is error-prone and doesn't scale.
The team wants an automated Node.js script that uploads all three XML files to SFCC and triggers the corresponding import jobs. The platform architect wants catalog and inventory processing to happen as quickly as possible without one blocking the other. The team also needs the script to produce enough logging output that the on-call engineer can diagnose failures the next morning — including the case where a job appears to succeed but no data actually changed in the system.
Assume the following environment variables are available at runtime:
SFCC_INSTANCE_URL— base URL of the SFCC instanceSFCC_CLIENT_ID— OCAPI client IDSFCC_CLIENT_SECRET— OCAPI client secretSFCC_ADMIN_TOKEN— bearer token for Data API callsSFCC_CATALOG_ID— catalog ID for catalog imports
Output Specification
Produce: 1. import-runner.js — the Node.js automation script (no external dependencies beyond Node built-ins and node-fetch or native fetch) 2. import-log-schema.md — a short description of what the script logs and how to interpret common failure modes visible in the logs
The script should read the three XML files from a local ./feeds/ directory (filenames: catalog.xml, inventory.xml, pricebook.xml), upload them to SFCC, and trigger the respective jobs. It does not need to actually run — it will be reviewed as source code.
{
"context": "Tests whether the agent produces a correctly structured SFCC system-objecttype-extensions.xml for custom site preferences, uses the right namespace and type-extension structure, includes appropriate attribute types, organizes them in a group, and demonstrates the correct cartridge access pattern.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Correct metadata namespace",
"max_score": 10,
"description": "The <metadata> root element uses xmlns=\"http://www.demandware.com/xml/impex/metadata/2006-10-31\""
},
{
"name": "SitePreferences type-extension",
"max_score": 10,
"description": "The file contains a <type-extension type-id=\"SitePreferences\"> element"
},
{
"name": "String attribute type",
"max_score": 8,
"description": "At least one attribute definition uses <type>string</type> for a text-based preference (e.g. API endpoint or key)"
},
{
"name": "Boolean attribute type",
"max_score": 8,
"description": "At least one attribute definition uses <type>boolean</type> for the enabled/disabled flag"
},
{
"name": "Attribute group defined",
"max_score": 10,
"description": "File includes a <group-definitions> block with at least one <attribute-group> that references the defined attributes"
},
{
"name": "display-name x-default",
"max_score": 8,
"description": "All <display-name> elements within the XML include xml:lang=\"x-default\""
},
{
"name": "Cartridge uses dw/system/Site",
"max_score": 10,
"description": "cartridge-snippet.js requires 'dw/system/Site' (or equivalent import)"
},
{
"name": "Cartridge getCustomPreferenceValue",
"max_score": 12,
"description": "cartridge-snippet.js calls Site.getCurrent().getCustomPreferenceValue() to read at least one preference value"
},
{
"name": "XML over manual approach noted",
"max_score": 12,
"description": "setup-notes.md explains that preferences should be set via XML import rather than manually in Business Manager (for consistency or version control reasons)"
},
{
"name": "XML declaration present",
"max_score": 6,
"description": "system-objecttype-extensions.xml starts with <?xml version=\"1.0\" encoding=\"UTF-8\"?>"
},
{
"name": "Five attributes defined",
"max_score": 6,
"description": "The XML defines exactly 5 custom attribute definitions covering: API endpoint, API key, embed code prefix, enabled flag, and timeout"
}
]
}
Configuring a Third-Party Reviews Integration for SFCC
Problem/Feature Description
An e-commerce team is adding a product reviews integration (from a third-party vendor called "ReviewFlow") to their Salesforce Commerce Cloud store. The integration requires several configuration values to be available at runtime: an API endpoint URL, an API key string, a widget embed code prefix, a boolean flag to enable or disable the integration per environment, and a numeric timeout value (in milliseconds) for API requests.
The backend developer asked the DevOps team to set these values by clicking through Business Manager on each environment, but the lead architect rejected this approach because it creates inconsistency across dev, staging, and production and leaves no audit trail. The team needs a proper, version-controlled configuration approach instead.
The task is to produce the import XML file that defines these custom site preferences in SFCC, along with a small JavaScript code snippet showing how a cartridge controller would read two of these values at runtime. The integration should be organized under a named group in the site preferences UI.
Output Specification
Produce the following files:
1. system-objecttype-extensions.xml — defines the five custom site preference attributes for the ReviewFlow integration, grouped under a named attribute group 2. cartridge-snippet.js — a short SFCC server-side JavaScript snippet demonstrating how to retrieve the API endpoint and enabled flag from site preferences in a cartridge controller 3. setup-notes.md — a brief note on how to apply these files to a new environment and why this approach was chosen over manual configuration
{
"name": "finsi/sfcc-business-manager",
"version": "0.1.0",
"summary": "Business Manager configuration, import/export, and site preferences",
"skills": {
"sfcc-business-manager": {
"path": "SKILL.md"
}
}
}