> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Index your Salesforce B2C Commerce content with Algolia.

export const Records = () => <Tooltip tip="A record is a searchable object in an Algolia index. Each record consists of named attributes." cta="Algolia records" href="/doc/guides/sending-and-managing-data/prepare-your-data#algolia-records">
    records
  </Tooltip>;

export const Index = () => <Tooltip tip="An Algolia index is a searchable dataset that consists of records and configuration settings. These settings define how the records are searched and ranked.">
    index
  </Tooltip>;

This page explains the configuration of the cartridge's content indexing job,
including its configuration parameters and default attributes.

## Content indexing job structure

The Content indexing job's general structure and workflow mirror those of [product indexing jobs](/doc/integration/salesforce-commerce-cloud-b2c/indexing/product-indexing/overview).
The cartridge's content indexing uses the Salesforce B2C Content Search Model (`ContentSearchModel`) to browse content assets.
This is why the job has two steps: `SFCCContentSearchIndex` and `algoliaContentIndex`.
The job refreshes the SFCC content search <Index /> before extracting content assets and sending them to Algolia.

## Indexed content attributes

The content job [fully reindexes](/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/the-different-synchronization-strategies#full-reindexing) all content data and <Records /> with each job run.
You can configure which attributes to send at the job level with the `attributeList` parameter.

By default, the content indexing job sends the following attributes to Algolia: `id`, `name`, `description`, `url`, `body`, `page`, and `algolia_chunk_order`.
Unlike for the product indexing jobs where there is a [Custom Preference](/doc/integration/salesforce-commerce-cloud-b2c/getting-started/custom-preferences?client=javascript) for defining defaults (that can be overridden per job), content attributes sent to Algolia are only configured at the job level by utilizing the `attributeList` parameter.

<Info>
  The job intentionally ignores and removes some HTML tags, such as the `<script>` tag,
  since content from these tags isn't meaningful for search.
</Info>

### Base attributes

The base set of attributes is always included in content indexing,
regardless of whether these are specified in `attributeList`.

| Attribute                 | Description                                                                                            |
| ------------------------- | ------------------------------------------------------------------------------------------------------ |
| **id**                    | Content Asset or Page ID (on Salesforce B2C)                                                           |
| **objectId**              | A unique identifier on Algolia's side for the Content Asset or Page (`id + "_" + algolia_chunk_order`) |
| **algolia\_chunk\_order** | Used for sorting chunks that belong to the same content asset/page                                     |

### Configurable attributes

You can send additional content record attributes to Algolia by listing them in the **Attribute List** as a job parameter.

The default attributes include `name`, `description`, `url`, `body`, and `page`.
Expand this list as needed for your use case (for example, `pageTitle`).

{/* vale Google.WordList = NO */}

| Attribute                | Description                                                                                                               |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| **name**                 | The name of the content asset or page                                                                                     |
| **description**          | A description of the content asset or page                                                                                |
| **url**                  | The URL that provides access to the page or content asset                                                                 |
| **body**                 | The primary content displayed to users on the storefront                                                                  |
| **page**                 | Indicates whether the item is a (Page Designer) page (`true` if so)                                                       |
| **classificationFolder** | The classification folder for the content (not applicable for Page Designer pages if the page isn't assigned to a folder) |
| **pageDescription**      | A description metadata field, often used for SEO purposes                                                                 |
| **pageKeywords**         | A list of keywords, often used for SEO purposes but potentially also useful for site search                               |
| **pageTitle**            | A page title, used for SEO purposes and to define the browser's page title                                                |
| **template**             | Applied for rendering content on Salesforce B2C                                                                           |

{/* vale Google.WordList = YES */}

### Customize indexed attributes

You can't exclude `algolia_chunk_order` and `objectId` from the indexed attributes.
However, you can specify which attributes should always be included by using `defaultAttributes` in `cartridges/int_algolia/cartridge/scripts/algolia/lib/algoliaContentConfig.js`.

### Index unsearchable page designer content

By default, the cartridge conforms to Salesforce B2C's standard indexing policy, which indexes only the searchable attributes of Page Designer components.
This can be overridden on a code level with the `indexOnlySearchables` boolean flag in [pageDesignerHelper.js](https://github.com/algolia/algoliasearch-sfcc-b2c/blob/master/cartridges/int_algolia/cartridge/scripts/algolia/lib/pageDesignerHelper.js).
If `indexOnlySearchables` is false, all attributes are indexed without the need for developer support for marking an attribute as searchable, if the page is marked as searchable in the Business Manager (BM).

## Content indexing job configuration

The process has two steps:

1. **SFCCContentSearchIndex**: Prepares and updates the [SFCC content index](https://help.salesforce.com/s/articleView?id=cc.b2c_index_creation.htm\&type=5) before browsing and sending content data to Algolia (in the second step).
   This predefined Salesforce B2C Commerce job step doesn't require any additional configuration.
2. **algoliaContentIndex**: Extracts data from content assets and Page Designer pages and indexes it with Algolia.

The job configuration is accessible in the Job Steps tab. Set the scope to Specific Sites and select all sites for which the job should be executed.

### Content indexing job parameters

| Parameter                      | Description                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **attributeList**              | A comma-separated list of [attributes](#configurable-attributes) to be indexed.                                                                                                                                                                                                                                                                                                                                  |
| **failureThresholdPercentage** | The maximum percentage of records allowed to have errors during indexing. For example, if the threshold is 10%, the indexing job fails if more than 10% of your records have an error during indexing. The temporary index won't be moved to production if the failure rate exceeds this threshold. The default is 0%.                                                                                           |
| **splittingTag**               | The [HTML tag used for splitting content asset records](/doc/integration/salesforce-commerce-cloud-b2c/indexing/content-indexing/fundamentals#split) into chunks. Without specifying this delimiter tag, there will be no semantic splitting, but only [record size-based splitting](/doc/integration/salesforce-commerce-cloud-b2c/indexing/content-indexing/fundamentals#record-size-splitting). Example: `h1` |
| **includedContent**            | Defines the indexing scope: `allContents` indexes both content assets and Page Designer components, `contentAssets` exclusively indexes content assets, and `pageDesignerComponents` indexes only the page designer components.                                                                                                                                                                                  |

Content assets are indexed to a single `body` attribute.
Page Designer pages are more complex—they include regions and components, each with multiple attributes.

To handle this flexible structure, the cartridge uses `pageDesignerHelper.js`,
which recursively extracts and organizes the page's tree-like data.

For details, see Salesforce's [Page Designer documentation](https://developer.salesforce.com/docs/commerce).

### Attribute selection and performance

The job employs a retry strategy akin to those used by other API clients.

The number and type of content attributes sent to Algolia impacts job performance: the more attributes you select, the longer the indexing takes. Additionally, enabling [indexing of unsearchable Page Designer components](#index-unsearchable-page-designer-content) might lead to longer indexing jobs.
For detailed insights, refer to the [performance considerations section](/doc/integration/salesforce-commerce-cloud-b2c/guides/performance-considerations#content-indexing).

### Content search UI

The cartridge provides a [content search UI](/doc/integration/salesforce-commerce-cloud-b2c/building-the-search-ui/front-end#content-search-ui) that you can use to display content results on your storefront.
