Salesforce Commerce Cloud extension configuration

Commerce Unbundled: Extension

You can create or edit the configuration in the JCR or the File System (YAML) under /ecommerce-salesforce-connector/ecommerces/salesforce-commerce.yaml.

If you do not want the connection definition to appear in any of the subapps, set the enabled property (YAML line 3) to false.

Note, that you can write your own implementation (YAML lines 4-14) or in the JCR under /ecommerce-salesforce-connector/ecommerces/salesforce-commerce.yaml to suit your requirements, for example, to use additional features such as cross- and up-selling or custom features such as your own checkout solution.

class: info.magnolia.ecommerce.common.EcommerceDefinition
type: salesforce-commerce
enabled: true
    all: info.magnolia.ecommerce.salesforce.products.All
    byId: info.magnolia.ecommerce.salesforce.products.ById
    byCategoryId: info.magnolia.ecommerce.salesforce.products.ByCategoryId
    searchByText: info.magnolia.ecommerce.salesforce.products.SearchByText
    all: info.magnolia.ecommerce.salesforce.categories.All
    byId: info.magnolia.ecommerce.salesforce.categories.ById
    byParentCategoryId: info.magnolia.ecommerce.salesforce.categories.ByParentCategoryId
    byProductId: info.magnolia.ecommerce.salesforce.categories.ByProductId
  connectionValidator: info.magnolia.ecommerce.salesforce.common.SalesforceConnectionValidator
    enabled: true
      username: client_id
      password: password_or_path_to_password_manager
      shopUrl: /s/RefArchGlobal/dw/shop/v20_10
      siteId: site_id
Property Description






Your e-commerce solution: salesforce-commerce



true or false





Authentication URL.



Base URL.



Shows if the connection is enabled or not: true or false




Salesforce Commerce Cloud client_id.

The username and password (see below) parameter values are the Salesforce API client_id and password you retrieve from the Salesforce Commerce Cloud Account Manager:

