Site Import/Export Skill Use the b2c CLI plugin to import and export site archives on Salesforce B2C Commerce instances. Tip: If b2c is not installed globally, use npx @salesforce/b2c-cli instead (e.g., npx @salesforce/b2c-cli job import ). Import Commands Import Local Directory
Import a local directory as a site archive
b2c job import ./my-site-data
Import and wait for completion
b2c job import ./my-site-data --wait
Import a local zip file
b2c job import ./export.zip
Keep the archive on the instance after import
b2c job import ./my-site-data --keep-archive
Show job log if the import fails
b2c job import ./my-site-data --wait --show-log Import Remote Archive
Import an archive that already exists on the instance (in Impex/src/instance/)
b2c job import existing-archive.zip --remote Export Commands
Export site data
b2c job export
Export with specific configuration
b2c job export --wait Common Workflows Adding a Custom Attribute to Products Create the metadata XML file: meta/system-objecttype-extensions.xml:
< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "
< type-extension type-id = " Product "
< custom-attribute-definitions
< attribute-definition attribute-id = " vendorSKU "
< display-name xml: lang = " x-default "
Vendor SKU </ display-name
< type
string </ type
< mandatory-flag
false </ mandatory-flag
< externally-managed-flag
true </ externally-managed-flag
</ attribute-definition
</ custom-attribute-definitions
< group-definitions
< attribute-group group-id = " CustomAttributes "
< display-name xml: lang = " x-default "
Custom Attributes </ display-name
< attribute attribute-id = " vendorSKU " /> </ attribute-group
</ group-definitions
</ type-extension
</ metadata
Create the directory structure: my-import/ └── meta/ └── system-objecttype-extensions.xml Import: b2c job import ./my-import --wait Adding Site Preferences Create metadata for the preference: meta/system-objecttype-extensions.xml:
< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "
< type-extension type-id = " SitePreferences "
< custom-attribute-definitions
< attribute-definition attribute-id = " enableFeatureX "
< display-name xml: lang = " x-default "
Enable Feature X </ display-name
< type
boolean </ type
< default-value
false </ default-value
</ attribute-definition
</ custom-attribute-definitions
</ type-extension
</ metadata
Create preference values: sites/MySite/preferences.xml:
< preferences xmlns = " http://www.demandware.com/xml/impex/preferences/2007-03-31 "
< custom-preferences
< all-instances
< preference preference-id = " enableFeatureX "
true </ preference
</ all-instances
</ custom-preferences
</ preferences
Directory structure: my-import/ ├── meta/ │ └── system-objecttype-extensions.xml └── sites/ └── MySite/ └── preferences.xml Import: b2c job import ./my-import --wait Creating a Custom Object Type Define the custom object: meta/custom-objecttype-definitions.xml:
< metadata xmlns = " http://www.demandware.com/xml/impex/metadata/2006-10-31 "
< custom-type type-id = " APIConfiguration "
< display-name xml: lang = " x-default "
API Configuration </ display-name
< staging-mode
source-to-target </ staging-mode
< storage-scope
site </ storage-scope
< key-definition attribute-id = " configId "
< display-name xml: lang = " x-default "
Config ID </ display-name
< type
string </ type
< min-length
1 </ min-length
</ key-definition
< attribute-definitions
< attribute-definition attribute-id = " endpoint "
< display-name xml: lang = " x-default "
API Endpoint </ display-name
< type
string </ type
</ attribute-definition
< attribute-definition attribute-id = " apiKey "
< display-name xml: lang = " x-default "
API Key </ display-name
< type
password </ type
</ attribute-definition
< attribute-definition attribute-id = " isActive "
< display-name xml: lang = " x-default "
Active </ display-name
< type
boolean </ type
< default-value
true </ default-value
</ attribute-definition
</ attribute-definitions
</ custom-type
</ metadata
Import: b2c job import ./my-import --wait Importing Custom Object Data customobjects/APIConfiguration.xml:
< custom-objects xmlns = " http://www.demandware.com/xml/impex/customobject/2006-10-31 "
< custom-object type-id = " APIConfiguration " object-id = " payment-gateway "
< object-attribute attribute-id = " endpoint "
https://api.payment.com/v2 </ object-attribute
< object-attribute attribute-id = " isActive "
true </ object-attribute
</ custom-object
</ custom-objects
Site Archive Structure site-archive/ ├── services.xml # Service configurations (credentials, profiles, services) ├── meta/ │ ├── system-objecttype-extensions.xml # Custom attributes on system objects │ └── custom-objecttype-definitions.xml # Custom object type definitions ├── sites/ │ └── {SiteID}/ │ ├── preferences.xml # Site preference values │ └── library/ │ └── content/ │ └── content.xml # Content assets ├── catalogs/ │ └── {CatalogID}/ │ └── catalog.xml # Products and categories ├── pricebooks/ │ └── {PriceBookID}/ │ └── pricebook.xml # Price definitions ├── customobjects/ │ └── {ObjectTypeID}.xml # Custom object instances └── inventory-lists/ └── {InventoryListID}/ └── inventory.xml # Inventory records Tips Checking Job Status
Search for recent job executions
b2c job search
Wait for a specific job execution
b2c job wait < execution-id
View job logs on failure
b2c job import ./my-data --wait --show-log Best Practices Test imports on sandbox first before importing to staging/production Use --wait to ensure import completes before continuing Use --show-log to debug failed imports Keep archives organized by feature or change type Version control your metadata XML files Configuring External Services For service configurations (HTTP, FTP, SOAP services), see the b2c:b2c-webservices skill which includes: Complete services.xml examples Credential, profile, and service element patterns Import/export workflows Quick example:
Import service configuration
b2c job import ./services-folder Where services-folder/services.xml follows the patterns in the b2c:b2c-webservices skill. Detailed Reference Metadata XML Patterns - Common XML patterns for imports