Salesforce Commerce Cloud

Inclusify installs on Salesforce B2C Commerce as one script tag in an ISML template you overlay in your own cartridge, not as a cartridge you install and not as an AppExchange listing. You need a Business Manager user who can edit the cartridge path and a developer who can deploy, because Salesforce’s documented way to override a template is to copy it into a cartridge of your own at the same relative path and place that cartridge to the left of the original in the cartridge path. So this is a code change on a deploy cycle rather than an admin field, and the sandbox-then-production path is the whole of the work.

Register the domain first

Add your domain in the Inclusify panel before you paste the script tag. Bundles are built per registered domain, and an unregistered one fails silently: the script URL still returns HTTP 200, but what it serves is a single console.log saying the domain is not registered. There is no error to find and no widget appears.

SFRA Installation

There is no Inclusify cartridge to install. The integration is the plain script tag, added to the SFRA footer template through your own cartridge.

1

Find the footer component template in your own copy of the base cartridge rather than from a guide. SFRA keeps templates under cartridge/templates/, with cartridge/templates/default as the default locale, and the footer sits in the components tree inside it:

cartridges/app_storefront_base/cartridge/templates/default/components/footer/

The exact file name in that folder has changed between SFRA releases, and SiteGenesis does not share the tree at all, so read it off the version your project is pinned to. Do not edit it in place: Salesforce recommends against modifying app_storefront_base. Copy the file to the same relative path inside your own cartridge and edit that copy, so an upgrade to the base cartridge cannot overwrite your change.

2

Add Widget Script

Add the script at the end of the template. The footer template does not contain the closing </body> tag, which lives in the page layout, but the footer is the last thing the layout renders inside the body, which is close enough for an async tag.

your_cartridge/cartridge/templates/default/components/footer/<footer-template>.isml
<script src="https://app.inclusifyapp.com/w/YOUR-DOMAIN.com.js" async></script>
3

Deploy

Deploy your cartridge to your sandbox first, then production. The cartridge path is a colon-separated list under Administration Sites Manage Sites Settings in Business Manager, and entries earlier in the list take precedence, so your cartridge has to sit to the left of app_storefront_base or the base template still wins. Register the sandbox hostname in Inclusify as well as the production one, or the bundle will refuse to run on the instance you are testing on.

Notes

  • • Works with SFRA and SiteGenesis. Only the template you overlay differs; SiteGenesis does not share the SFRA tree.
  • • PWA Kit storefronts render React, not ISML. Use the React / Next.js guide for those.
  • • This is a script tag, not a Salesforce cartridge or AppExchange listing. There is nothing to install on the B2C Commerce side.

What needs attention on Salesforce Commerce Cloud

The cartridge path decides which template wins

Salesforce documents template overriding as copying the template into your own cartridge at the same relative path and putting that cartridge to the left of the original in the cartridge path, which is a colon-separated list under Administration > Sites > Manage Sites > Settings where earlier entries take precedence. It also recommends plainly that you do not modify app_storefront_base. An override that appears to do nothing is almost always a cartridge in the wrong position.

SFRA keeps templates under cartridge/templates/, with cartridge/templates/default as the default locale, and the footer is a component template inside that tree. The exact file name has changed between SFRA releases and Salesforce does not publish the tree, so read it from the app_storefront_base version your project is pinned to rather than from a guide. Whichever file it is, copy it to the same relative path in your cartridge and edit the copy.

Verify the installation

  1. Deploy to a sandbox first and load a product page there before promoting to production.
  2. Confirm the cartridge holding your override is in the site's cartridge path, and to the left of app_storefront_base. Business Manager keeps the path under Administration > Sites > Manage Sites > Settings, and cartridges earlier in the list take precedence.
  3. Register the sandbox hostname in Inclusify as well as production. The bundle checks window.location.hostname against the domains registered to your Inclusify website before it renders anything, and logs "Inclusify: This widget is not licensed for" and that hostname when it does not match. localhost and 127.0.0.1 are the only exemptions.
  4. Invalidate the page cache in Business Manager after deploying, then reload the storefront.
  5. Use View Source rather than the element inspector: the tag is rendered server-side into ISML output, so if it is not in the source the override is not winning.

Widget bundles are served from a CDN and cached for a few hours. If you changed widget settings in the panel and the site still shows the old configuration, wait for the cache to expire or load the script URL directly with a cache-busting query string (`?v=2`) to confirm the new version is being served.

Troubleshooting Salesforce Commerce Cloud installs

The template change deployed but the storefront is unchanged.
Your cartridge is not ahead of app_storefront_base in the cartridge path, so the base template still wins. Reorder the path under Administration > Sites > Manage Sites > Settings; entries earlier in the list take precedence.
The script is blocked in the browser console.
The site has a Content Security Policy that does not list the widget host. Add app.inclusifyapp.com to script-src wherever that policy is configured for the site, then retest.
Changes appear on sandbox but not production.
Production is serving from the page cache. Invalidate it in Business Manager, then retest.
The sandbox logs that the widget is not licensed.
The sandbox hostname is not registered in Inclusify. Add it in the panel alongside the production domain, or test on production only.
The footer template path in a guide does not exist in your project.
The tree differs between SFRA releases, and SiteGenesis has a different structure again. Locate the footer component in your own app_storefront_base copy and override that file rather than the path a guide names.

Salesforce Commerce Cloud questions

Should I edit app_storefront_base directly?
No, and Salesforce recommends against it. Overlay the template in your own cartridge and place that cartridge to the left of the base in the cartridge path, so an upgrade to the base cartridge cannot overwrite your change.
Does this work with PWA Kit?
Yes, but not through ISML: PWA Kit storefronts are React applications. Add the script the way you would in any React app, and register the hostname each environment serves from.
Do I need a CSP change?
Only if your site sends a Content Security Policy. Where one is configured, the widget host has to appear in script-src or the browser blocks the request.
Does it work on SiteGenesis?
Yes. The script tag is architecture-agnostic; only the template you override differs, and SiteGenesis does not share SFRA's tree.

Salesforce Commerce Cloud documentation

Every Salesforce Commerce Cloud-specific requirement, menu path and limit on this page comes from these pages. Menus move, so check them against your own admin if something does not match.