First, log into your Salesforce Account Manager ( and go to the API Client tab to create a new API client.

When creating the API client, note that:

  • The password you create for the new API client is used as the password parameter value (see next cell).

  • We recommend you use the Salesforce Commerce API role, client_secret_post Token Endpoint Auth method and JWT Access Token Format.

See Add an API Client in the Salesforce documentation for more information.

Next, log into the Salesforce Business Manager to configure Open Commerce API (OCAPI) client permissions for the API client you created:

  1. Select Administration > Site Development > Open Commerce API Settings. Salesforce Business Manager

  2. Add the API client for both the Shop and Data APIs.

    Shop API configuration example:

    Shop API

    Basic sample sandbox configuration: shop_api.xml

    Data API configuration example:

    Data API

    Basic sample sandbox configuration: data_api.xml

  3. Use the client_id from Salesforce as the username in the Magnolia salesforce-commerce.yaml file.

See "Client Permissions" in the Salesforce documentation for more information.



Password entered when creating the Salesforce Commerce Cloud API client (or the path to the Magnolia password manager where the password is stored).

See details in the cell above.




URL used for cart and checkout functionality for Salesforce.



The site_id from Salesforce.

You must enter a valid site_id value for product pricing information to be displayed correctly.

You can set this property to no-site to create a connection to all unassigned Salesforce catalogs.

However, if you do so, note that no price information is displayed in the product detail component for the selected product.

Viewing and testing connections

This section explains how to view and test the connection between the Magnolia E-commerce add-on module and your external commerce solution using the E-commerce app.

  1. Open the E-commerce app Configuration tab.

  2. Select a connection.

  3. Click View to see the details of your connection to an external e-commerce solution.

    View connection dialog

Depending on your external e-commerce solution, the connection information displayed may be:

  • Definition name - The unique definition name. This name appears in the Catalogs subapp.

  • Connection name - The unique name for the connection configured.

  • E-commerce type - The type of external e-commerce solution you are connected to.

  • Authentication URL - Authentication URL for the solution you are connected to.

  • Base URL - Base URL for the solution you are connected to.

  • Username and Password - Credentials to access the external solution. Passwords or client secrets can be managed in the Passwords app.

  • Connection enabled - Shows if the connection is enabled or not. You may choose to disable the configuration, for example, to improve performance times or to test a connection in one environment before enabling it in another.

Click Test connection to check the connection configuration is correct. A message appears indicating if the test is successful or not.

Once you’ve tested your connection, go to the E-commerce tab. You can see the connections you have configured listed with the catalogs they contain.

Connection configuration validator

The info.magnolia.ecommerce.common.ConnectionValidator interface and its implementations check if a connection configuration is valid.

The connection validation check is executed when you click Test connection.

If the connectionValidator property is not configured, the default info.magnolia.ecommerce.common.DefaultConnectionValidator implementation is used. The default connection validator fallback only checks if the categories are returned by the service. This could give a false negative in some cases where the connection works but no categories exist.

The implementations of info.magnolia.ecommerce.common.ConnectionValidator are configured under: <module-name>/ecommerces/<definition-name>.yaml:

  • Default implementation: info.magnolia.ecommerce.common.DefaultConnectionValidator

    Evaluates the connection configuration as valid if it returns a non-empty list of categories.

  • commercetools: info.magnolia.ecommerce.commercetools.common.CommercetoolsConnectionValidator

    Evaluates the connection configuration as valid if no exceptions are thrown when getting the project.

  • Adobe Commerce (formerly Magento): info.magnolia.ecommerce.magento.common.MagentoConnectionValidator

    Evaluates the connection configuration as valid when a not empty token is returned.

  • Salesforce: info.magnolia.ecommerce.salesforce.common.SalesforceConnectionValidator

    Evaluates the connection configuration as valid when getting catalogs does not throw an exception when connection parameter siteId equals no-site. In other cases, a site with a configured `siteId must be returned.

  • SAP commerce:

    Evaluates the connection configuration as valid when the returned list of BaseSites contains the configured connection name.

For example, this is a snippet of the connection configuration and implementation with the connectionValidator set to the Commercetools implementation:

class: info.magnolia.ecommerce.common.EcommerceDefinition
type: commercetools
enabled: true
    all: info.magnolia.ecommerce.commercetools.products.All
    byId: info.magnolia.ecommerce.commercetools.products.ById
    byCategoryId: info.magnolia.ecommerce.commercetools.products.ByCategoryId
    searchByText: info.magnolia.ecommerce.commercetools.products.SearchByText
    all: info.magnolia.ecommerce.commercetools.categories.All
    byId: info.magnolia.ecommerce.commercetools.categories.ById
    byParentCategoryId: info.magnolia.ecommerce.commercetools.categories.ByParentCategoryId
    byProductId: info.magnolia.ecommerce.commercetools.categories.ByProductId
  connectionValidator: info.magnolia.ecommerce.commercetools.common.CommercetoolsConnectionValidator

Configuring the cache

By default, the content pulled from your external e-commerce solution is updated every 300 seconds (5 minutes). You can configure the cache setting via YAML:

  enabled: true
  invalidateInSeconds: 300

Configuring the images displayed in the E-commerce app

Images stored in your third-party e-commerce solution are displayed in the product detail view of the app.

You can configure:

  • If a single image or multiple images are displayed

  • The size of image(s) displayed.

For example:

          label: Product image(s)
          $type: multipleImageField
          imageRatio: 60
Property Description





Field label displayed to editors. The value can be literal or a key of a message bundle.

If you do not provide the property, Magnolia will fall back to a generated i18n key.

If you do not want a label at all, define the property and set its value to a blank space such as label: " " in YAML.



Field type:

  • multipleImageField displays all images for the product (use with URLsToStrings converter).

  • URLImageField displays only the first image for the product (use with ListOfURLsToString converter).


required converts all images for the product. converts only the first image for the product.



Defines the ratio of displayed images to the original images in percentage. In the example above, the value 60 is 60% of the original image size.

If the property isn’t set, the images are displayed in their original size.

Configuring chooser dialogs (v1.3+)

You can configure the component definition chooser dialogs introduced in v1.3.

You can find the component configuration under /ecommerce-templating/dialogs/components. There is also a section on chooser dialogs on the Category & Product use cases page.

The components introduced in v1.3 are suffixed with -v3. Those with no suffix are provided for backwards compatibility with E-commerce v1.2.x.

Product chooser dialog

By default, the chooser dialogs have four columns: connector, category, product and preview.

The Connector column is displayed when you have more than one connector correctly configured and enabled.

If you only have one connection enabled or correctly configured with a definitionName and connectionName in /<my-connector>/ecommerces/<my-connector>.yaml then the Connector column is disabled by default, unless you set enableCategorySelection to false.

The Category and Product columns are displayed by default. You can disable them using the enableCategorySelection and enableProductSelection properties under /ecommerce-templating/dialogs/components/<any-v3-component>.yaml.

By default, the system remembers the last selected item in a given chooser dialog. You can use the rememberLastSelectedLocation property to change this.

Property Description


You can use this as a shortcut for class if the definition class is annotated with info.magnolia.ui.field.FieldType. The proper value is defined by the annotation.

Example class annotation
public class EcommerceProductLinkFieldDefinition extends EcommerceLinkFieldDefinition {

See Field types for general values and the ecommercechooser directory for specific e-commerce field types (some examples are given at the end of this section).


optional, default is `true`

Set to false to disable the category, product and preview columns.

The product column depends on the category column, so if enableCategorySelection is false, then any value set for enableProductSelection is overridden.


optional, default is `true`

Set to false to disable the product and preview columns.


optional, default is `true`

When set to true, the system remembers the last item selected and positions a returning user on it when they reopen the same chooser dialog.

When set to false, nothing is preselected in the chooser dialogs.

Each type of e-commerce chooser dialog has its own last selected location. For example, the Product Detail component dialog does not share its last selected location with the Product Teaser component dialog and vice versa.

When the Pages app is closed, all remembered locations are removed.

Configuring text classification and image recognition for e-commerce content

If you have configured them, both Image Recognition and Text Classification are enabled for your e-commerce content.

To trigger the tagging operation, select a product and click Tag product in the E-commerce app action bar. You can view the tags generated in the ecommerce workspace in JCR Browser app (system properties view) or in the Tags app. You can search for products based on the tags in the Find Bar.

Default configuration:

imageRecogniserEnabled: true
textClassifierEnabled: true
autoRecognitionEnabled: false
Property Description


required, default is true

Enables image recognition functionality for e-commerce content.

Disable this functionality by setting the property to false.


required, default is true

Enables text classification functionality for e-commerce content.

Disable this functionality by setting the property to false.


required, default is false

Enables automatic tagging.

You can enable automatic tagging by setting the autoRecognitionEnabled property to true.

This action starts when the user opens a product list and may take a long time to execute.

Configuring timeout

You can configure connectionTimeoutInSeconds (the time needed to connect to the e-commerce solution) and readTimeoutInSeconds (the time needed to read and show the data you selected).

The default value for connectionTimeoutInSeconds is 10 while the default value for readTimeoutInSeconds is 30.

These values can be customized in the Resource Files app. Find the connector you want to modify, open the folder, and choose the config.yaml file:

connectionTimeoutInSeconds: 30
readTimeoutInSeconds: 10
Replacing the value with lower than 1 results in error in commercetools, and infinite timeouts in other available connectors.
In commercetools you can set only the connectionTimeoutInSeconds. Adobe Commerce (formerly Magento), Salesforce Commerce Cloud, and SAP Commerce Cloud (formerly Hybris) support both connectionTimeoutInSeconds and readTimeoutInSeconds.

DX Core



This widget lets you know where you are on the docs site.

You are currently perusing through the Ecommerce module docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules
6.3 beta

Magnolia 6.3 beta

Magnolia 6.3 is in beta. We are updating docs based on development and feedback. Consider the 6.3 docs currently in a state of progress and not final.

We are working on some 6.3-beta known issues during this phase.