Integrate Algolia into the storefront sample app
This guide describes how to connect Algolia to a headless Salesforce B2C Commerce storefront with the storefront sample app.
Salesforce deprecated the sample app and recommends using the Progressive Web App (PWA) Kit.
To set up Algolia for your headless Salesforce B2C Commerce storefront, see Headless commerce.
Download and run the SFCC storefront sample app
-
Clone the sample app GitHub repository:
Copy1
git clone --depth=1 https://github.com/SalesforceCommerceCloud/sfcc-sample-apps
-
Follow the setup instructions to create a frontend with the native search.
Download and compile Unified InstantSearch
-
Clone the Unified InstantSearch GitHub repository into the
packages/
directory. -
Delete the
unified-instantsearch-ecommerce/.git
directory from theunified-instantsearch-ecommerce
directory.Copy1 2 3
cd sfcc-sample-apps/packages git clone --depth=1 https://github.com/algolia/unified-instantsearch-ecommerce rm -rf unified-instantsearch-ecommerce/.git
-
Install the dependencies and compile.
Copy1 2 3
cd sfcc-sample-apps/packages/unified-instantsearch-ecommerce npm install npm run export
This creates a new folder unified-instantsearch-ecommerce/export
which contains the assets you need for a working search in the sample app.
Import Unified InstantSearch into the sample app
-
Add the Unified UI assets to be copied into the
storefront-lwc
package. Edit the filepackages/storefront-lwc/scripts/plugin-copy-assets.js
:Copy1 2 3 4 5 6 7 8 9 10
/* inside packages/storefront-lwc/scripts/plugin-copy-assets.js */ const ASSETS = { 'src/assets/favicon.ico': 'favicon.ico', 'src/assets/manifest.json': 'manifest.json', 'src/assets/fonts/': 'fonts/', 'src/assets/images/': 'images/', 'src/assets/img/': 'img/', + '../unified-instantsearch-ecommerce/export/': 'algolia_unified_ui/', };
Now, building
storefront-lwc
automatically imports Unified UI files. -
Include the new files in the
index.html
file:Copy1 2 3 4 5 6 7 8
<!-- inside packages/storefront-lwc/src/index.html --> <link rel="manifest" href="/manifest.json" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="stylesheet" href="/css/global.css" /> + <link rel="stylesheet" href="/algolia_unified_ui/search.css" /> + <script src="/algolia_unified_ui/search.js"></script>
-
Create a new Lightning Element that serves as a host for the Algolia Unified UI. In the directory
packages/storefront-lwc/src/modules/
, create the following files:Copy1 2
mkdir -p packages/storefront-lwc/src/modules/algoliaUnifiedUi touch packages/storefront-lwc/src/modules/algoliaUnifiedUi/algoliaUnifiedUi.{html,js,scss}
Add the following code to the files algoliaUnifiedUi.html
and algoliaUnifiedUi.js
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
export default class AlgoliaUnifiedUi extends LightningElement {
renderedCallback() {
const productsIndexName = 'zzaa_001_sandbox_us01_dx__RefArch__products__en_US'; // Check to ensure this matches your products index's name
const currencyCode = 'EUR';
window.UnifiedUI.start({
inputContainer: this.template.querySelector('.site-search'),
keyboardShortcuts: false,
appId: '<Your Algolia application ID>',
searchApiKey: '<Your Algolia Search-only API Key>',
currencyCode,
index: {
indexName: productsIndexName,
searchParameters: {
analytics: true,
clickAnalytics: true,
hitsPerPage: 18,
attributesToSnippet: ['short_description:25'],
},
},
sorts: [
{
label: 'Price ascending',
value: `${productsIndexName}__price_${currencyCode}_asc`,
},
{
label: 'Price descending',
value: `${productsIndexName}__price_${currencyCode}_desc`,
},
]
});
}
}
Click and conversion events
To complete your setup, send click and conversion events.