# admin Commerce (cc) - Full Documentation # A/B Test Key Metrics for B2C Commerce An A/B test configuration requires you to specify the key metric, which is the most important measurement among the metrics collected from test participant activity. B2C Commerce A/B testing collects the following metrics: | Metric | Description | | --- | --- | | Baskets | Number of sessions where one or more products were added to the basket | | Basket Rate | Baskets per visit | | Adds to Baskets | Number of products added to the basket | | Average Adds per Basket | Average number of products added per basket | | Units Added to Baskets | Number of product units added to the basket | | Average Units Added per Basket | Average number of units added per basket | | Checkouts | Number of checkouts started. Add the StartCheckout pipelet to the checkout pipeline to capture the checkout metrics. Otherwise, they remain at 0. | | Checkout Rate\* | Checkouts per visit | | Orders | Number of orders placed | | Conversion Rate | Orders per visit | | Units | Number of units in placed orders | | Average Units per Order | Average number of units in placed orders | | Revenue | Revenue of placed orders | | Average Revenue per Visit | Average revenue of placed orders per visit | | Average Order Value | Average amount of revenue per placed order in site currency | | Sales Velocity | Units per test length in hours | | Total Discount Amount | Total amount of promotion discounts applied in placed orders | | Discount Amount with Coupon | Total amount of coupon promotion discounts in placed orders | | Average Discount Amount with Coupon | Average amount of coupon promotion discounts applied per placed order | | Discount Amount without Coupon | Total amount of non-coupon promotion discounts in placed orders | | Average Discount Amount without Coupon | Average amount of non-coupon promotion discounts applied per placed order | ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When a site supports multiple currencies, B2C Commerce collects raw data values across all sessions, regardless of session currency. B2C Commerce converts currency values into the site's default currency. If a shopper places an order during an A/B test, A/B test statistics reflect the converted monetary value. B2C Commerce updates A/B testing metrics within 10 minutes on a Production instance. On Staging instances, B2C Commerce updates metrics daily overnight. This setting is not configurable. # A/B Test Object Import and Export in B2C Commerce Use the abtest.xsd schema to import and export A/B tests. When using the abtest.xsd schema, all A/B test child elements are optional to allow support for different import modes. Run an Update mode import to update certain attributes of an A/B test, but not affect other attributes of the test. Or run a Delete mode import, where you only specify the ID of the A/B test to delete. In both cases, omit the irrelevant elements from the file. The `` element supports a _replace_ semantic. In Update or Merge modes, omit this element so that the related attributes of an A/B test remain unchanged. If you include the element, provide its contents in their entirety. For example, the `` element also requires the `` and the `` elements. Export A/B test results from the test results page in .csv format for later analysis, typically within a spreadsheet application.
Object Information Details
Schema file abtest.xsd
Business Manager import and export location

Manually import or export A/B test configurations by clicking App Launcher App LauncherMerchant Tools | Online Marketing | Import & Export Online Marketing.

Use the A/B Tests (XML) setting.

Pipelets
  • ExportABTests
  • ImportABTests
# A/B Test Participants for B2C Commerce A/B tests always include participants who are defined by customer groups and expiration policies. Define A/B test participants with these settings: - One or more customer groups - An expiration policy that defines when participation is valid. | Name | Active | Use case | | --- | --- | --- | | Per Session | Active for the duration of a session. | Provides a different experience each time the customer visits the site. | | Per Customer | Active only when a customer is logged in. Active across all devices for a single customer. Lasts for the duration of the test. | Use when dealing only with logged-in customers who should have the same experience on every device they use. Per Customer participants apply only to logged-in customers. | | Per Browser | Active for all sessions on a browser. Lasts for the duration of the test. | Provides the same experience on a browser for the duration of the test, regardless of whether the customer is logged in. | When you define your participants, you can define the test segments to expose to the participant group so that they see specific visual changes. A control group segment continues to see the site without changes. Test results show the performance of the site for each _participant segment_ in terms of conversion-related metrics, such as orders, revenue, units, and prices. The collected data might or might not have statistically significant results. If the results are statistically significant, consider applying the changes from the test group to your site. A customer can only participate in one A/B test at a time. However, a single customer can participate in multiple segments of a single A/B test when participation expiration is set to Per Customer. Enable or disable multiple participation in a single A/B test segment with the **Allow Multiple Participations** site preference. The recommended setting is **False**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note A test can have up to five test segments, including the control group segment, for a total of four user-defined segments. - **[A/B Testing for B2C Commerce Participation Triggers](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_participation_triggers.htm&release=264.0.0&type=5)** With A/B testing, you can define triggers that a customer accesses to qualify for participation in a particular test. A/B test triggers are included in imported and exported data. # A/B Test Rank Precedence for B2C Commerce B2C Commerce uses rank to control precedence when you configure multiple promotions to apply at the same time. To determine A/B test promotion rank precedence, choose a number from 10 as set by B2C Commerce; you can configure these system objects without a rank (NONE) is considered the lowest rank and evaluated last. Test promotions apply in the order of lowest rank value to highest rank value. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The rank of a slot configuration that you assign to an A/B test segment is irrelevant. Slot configurations that you assign to an A/B test take precedence over slot configurations that you assign to a campaign or to a site. A customer can only participate in one A/B test segment at a time. Because of these rules, there’s no case where the rank of the slot configuration that you assign to a segment compares to another rank. The rank for a promotion introduced for an A/B test group (even a rank of _NONE_) has precedence over the rank of a promotion outside the context of A/B testing. For example, a promotion of the lowest rank (NONE) that participation in an A/B test segment imposes outranks a promotion of the highest rank that you generally assign to a campaign. If two promotions for an A/B test have equal rank, the tie is broken via existing promotion precedence rules. For example, with equally ranked promotions, B2C Commerce breaks ties using their schedule and last modified dates. For example, a merchant is testing two promotions, while there are also two promotions within a campaign, as follows: | Promotion | Container | Rank | | --- | --- | --- | | 20% off on all Damon brand products | A/B test | NONE | | 30% off on all fall blouses | A/B test | 60 | | Buy one fall blouse, get one 50% off | Campaign | 10 | | $10 off on all Damon brand products | Campaign | 20 | A customer buys two Damon fall blouses. All the promotions in the previous table apply at the same time. Because A/B testing rank has precedence over a rank of the same type of experience outside the context of A/B testing, the customer receives either 30% or 20% off on both blouses, depending on which segment the customer enters. ## Sorting Rule Inheritance B2C Commerce handles sorting rule inheritance the same way for both A/B tests and Campaigns. For example, if you have categories A > B > C and only assign a [sorting rule](https://help.salesforce.com/s/articleView?id=cc.b2c_how_sorting_rules_work.htm&release=264.0.0&type=5 "B2C Commerce Sorting rules enable you to control the presentation of search results to the customer. Use sorting rules to bring products to the attention of customers by having them appear at the top of search results. Use any attribute to sort search results or a weighted blend of multiple attributes. To blend multiple attributes, create dynamic attributes.") to A, B and C inherit the sorting rule. If you assign a different sorting rule to B, A has its assigned rule and B and C have the rule you assigned to B. If you assign only a rule to A, and create an A/B test that overrides the sorting rule assigned to A, A, B, and C all use that rule. However, if you assign a rule to B, then even if you override the sorting rule at A, B doesn't inherit it. This is similar to how A/B tests work with promotion exclusivity. A _global_ exclusive promotion that isn’t part of an A/B test still has precedence over a _class_ exclusive promotion that you add as an A/B test experience. A/B tests don’t change these rules. The only precedence A/B tests have is when we’re comparing ranks to see which slot configuration to show, for example, an A/B test experience has precedence over _normal_ site behavior. However, you must configure your A/B tests to take advantage of sorting rule inheritance. In general, when configuring an A/B test with sorting rules, you must only select the top-level categories and rely on inheritance, and not select all subcategories in the category tree (explicitly assigning a sorting rule to each category). With A/B tests, not only can you change the inherited sorting rule, you can also change the sorting rule that was assigned in the catalog. For example, assume the following sorting rule inheritance for a catalog: Catalog (rule 1 assigned) - category A (rule 1 inherited from catalog) - category B (rule 2 assigned, overrides rule 1 from category A) - category B1 (rule 1 assigned, overrides rule 2 from category B) - category C (rule 1 inherited from catalog) - category D (rule 3 assigned, overrides rule 1 from category C) We want to A/B test the effect of assigning rule 1 to categories B and D. Half of the customers get the _normal_ sorting rules; while the other half gets rule 1 for categories B and D. You want the second half of customers to get sorting rules as if you assigned them this way: Catalog (rule 2 assigned) - category A (rule 2 inherited from catalog) - category B (rule 1 assigned, overrides rule 2 from category A) - category B1 (rule 1 inherited from category B) - category C (rule 2 inherited from catalog) - category D (rule 1 assigned, overrides rule 2 from category C) An A/B test doesn't completely replace the normal configuration for a site, it only adds to it. This means you can't assign rule 1 to the catalog in the A/B test and have all the categories inherit it. Assign sorting rules to categories in the A/B test that change the _normal_ configuration to the one you want for the test. The difference between the two configurations is as follows: - Instead of assigning rule 2 to category B, assign rule 1 to category B. - Instead of assigning rule 3 to category D, assign rule 1 to category D. In Business Manager, this equates to a single sorting rule experience for rule 1 that you assign to categories B and D. Because A/B test experiences take precedence over _normal_ site behavior, when a customer is in the test, the customer gets rule 1 for categories B and D, and their descendants. In another example, assume a different A/B test of the effect of assigning rule 2 to all categories. In this case, the only _normal_ sorting rule assignment that is correct is for category B. You must change the assigned rules for categories A, B1, C, D, and the catalog. In Business Manager, this equates again to a single sorting rule experience for rule 2 that you assign to categories A, B1, C, and D, and the catalog. # A/B Test Segments for B2C Commerce Distribute test segments across a maximum of 12 simultaneous A/B tests, as long as the total segments for all active tests don’t exceed 12. Each A/B test can have up to five unique test segments, one of which is always the control group. Each test segment targets a portion of the total test participants. The control group receives the same storefront experience as if the A/B test didn’t exist. Other segments receive a modified storefront experience with one or more changes to the control group experience. These changes are only visible to a particular segment. They can be from one or more built-in Salesforce B2C Commerce A/B testing experiences, and script customizations. - Promotions test which bargains generate the best response. - Content slots test the effectiveness of graphics and content. - Sorting rules look at search results to see their impact. A customer can only participate in one A/B test at a time. We recommend that you test one experience with a new slot content and promotion against one with a different slot content and experience. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When you run A/B tests, avoid using existing promotions, slot content, and sorting rules because they’re included in the controls. Instead, create an experience to test against the controls. ## Test Group Effects on the Storefront Experience Each A/B test group can have effects that automatically change the experience for its participants:
Within the test... Effect...
Include a promotion.

The test makes a promotion available that is otherwise unavailable. When you include a promotion in a test, specify a rank. The rank you assign doesn’t change the rules governing the exclusivity and qualifying products of a promotion. These rules still apply, and can cause another promotion to take precedence over one included for an A/B test.

You can assign each promotion to only one A/B test segment one time. Assigned promotions run for the length of the test.

Include a slot configuration. The test makes a slot configuration available that is otherwise unavailable. When you include a slot configuration in a test, the system provides a rank. Assign each slot configuration to only one A/B test group at a time. Slot configurations run for the length of the test.
Override a sorting rule.

Overrides the default sorting rule for a category that normally applies.

When you assign a category sorting rule to an A/B test, it replaces what you selected on the Sorting Rule tab on the Category page. Where B2C Commerce ignores a category sorting rule, it ignores the rule whether you selected it via the Sorting Rule tab or an A/B test. For example, if you set a sorting rule with the ProductSearchModel API or the Search pipelet. B2C Commerce uses that explicit rule and ignores the default rule, regardless of whether you set the default on the Category page or applied it as an effect for a test segment.

# A/B Testing Configuration Components To create a B2C Commerce A/B test, configure settings for participants, segments, related segment experiences, and key metrics. These configuration components determine how an A/B test runs and how B2C Commerce measures its outcome. - Participants: the customer groups and expiration policies that define who's included in a test. - Segments: the variations of a promotion, sorting rule, or experience shown to participants, including the control group. - Rank precedence: the priority a test's promotions take when multiple promotions could apply at the same time. - Key metrics: the measurement, such as conversion rate or revenue, that determines which segment performs best. - **[A/B Test Participants for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_participants.htm&release=264.0.0&type=5)** A/B tests always include participants who are defined by customer groups and expiration policies. - **[A/B Test Segments for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_segments.htm&release=264.0.0&type=5)** Distribute test segments across a maximum of 12 simultaneous A/B tests, as long as the total segments for all active tests don’t exceed 12. Each A/B test can have up to five unique test segments, one of which is always the control group. Each test segment targets a portion of the total test participants. The control group receives the same storefront experience as if the A/B test didn’t exist. - **[A/B Test Rank Precedence for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_rank_precedence.htm&release=264.0.0&type=5)** B2C Commerce uses rank to control precedence when you configure multiple promotions to apply at the same time. To determine A/B test promotion rank precedence, choose a number from 10 as set by B2C Commerce; you can configure these system objects without a rank (NONE) is considered the lowest rank and evaluated last. Test promotions apply in the order of lowest rank value to highest rank value. - **[A/B Test Key Metrics for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_testing_metrics.htm&release=264.0.0&type=5)** An A/B test configuration requires you to specify the key metric, which is the most important measurement among the metrics collected from test participant activity. # A/B Testing Examples for B2C Commerce Review examples of A/B tests for promotions, content slots, search sorting, and product templates. - **[Configure an A/B Test to Compare Promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_comparing_promotions.htm&release=264.0.0&type=5)** Review which promotions perform the best against a control group, compare them by using A/B tests. - **[Configure an A/B Test to Compare Content Slots](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_comparing_content_slots.htm&release=264.0.0&type=5)** Determine which creative content on a content slot performs the best. - **[Configure an A/B Test to Compare Search Order](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_comparing_search_sorting.htm&release=264.0.0&type=5)** Test which of two search order rules produce the highest revenue for a category. Use active data Top Sellers and Best Margin to define two new sorting rules. - **[Configure a B2C Commerce A/B Test to Compare Product Templates](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_comparing_product_templates.htm&release=264.0.0&type=5)** Determine whether the location of product reviews impacts revenue. Product reviews are important and you want the reviews to have a more prominent placement on product detail pages. You ask a developer for help. - **[Configure A/B Tests for Multiple Segments and Slots](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_getting_complicated_testing.htm&release=264.0.0&type=5)** Determine how the order of two recommended products, and the home page background image affects Adds to Basket. Test changes to the order of four recommended products and the background image for a home page slot. There's a limited time to perform the test and you can't run the tests one after the other. #### See Also - [Manage A/B Tests for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_testing_management.htm&language=en_US) # A/B Testing for B2C Commerce B2C Commerce A/B Testing gives you a tool to test different site experiences. Create and manage A/B tests, view test results, and change your site based on those results. Configure changes to your sites that affect only a subset of visitors to determine from collected data the experience that produces the best results. A/B tests offer these benefits. - Data-driven decisions—B2C Commerce calculates a confidence level showing whether differences in results are due to the tested change and not random chance. - Flexible testing scope—use content slot variations, sorting rules, promotions, against a control group to determine which version drives better results. - Trackable metrics—select what to measure, such as revenue, conversion rate, or orders to align tests to specific business goals. - Controlled rollout—divide shoppers into segments, including a control group. This division enables B2C Commerce to preserve the current experience as a baseline while you evaluate the changes in the results. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important A/B tests take precedence relative to other promotions available in Salesforce B2C Commerce. Create and manage tests through the A/B Tests module in Business Manager. To customize A/B tests using the B2C Commerce API, see [Custom A/B Testing for Developers in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_testing_for_developers.htm&language=en_US). ## A/B Testing Versus Personalization Although the effect is similar, A/B testing segments are different from personalization segments. Personalization of a site uses customer groups, so you define the criteria for the segments. A/B tests serve a different purpose than personalization. A/B test segments run at random, and collect metrics to help determine which experience performs the best according to one or more segment criteria. With both, the user sees an experience that is potentially different than other users. ## A/B Testing Eligibility The Tracking site preference determines a shopper’s eligibility for A/B tests. The Tracking site preference is session-specific and only tracked shoppers are eligible for A/B tests. If your site doesn’t have the Tracking site preference turned on, your site's default Privacy setting determines eligibility. To set this preference, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site Preferences** | **Privacy**. If a shopper opts in or out of tracking mid-session, the A/B Test metrics show a slight inconsistency. A shopper's page can appear as though it's still tracking, but you can refresh the page to fix this issue. The consistency of an A/B test experience varies slightly for eligible registered and unregistered shoppers. - Eligible registered shoppers—the B2C Commerce database stores the mapping between the A/B test group assigned to the shopper's customer ID. B2C Commerce can recall the shopper's A/B test assignments, and so the shopping experience is consistent, regardless of which device the shopper uses. - Eligible unregistered shoppers—B2C Commerce writes the shopper's assigned A/B test group to a cookie on the shopper's browser, so the test results are consistent only when the shopper is on the same device and is using the same browser. Also, the consent requirement, and varied A/B test experiences can impact your test sample size. Consider planning longer tests or altering your test criteria to capture significant A/B test data. ## Import or Export A/B Test Data Use import and export features to move A/B test configurations between environments, for example, staging to production or to back up test setups. You can also use A/B test configurations for a site migration in a site import/export bundle. Use export test configurations to back up or replicate an A/B test setup across sites or environments. By using configurations, you avoid recreating tests manually in Business Manager. Extract exported test results as a .csv file into a spreadsheet for further analysis. Use import configurations to update or delete data. To modify specific attributes in bulk or programmatically, use UPDATE mode for an existing test, or remove a test by using DELETE mode. For more information, see [A/B Test Object Import and Export in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_testing_object_import_export.htm&language=en_US). ## A/B Test Data Deletion Shopper data deletion requests cascade to A/B test participant records. When a shopper requests to have their records deleted, the shopper's A/B test participant records are also deleted. #### See Also - [B2C Commerce: A/B Testing Strategy Guide](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/B2C_Commerce_AB_Testing_Strategy_Guide.pdf) - [Commerce Cloud Platform Adoption Playbook: A/B Testing](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/Commerce_Cloud_AB_Testing_Platform_Adoption_Playbook.pdf) - [Commerce Cloud Device-Type Detection Best Practices](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/CommerceCloud_Device_TypeDetectionBestPractices.pdf) - [Custom Scripting for Setting Up A/B Testing Outside of Business Manager](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/B2CCommerceABTestingwithCustomScripting.pdf) ## Set Up Incremental Indexing Set up incremental indexing for B2C Commerce. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Search** | **Search Indexes**. 2. On the Search Indexes page, click the index type you want to configure. 3. Select the **Incremental Index Update** box for the index you want incrementally updated. This function isn't available for the search availability index, which B2C Commerce updates automatically and incrementally. 4. Click **Apply**. 5. Click **<< Back** to List to return to the Search Indexes page. #### See Also - [Rebuild Search Indexes (Video)](https://salesforce.vidyard.com/watch/WeAGCMnGAWyTkEqgXJpdWh) ## A/B Testing vs. Personalization Although the effect is similar, A/B testing segmentation is different from personalization segmentation. The regular personalization of a B2C Commerce site, for example, done using customer groups, is segmented by criteria that you can define. Meanwhile, A/B test segmentation runs randomly. With both, the user sees an experience that is potentially different than other users. A/B testing, however, goes beyond personalization. A/B testing collects metrics to help determine which experience, among two or more, performs the best according to one or more segmentation criteria. ## A/B Testing Eligibility The Tracking site preference determines a B2C Commerce shopper’s eligibility for A/B tests. The Tracking site preference is session-specific and only shoppers for whom tracking is allowed are eligible for A/B tests. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If your site doesn’t have the Tracking site preference enabled, your site's default Privacy setting determines A/B test eligibility. To set this preference, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site Preferences** | **Privacy**. If a shopper opts in or out of tracking mid session, the A/B Test Metrics show a slight inconsistency. Changing tracking mid session can also cause a shopper's page to appear as though it's still tracking. Refreshing the page fixes this issue. The consistency of an A/B test experience varies slightly for eligible registered and unregistered shoppers. - Eligible Registered–The mapping between the A/B test group assigned to the shopper's customer ID are stored in the database. As a result, the shopper's A/B test assignments are recalled, and therefore the shopping experience is consistent regardless of which device the shopper uses. - Eligible Guest–The A/B test group that the shopper enters is written to a cookie on the shopper's browser. As a result, the shopper's A/B test assignments are recalled. The shopping experience is consistent only when the shopper is on the same device and using the same browser. ## Eligibility and A/B Test Sample Size The consent requirement for A/B test eligibility and the possibility of a varied A/B test experience for unregistered B2C Commerce shoppers can impact your test sample size. Consider planning longer test durations or altering your test criteria to capture statistically significant A/B test date. ## A/B Test Data Deletion B2C Commerce shopper data deletion requests cascade to A/B test participant records. When a shopper requests to have their records deleted from the system, all the shopper's A/B test participant records are deleted. # A/B Testing for B2C Commerce FAQ Frequently asked questions for A/B testing for B2C Commerce. Q: How is A/B testing sorting rule inheritance related to category sorting rule inheritance? A: They are directly related: always configure your A/B tests to take advantage of that inheritance. When configuring A/B tests, only select the top-level categories and rely on inheritance. Don’t select all subcategories in the category tree (explicitly assigning a sorting rule to each category). We don't recommend A/B testing your site search sorting rule because you can't get a clear participation trigger. The search-show pipeline is also called when you enter a category. So, customers are brought into a search test with either search or a category page view. Q: Is it true that you must add `` to each template that uses iscache for A/B testing to work properly? For example, the SiteGenesis product-related templates already include this, but the slot content templates don't. To use a slot content as an A/B test experience, do I need to add this parameter to the slot content-related templates? A: Caching is a complex topic, and there is no general rule for all templates. If you have a template that shows static content, cache that template for a reasonably long period, such as 60 minutes. If you have a template that is specific to each storefront customer, such as the cart contents, never cache that template. If you have a template that is personalized by price, promotion, search results order, or a custom A/B test experience, cache that template using ``. If you have an unpersonalized home page, for example, cache it for 60 minutes. The A/B tests still work for the site. B2C Commerce places storefront customers in A/B test segments as expected despite this cached page, whether they view it right away or never see it. If your search uses a sorting rule, cache your search results page with `` to account for the possibility of personalized sorting rules. Even if you have no A/B tests or no A/B tests with sorting rule experiences, do this. There can be campaigns that personalize the sorting rule for a search because of customer group, source code, or coupon qualifiers. Using `` to cache pages isn't really about A/B tests, but about personalization. A/B tests are one way to personalize. Slot caching is a different way. Slot content personalization depends only on the customer groups and A/B test segments that apply for a storefront customer, and not the promotions or price books. You cache slot content for 60 minutes, for example, even if that content only appears to a specific customer group or a specific A/B test segment. Salesforce B2C Commerce only renders that content specifically for that group or segment, and everyone in that group or segment sees the same content. For example, only a specific customer group or A/B test segment sees the slot content, and that content includes the storefront customer's name. It can't be cached for 60 minutes because everyone sees the same name. There are no personalized slot content templates in SiteGenesis, which is why ` doesn't appear there. Q: Why are there discrepancies between A/B Test metrics observed in B2C Commercevs. external analytics tools? A: Each Analytics tool has its own, usually proprietary, way of tracking the storefront. The logic of external analytics tool is not disclosed to us, so we can’t help with comparing metrics. However, there are some common causes that can explain the discrepancies between analytics tools. If you have multiple A/B tests running concurrently in B2C, the shopper enters the first test that they qualify for (usually when they land on the homepage or category page). Once assigned, they’re omitted from any other A/B tests. This omission from further B2C A/B tests can cause Site Optimizers to see more visits to their other test pages in external tools. However, only a subset of those shoppers actually receives the test, and Salesforce Commerce Cloud (SFCC) tracks them. If the participation trigger is set as Per Session or Per Customer, the shopper is reconsidered for an A/B test each time they return to the site. If you're using plug-ins, you can experience issues with your analytic’s data. For example, you can receive an artificial inflation of Facebook-referring traffic and an increase in pageviews. Some plug-ins redirect when a user interacts with the plug-in, even when the plug-in only appears on the page. The redirect goes to a third site and returns the user to the storefront site. The redirect doesn't pass the referrer, so the traffic sources report show that the visit originated from the third site, overwriting the correct campaign or traffic source. These plug-ins can be affected: - Activity Feed - Recommendations - Like Button For the SiteGenesis or Mobile web Storefront applications, the Like button is supposed to be an inactive display element until a user clicks it. However, it actually makes a call to Facebook that issues another call-back to the referenced product detail page. When a customer views a product, the Like button causes a second visit to the product detail page, which B2C Commerce counts as another A/B test visitor. Because this is a consistent factor across all segments, it does not change the ratio for the test results. Finally, bot traffic can also cause skewed results in A/B testing compared to other analytics tools. Q: Are any A/B testing parameters enforced by quotas? A: Quotas enforce one A/B testing limitation: Maximum of five test segments within a test, including the control group segment, so four user-defined segments total. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Best practice is to edit and configure A/B tests on staging. After testing, reviewing, and approving your A/B tests, you can replicate the tests to production. Q: You can create or import an unlimited number of active A/B tests, yet only a limited number of them can be truly active. How does B2C Commerce select the active tests? A: The Business Manager selects the active tests by: - Comparing their end dates and selecting the tests that end first - If they have the same end dates, comparing their start dates and selecting the ones that started the most recently This determination is dynamic. If a test is enabled or newly created, it can immediately take precedence over one of the others. B2C Commerce allows a maximum of 12 A/B test segments for all active A/B tests. A single A/B test can have up to four segments plus the control group. Q: Is Active Data tagging a pre-requisite to using A/B testing? A: No. Active data isn't a requirement, but it's recommended. For example, active data can be used for sorting rules. Q: A/B testing setup is done on staging and then replicated to production. Do I also need to reindex? A: No. Reindexing is not necessary. Q: Is it true that the more tests you run, the more _diluted_ your participant pool gets? A: Running tests one after the other has no effect on the participant pool. Running tests simultaneously results in the tests sharing the possible participants, because each customer can participate in only one test at a time. The more tests run on the site, the fewer participants in each test. Fewer participants mean a smaller sample size, which often requires tests to run longer. However, there can be only three simultaneous A/B tests in B2C Commerce. Q: What experiences does B2C Commerce support? A: B2C Commerce supports experiences with promotions, content slots, and sorting rules. In addition, we support script customization where you can define other, custom experiences. Q: Do you recommend running one test for a campaign with multiple experiences per segment, instead of running two separate tests? For example, one test with a content slot and promotion or two tests, one with a content slot and the other has the promotion. A: The answer depends on what you want to test. To test independently the effect of slots versus the effect of sorting rules, run separate tests. To test the combined effect of a strategy that includes both slots and sorting rules, run a single test. If you run a single test, you can't tell if the results are because of the slots, the sorting rules, or a combination of both. Run individual tests to better understand this level of detail. Q: Do parallel running tests influence each other? A: Yes and no. Yes, if experience overlap, because users don't participate in other tests, which can skew the results. No, if experiences don't overlap. However, if you measure against the same metric, for example, conversion rate, it's difficult to argue that either experience caused an increase. Also, it takes longer until the tests are conclusive because there are more test segments into which the traffic is distributed. In general, we recommend that you run one test at a time, to eliminate all doubt of other influences. Q: If I have an A/B test for slots on the homepage, how do I determine the percentage to allocate for segments versus the control group? A: The reasons to select one percentage over another depends on the reason for the test and its configuration. For example, a merchant wants to test content slots on the homepage, comparing conservative content with something risky or provocative. The merchant chooses a low allocation for the group seeing the risky content. Alternatively, to test two versions of the same slot with minor differences, such as color or font, a merchant can select equal percentage (50/50 or 33/33/33) allocations. Using a lower allocation results in a smaller sample size of participants in that segment, which on average requires you to run the test for a longer period. Optionally, run the risky content with a 50/50 allocation for a shorter test. However, with a smaller percentage allocation, pull the test faster if it generates a negative reaction, with fewer users having seen the risky content. Q: What events cause an email notification to be sent, and how frequently are they sent? A: B2C Commerce sends email notifications when: - The A/B test ends. - The results of the test become statistically significant. - The A/B test is paused. - The A/B test is resumed. Email notifications are sent hourly. # A/B Testing for B2C Commerce Known Issues We've compiled a list of known issues and troubleshooting to help you configure your A/B tests in B2C Commerce. "Visitor" Metric Incremented Twice Upon Logout Sometimes B2C Commerce counts a visitor metric twice. For example, an A/B test has _Everyone_ as the assigned customer group. If a registered customer logs out after placing an order, and then places another order as a guest, B2C Commerce counts the visitor metric twice. B2C Commerce counts this customer twice even though it's the same customer using the same PC in the same session. When a customer performs a guest checkout only, B2C Commerce counts the customer once, no matter how many orders the customer makes. B2C Commerce counts them only once because when a registered customer logs out, B2C Commerce increments the _visits_ and _visitors_ metrics as if a new, anonymous customer has come to the site. B2C Commerce considers this anonymous customer another visitor and evaluates them again for A/B test participation. If the customer qualifies for an A/B test, B2C Commerce generates relevant data as part of the customer's participation. This can cause a problem with the metrics because B2C Commerce counts the registered customer twice and a guest checkout once. When collecting A/B testing metrics, B2C Commerce doesn’t know how many customers are registered or how many users can result in a guest checkout. Download of A/B Test Results Displays Security Warning in IE8 If you download A/B tests into a .csv file for the first time using an IE8 browser, a security message appears. The message informs you that the download has been blocked. After you confirm the message, the A/B test list page appears and the file isn't downloaded. If you try a second time, the download begins. If you leave the A/B test module and return, the security warning reappears. This error only occurs with Microsoft® IE8. A/B Test Limitations Enforced by Quotas Quotas enforce the following limitations: - B2C Commerce allows a flexible distribution of test segments across a maximum of 12 A/B tests. - Maximum of five test segments within a test, including the control group segment, so four user-defined segments total. Anonymous Customer Participates in A/B Test for Registered Customers An anonymous customer can participate in an A/B test configured for registered customers only in the following scenario. A registered customer participates in an A/B test that has expiration set to _Never_ and is configured for registered customers. The registered customer leaves or logs out of the site and the personalization cookie still exists in the respective system. Now, an anonymous customer can participate in the test. This is to help produce a consistent storefront experience for the A/B test at the expense of potential false positives. When the cookie was set in a previous visit for someone using the same browser, we assume it was also set for the current browser user. Participation in A/B Test for Registered Customers Can Happen Rarely B2C Commerce uses a round-robin assignment of participants to tests. For example, an A/B test is configured for _Everyone_. A second A/B test configured for _Registered Customers_ only has participants if those customers are remembered and the round-robin mechanism has chosen that test. For example: | A/B test | Triggered | Customer group | | --- | --- | --- | | A | Immediately | Everyone | | B | Immediately | Registered | Potential scenarios: - A customer starts a new session. The customer typically starts as _Anonymous._ so A/B test B doesn't apply. B2C Commerce selects A/B test A every time because it loops through all allowed A/B tests until one matches, and B never matches. - A customer logs in later. Participation is always in progress. Therefore, A/B test B isn't assigned. - A customer logs in with the _Remember Me_ flag set to _true_. They return later to the store and are remembered. A/B test B is next in the round-robin sequence. Only then is the customer selected for participation in A/B test B. We recommend that you run one test at a time for most participants. Running one test at a time can shorten the time to statistical significance; and no overlap, to prevent skewing the results. Cannot Add a Campaign or A/B Test Schedule to a Content Slot Users occasionally get confused about why they can’t configure a campaign within the Business Manager Content Slot module. This is by design because users who have permission to access the Content Slot module don’t always have permission to access the Campaigns module. You can only create campaigns and A/B tests if you have permission to access the Business Manager Campaigns module. A/B Test Experiences Not Applied to Page Designer Category Pages A/B test experiences are not applied to category pages rendered by Page Designer. Categories must use the standard controller-based rendering path for A/B test experiences to take effect. To work around this limitation, remove the Page Designer page assignment from the affected category so it uses the standard rendering path. # A/B Testing for B2C Commerce Participation Triggers With A/B testing, you can define triggers that a customer accesses to qualify for participation in a particular test. A/B test triggers are included in imported and exported data. Triggers can be: - Site Entrance/Customer Login with customer group qualification - Site Entrance/Customer Login without customer group qualification - Category page view - Home page view - Pipeline call ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note A/B testing metrics are only calculated after A/B test participation. For example, a customer has already added items to the cart before participating in the A/B test and then submits an order. The corresponding add to cart events don't count for the test, though the order and revenue do. ## Pipeline Triggers The participation trigger can't be the same pipeline as one that collects data. Consider how you want to trigger the participation of a user in an A/B test. Reporting an A/B test participation can't be the trigger itself. The pipeline product-show is a good trigger. To use a pipeline as a trigger, use a different pipeline or call a simple pipeline through a remote include, at the appropriate place. For example, use any of the existing pipelines as a trigger, except for a few reserved pipelines, such as _ReportingEvent-Start_. Or create a simple pipeline containing just a start node and an empty template, and include it in your code as appropriate. Also, to test pipeline triggering, call the pipeline directly in the browser via its pipeline URL. ## Site Entrance / Customer Login Triggers The customer triggers participation for an A/B test _without_ customer group qualification as soon as the customer accesses the site. The customer triggers participation for an A/B test _with_ customer group qualification when the customer logs in. For example, a merchant wants to show two different banners within the storefront header. Banner 1 offers _Free Shipping on Orders over $150_ with a corresponding promotion. Banner 2 offers _10% off orders over $150_ with a corresponding promotion. The merchant configures an A/B test as follows: - Trigger = Site Entrance / Customer Login: A customer enters an A/B test when the customer accesses the storefront. - Control Group = 10%: Represents the normal site experience header and promotion - Segment A = 45%: Free shipping banner - Segment B = 45%: 10% banner When the customer accesses the site, the customer is immediately placed in one of the three test groups because the header banner is persistent throughout the storefront. The statistics are significant because customers always see the header. ## Category Page View Triggers The customer triggers participation when they view the category page for one of the configured categories. This means that a call was made to _Search-Show?cgid=xxxx_ for one of the configured category IDs. For example, a merchant wants to show two different banners on the Kids category page within the storefront. Banner 1 offers _Buy one kid's winter hat, get one free_ with a corresponding promotion. Banner 2 offers _20% off_ on kid's winter hats. The merchant configures an A/B test as follows: - Trigger = Category Page View: A customer enters an A/B test when the customer accesses the category page. - Control Group = 10%: Represents the normal site experience header and promotion - Segment A = 45%: buy one get one (BOGO) banner - Segment B = 45%: 20% banner The customer is only assigned to one of the three test groups if the customer actually views the Kids category page. If the customer doesn't view this page, no metrics are collected. ## Home Page View Triggers To trigger participation, the customer views the default storefront URL (that is, "/") or the Home-Show pipeline. For example, a merchant wants to show two different banners on the home page within the storefront. Banner 1 offers _Free Shipping on Orders over $150_ with a corresponding promotion. Banner 2 offers _10% off orders over $150_ with the corresponding promotion. The merchant configures an A/B test as follows: - Trigger = Home Page View: A customer enters an A/B test when accessing the home page. - Control Group = 10%: Represents the normal site experience header and promotion - Segment A = 45%: Free shipping banner - Segment B = 45%: 10% banner The customer is only assigned to one of the three test groups by actually viewing the home page. If the customer doesn't view this page, no metrics are collected. ## Pipeline Call Triggers The customer triggers participation when a request calls a configured pipeline name and start node (for example, Account-Show). The use of triggers has no effect on the pipeline or scripting API because B2C Commerce request-handling logic executes A/B test triggers. For example, a merchant wants to understand how well a particular promotion is doing for its registered customers. The merchant configures a banner within the My Account section as follows: - Trigger = Pipeline Call - Control Group = 0%: Represents the normal site experience header and promotion - Segment A = 50%: (Promotion A, Banner A) - Segment B = 50%: (Promotion B, Banner B) The merchant only wants the customer to be assigned to an A/B test when the customer views the My Account section because that’s where the banners A and B appear. For example, a customer goes immediately to a product detail page, adds a product, and checks out. The customer is only put into one of the two A/B test groups by actually accessing My Account and seeing the banner. If this pipeline isn't accessed, the customer is never assigned to either test. # A/B Testing Suggestions for B2C Commerce A/B testing suggestions for B2C Commerce. - Don't finish a test too early. Make sure that your test reaches statistical significance or that the results are clear. - Check the test at predetermined times to determine if you want to continue based on results. - Test only those site visitors that you want to test: Use customer groups to focus on specific types of customers. - Trust the data you collect: Don't reject the results because you do not believe them. Remember why you tested in the first place — because you wanted to learn how customers actually behave. - Testing for conversion optimization is a long-term commitment: Make A/B testing part of your long-term marketing strategy. - Beware of the never-ending test: Consider every test an opportunity to learn. Don't waste time on a test that isn't yielding results. ## Clearing Cookies When You Are Verifying Your Tests When you have configured and enabled (important) your tests, run them to see if the results are what you expect. Consider opening various browsers and entering the storefront, simulating customer behavior. During this process, clear cookies on your browser each time you enter a site to simulate the entry by a different visitor. To clear cookies, first identify your browser. Microsoft Internet Explorer 1. On the Tools menu, click **Internet Options** and the **General** tab. 2. To delete all cookies, in the Browsing History section, click **Delete**. 3. Deselect the top **Preserve Favorites Website Data** box. 4. Check the box beside **Cookies**. 5. Click **Delete**. Mozilla Firefox 1. On the Tools menu, click **Clear Recent History**. 2. Set the Time range to clear to **Everything.** 3. Select **Cookies**. 4. Click **Clear Now**. # About the Product Feed Preview The Product Feed Preview shows you the resolved feed data, including missing required fields, before you turn on the daily feed sync. Use it to verify your field mappings, identify B2C Commerce products with errors, and download a sample CSV. The Product Feed Preview is a self-service validation tool on the Catalog tab of the channel configuration page. It applies your field mappings, your product filter rules, and the system-level exclusions to a sample of your catalog, and shows the resulting feed entries. Use the preview to catch field-mapping problems and missing data before B2C Commerce uploads the feed to the channel partner. ## What the Preview Shows For each product included in the preview, B2C Commerce shows the resolved value for every Channel Field in the feed, which are the same values that the daily feed sync sends to the channel partner. Use the columns in the preview table to spot-check titles, image URLs, prices, availability values, and the channel-specific fields (such as is\_eligible\_search for OpenAI or included\_destination for Google). Products with missing or invalid required fields appear with an error icon. Hover over the icon to see which fields are affected, then return to the Field Mapping section to fix them. For the OpenAI feed, see [Map Product Fields for OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_mapping.htm&release=264.0.0&type=5 "Configure how B2C Commerce product attributes map to OpenAI feed fields using the field mapping interface."). For the Google feed, see [Map Product Fields for Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_mapping.htm&release=264.0.0&type=5 "Configure how B2C Commerce product attributes map to Google feed fields using the field mapping interface."). ## Hostname for Non-Production Environments In non-production environments, product URLs aren't visible in the preview by default. Click **Enter Hostname** and provide the storefront hostname you want the preview to use. After you enter a hostname, B2C Commerce uses it to construct the product URL column for each product (url for OpenAI or link for Google). The hostname applies to the preview only; it doesn't change how the daily feed sync constructs URLs in production. In production environments, the hostname is pre-populated from the Host field on the Einstein Status Dashboard, and the product URL column is visible by default. See [Configure Catalog and Order Feeds for Commerce Cloud Einstein Deployment](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_configure_einstein.htm&release=264.0.0&type=5 "Before you can use the OpenAI or Google catalog feed integration, configure Einstein catalog feeds. If your B2C Commerce site already uses Einstein features, you can skip this task."). ## Master Products and Variants The preview shows master products as expandable rows. Click a master product row to see its variants. The preview shows up to 100 variants per master product. Variants inherit attribute data from their master product unless you override the inheritance with a custom mapping. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce never includes master products themselves in the feed sent to the channel partner. Master products appear in the preview only as containers for their variants. ## What's Excluded from the Preview If a product you expect to see isn't in the preview, one of the following exclusions applies: - **System exclusions**: B2C Commerce always excludes master products, variation groups, and product sets. Variants and standalone products appear in the feed. - **Filter rule exclusions**: Products that don't match your include rules, or that match an exclude rule, aren't shown. - **Site catalog assignment**: The product isn't assigned to the active catalog for the current site. - **Variant cap**: Up to 100 variants are shown per master product. - **Inactive catalogs**: Products in inactive catalogs aren't included. ## Sample CSV Download To export the resolved feed data for offline review, click **Download Sample**. B2C Commerce generates a CSV file that contains the resolved feed values currently shown in the preview. Error indicators are visible in the preview UI only and aren't included in the downloaded CSV. Use the CSV to share the feed data with stakeholders or to compare resolved values across catalog updates. # Access Alerts for Your B2C Commerce Site Find all tasks and notifications in the Alerts section of your Business Manager homepage. See all tasks and notifications for your site in the Alerts module. Alerts can be shown in the Business Manager homepage or header, or sent directly to Slack channels. 1. In Business Manager, click the bell icon in the upper-right corner and select **Show All**. 2. To search for alerts, select a module and a priority. 3. To quickly access the required module for an alert, click the alert text. 4. To check for an alert's validity, click **Select Action** and select **Check Again**. 5. To dismiss an alert, click **Select Action** and click **Dismiss**. A dismissed alert can reappear if the required condition isn’t met. To configure how and where alerts show, [Configure B2C Commerce Alerts in Business Manager and Slack](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_alerts_for_your_site.htm&release=264.0.0&type=5 "Set up notifications for your organization in Business Manager and Slack. Configure updates, such as security vulnerabilities, campaign and promotion updates, or site alerts, to appear on your Business Manager homepage. You can also send updates directly to your Slack workspaces."). Individual users can customize their own alerts by [Editing Alert Notifications](https://help.salesforce.com/s/articleView?id=cc.b2c_edit_alert_settings.htm&release=264.0.0&type=5 "An individual user can change the priority of an alert or prevent it from appearing on their homepage or header. This only impacts the notifications for that user."). # Access Control for Log Center Alerts Verify that your role allows alert creation and management in B2C Commerce Log Center. Access Control | Role | View | Create | Edit/delete | | --- | --- | --- | --- | | Admin | All | Yes | Yes | | Support | All | Yes | Yes | | External Admin | Realm-scoped | Yes | Yes (within assigned realms only) | | User | Realm-scoped | Yes | No | # Access Log Center Access B2C Commerce Log Center from a browser or from Business Manager. 1. Access Log Center from a browser. 1. Open a browser. 2. Go to [Log Center](https://logcenter-us.visibility.commercecloud.salesforce.com/logcenter/dashboard). 3. Log in with your username and password. 2. Access Log Center from Business Manager. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site Development** | **Development Setup** 2. In the Log Files section, click **Log Center**. No username or password is required. # Access Product Variant Information in Grid View Use the B2C Commerce base product variant view to review variant product inventory levels, attributes, and pricing. Then strategically place and promote variant products without switching between the grid view and product details lists. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The View Variant option is only available on base product tiles. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Catalog**. 2. Select the catalog category you want to edit. 3. In the Product list, click the grid view icon ![Grid view](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_products_gridview.png). 4. In the desired base product tile, click the dropdown and select **View Variant**. 5. Review inventory levels, attributes, and pricing for variants of the base product. 6. Use the view variant tools to refine the results. 1. To locate and show a specific product, Enter a product ID. 2. To show product variants based on a combination of in stock status and product attributes, use the table filters. 3. To sort the product list in descending or ascending order of available-to-sell inventory, click the **ATS** column. # Access the SCAPI Zone in Business Manager Open the Salesforce-managed SCAPI zone from the Production instance in Business Manager to configure supported security controls, view HTTP and security analytics, and purge cache for B2C Commerce. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) There's one SCAPI zone for Development, Staging, and Production. After Salesforce provisions the zone, open it from the Production instance. The zone doesn't appear in Business Manager or the CDN API on Development or Staging. For what the zone is and which controls it supports, see [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). 1. In Business Manager on the Production instance, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the SCAPI zone by its `.api.commercecloud.salesforce.com` hostname. **Embedded CDN Settings — SCAPI zone in the zone list** ![Embedded CDN Settings zone list with a SCAPI zone row, its platform-managed hostname, certificate count, Configure Zone action, and 0 hostnames available.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_scapi_zone_list.png) 3. Open the row's dropdown menu and select **Configure Zone**. The Configure Zones screen for a SCAPI zone provides three tabs—**Crypto** (read-only), **Security Rules** (custom rules, rate limiting rules, and IP lists, with Zone and Realm sub-tabs), and **Analytics** (HTTP and Security)—plus a **Purge Cache** button. Controls that don't apply to SCAPI zones aren't shown. **Configure Zones — Crypto tab for a SCAPI zone** ![Configure Zones for a SCAPI zone with Crypto, Security Rules, and Analytics tabs and a Purge Cache button. The Crypto tab shows a read-only Certificates table with hostname, certificate status, and expiry.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_scapi_zone_crypto.png) #### See Also - [eCDN Zone Settings in Business Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_a_zone.htm&release=264.0.0&type=5 "Use the Configure Zone screen in Business Manager to manage settings for an embedded CDN (eCDN) zone for B2C Commerce, including certificates, security rules, performance, custom pages, notifications, and logs.") # Access WebDAV Files for B2C Commerce Use the folder browser in Business Manager to easily view and download WebDAV files. You can also use a third-party WebDAV client to view, download, upload, and delete WebDAV files. 1. In Business Managerm click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site Development** | **Development Setup**. 2. Click the **Folder Browser** tab. You see the folders that you have WebDAV permission for in the folder browser. - To filter folders, type the folder name in the **Filter By Name** text box, and click **Filter**. Folder names aren’t case-sensitive. Use asterisks (\*) and question marks (?) as wildcards. - To download a file, click the download icon under **Actions**. - To copy the URL of the directory to the clipboard of your local machine, click **Copy WebDAV URL**. Use the URL to access the directory in a third-party WebDAV client. 3. To use a third-party WebDAV client to access a directory, on the Development Setup window: 1. Scroll down to the **WebDAV Access** section. 2. Click the link icon beside a directory name to copy its URL to the clipboard of your local machine. Paste the URL into the WebDAV client. To access the WebDAV files from the WebDAV client, enter your WebDAV credentials. To use the folder browser to see the directory, click the folder icon beside the directory name in the **WebDAV Access** section. # Account Manager Audit Log Events B2C Commerce Log Center publishes audit log events for Account Manager, including changes to users, API clients, and organizations. Use filters and keyword searches to track specific field changes or action events within a selected time frame. Audit events are available in Log Center for 90 days, after which they're automatically deleted. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Audit logs are also available in the previous Account Manager location until the February 2027 release. To retain historical data, download your Account Manager logs before that date. ## Before You Begin Access to audit events depends on your role: - **Log Center External Administrator role**: View all audit events across the organizations that you belong to. - **All other users**: View audit events related to your own account, including events where you're the target or the actor. To view entity details linked from audit events, you also need the Account Administrator or Read-Only Account Administrator role in Account Manager. ## Access Account Manager Audit Log Events ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Account Manager audit log events are only available in the Americas (AMER) region. If you don't see **Account Manager Audit** in the **Events** tab, check the region selector in the top-right corner of Log Center and select **AMER**. To access the Account Manager Audit Log Events page directly, select the **Go to Log Center** link in Account Manager. Or, follow these steps from a browser or Business Manager. 1. Open Log Center from a browser or from Business Manager. For details, see [View Log Center](https://help.salesforce.com/s/articleView?id=cc.b2c_start_log_center.htm&language=en_US). 2. In the top-right corner, confirm that the region is set to **AMER**. If not, select **AMER** from the region selector. 3. Select **Account Manager Audit** from the **Events** tab. 4. (Optional) After filtering for the Account Manager audit events that you want, select **Download CSV** to export the data. ![Log Center Events page with Account Manager Audit selected.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_log_center.png) ## Understand Key Fields **Target ID** The Target ID identifies the Account Manager entity that was modified. Targets can be a user, an API client, or an organization. For security, Log Center shows only IDs, not email addresses. Select the provided link to view full details in Account Manager. **Actor ID** The Actor ID identifies the entity that performed the action. Actors can be a user or an API client. Select the provided link to view full details in Account Manager. **SystemUser** is a special actor that represents automated background actions, such as scheduled processes or system-triggered updates, that occur without direct user intervention. **Organization context** Filter by organization name to view changes to entities belonging to that organization and changes to the organization itself. This filter is most useful if you're an admin in multiple organizations. **Event attribution** - **User changes**: Changes to a user are attributed to the user's primary organization, regardless of which organization context the change was made in. - **API client changes**: Changes involving an API client are attributed to each organization that the API client belongs to. If the API client belongs to multiple organizations, the same event can appear in multiple organizations' audit logs. ## Filter Audit Events | Filter | Use | | --- | --- | | **Target Type** | Filter by entity type: user, API client, or organization. | | **Actor Type** | Filter by actor type: user or API client. | | **Event Type** | Filter by action type, such as create, update, delete, or role assignment. | | **Role Assignment** | Filter by the role involved in a role assignment or role tenant filter change. | | **Organization Membership** | Filter by the organization involved in a membership change. | To filter by tenant or to search for text within event messages, use the keyword search bar. No dedicated tenant filter exists, so keyword search is the recommended approach for tenant-level queries. ## Common Use Cases **Audit user role changes** To track all role assignments for users in a specific organization: 1. Filter by **Organization Name** and select your organization. 2. Filter by **Target Type** and select **User**. 3. Filter by **Role Assignment** and select the role that you want to track. The results show all users who were assigned or removed from the selected role. **Monitor API client activity** To review actions performed by a specific API client: 1. Filter by **Actor ID** and select the API client ID. 2. Optionally, filter by **Organization Name** to scope the results to a specific organization. Review the **Event Types** filter to see which actions were performed. **Audit organization-level changes** To monitor changes to organization settings: 1. Filter by **Target Type** and select **Organization**. 2. Filter by **Organization Name** and select your organization. The results show all changes to the organization's configuration. **Find events for a specific tenant** To find all events related to a specific tenant filter, enter the tenant identifier in the keyword search bar. **Search by keyword or field value** To search for specific field values across all events, use Log Center Query Language (LCQL). 1. Select **LCQL** at the top of the page. 2. Select a field and enter the value to search for in the parentheses. 3. For role names, enter each role name as it appears in the [Account Manager roles](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_roles.htm&language=en_US) documentation. 4. To add more field conditions, type a space, choose **AND** or **OR**, then select the next field. 5. Select **Search**. ![Log Center Query Language search for a specified Message.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_lcql.png) # Account Manager for B2C Commerce Account Manager creates, maintains, and disables B2C Commerce accounts. It also grants (or denies) access to selected applications based on the account's credentials. Account Manager supports two different types of users: account administrators and non-administrative users. Account administrators can do everything non-administrative users can do. Account administrators can also create accounts, disable accounts, and so on. At least one account administrator is assigned to each organization. Before you can use Account Manager, you must log in. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) - **[Integrate B2C Commerce with Single Sign-On](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_solution_kit.htm&release=264.0.0&type=5)** To make sure the connection is secure and reduce friction, integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider. - **[User Management with Identity Federation In Account Manager and B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_user_management_with_identity_federation.htm&release=264.0.0&type=5)** You can configure the Identity Federation settings of your organization so that Account Manager user accounts are automatically created, provisioned, and linked to the Salesforce Identity of your Salesforce Organization (Salesforce Identity Management (SFIDM)). - **[Just-In-Time User Provisioning In Account Manager and B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_just_in_time_user_provisioning.htm&release=264.0.0&type=5)** Just-in-time user provisioning automates creating a user account in Account Manager eliminating the need for admins to add users manually. It also links the account with the Salesforce Identity account used for single sign-on (SSO). - **[Automated Linking for Unlinked Accounts In Account Manager and B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_automated_linking_for_unlinked_accounts.htm&release=264.0.0&type=5)** If you don't want to use just-in-time provisioning, create user accounts in Account Manager and let them link automatically. When a user first performs single sign-on, Account Manager activates the account and links it to the user's Salesforce Identity account. Existing users must first authenticate with their Account Manager credentials, and MFA if registered. - **[Log In with Identity Federation Enforced](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_log_in_with_identity_federation_enforced.htm&release=264.0.0&type=5)** Before logging in for the first time, you receive an email with a login link. This topic applies to Account Manager and B2C Commerce. - **[Log In with Identity Federation Allowed](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_log_in_with_identity_federation_allowed.htm&release=264.0.0&type=5)** If you already have an account, you receive an email describing your options to either link your account or log in using your Account Manager credentials. This topic applies to Account Manager and B2C Commerce. - **[Email Notifications](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_email_notifications.htm&release=264.0.0&type=5)** Email notifications are sent to users based on how the account is created and the identity federation setting for your organization in Account Manager. This topic applies to Account Manager and B2C Commerce. - **[Log into Account Manager in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_login.htm&release=264.0.0&type=5)** Account Manager offers two login options, link for single sign-on (SSO) or log in with your username. - **[Verify Your Identity with Multi-Factor Authentication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_verify_with_mfa.htm&release=264.0.0&type=5)** Multi-factor authentication (MFA) is a simple, effective mechanism for enhancing login security and safeguarding your users’ accounts against security threats. MFA is part of the B2C Commerce login experience and can’t be turned off. - **[Register Verification Methods for Multi-Factor Authentication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_register_verification_methods_for_mfa.htm&release=264.0.0&type=5)** Multi-factor authentication (MFA) is an extra layer of protection beyond a single password. - **[Remove Verification Methods for Multi-Factor Authentication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_remove_verification_methods_for_mfa.htm&release=264.0.0&type=5)** If you want to replace a multi-factor authentication (MFA) verification method, you can remove registered methods from your Account Manager account. - **[Link an Account Manager Account to Salesforce Identity (SSO) in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_link_account_to_salesforce_identity_sso.htm&release=264.0.0&type=5)** As an Account Manager user, link your own account to a Salesforce Identity account at login. Log in to Account Manager, choose to link with a Salesforce account, and confirm. Whether multi-factor authentication is required depends on whether your organization sets Identity Federation to Allowed or Enforced. - **[Roles Managed in Account Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_roles.htm&release=264.0.0&type=5)** Use this table as a guide to the B2C Commerce Account Manager roles. - **[Removal of Deprecated Roles in Account Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_deprecated_roles.htm&release=264.0.0&type=5)** Some Account Manager roles are deprecated and have been removed from the system. Deprecated roles no longer provide access to B2C Commerce services, and their removal doesn't affect functionality or user access. Starting the week of September 28, 2026, these roles are fully removed from Account Manager. After removal, the roles can't be assigned to users or API clients by any process. - **[Activate a B2C Commerce Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_activate_account.htm&release=264.0.0&type=5)** Before you can activate an account, it must first be created for you by an account administrator. When the administrator creates your account, Account Manager sends a message to your email address. This email message serves as a starting point for activating your account. - **[Change Your Account Password in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_reset_password.htm&release=264.0.0&type=5)** You are required to change your password every 90 days. Define a new password even if your existing password expired. After a password has expired, you can attempt to log in six times to set a new password before your account is temporarily locked. After you successfully log in with an expired password, immediately reset your password. - **[Reset a Forgotten Password in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_reset_forgotten_password.htm&release=264.0.0&type=5)** You can reset your password if you forgot it. However, this procedure works only if you successfully activated your account. Define a new password even if your existing password has expired. After a password has expired, you can attempt to log in six times to set a new password before your account is temporarily locked. After successfully logging in with an expired password, immediately reset your password. - **[Change Account Information in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_change_account_information.htm&release=264.0.0&type=5)** Change your account information with Account Manager. You can't change your email address, but you can change other account values, such as your business phone number. Also, depending on the multi-factor authentication (MFA) verification method settings of your organization, you can register methods for verifying your identity when logging in to B2C Commerce applications. - **[Create a User Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_create_user.htm&release=264.0.0&type=5)** You must be an account administrator to create an account. Each account must belong to one or more organizations, and you can create accounts only for organizations of which you are a member. - **[Edit a User Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_edit_user.htm&release=264.0.0&type=5)** Account Administrators can edit the details, access permissions, and status of users accounts in their organization. - **[Unlock an Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_unlock_account.htm&release=264.0.0&type=5)** After six unsuccessful attempts to log in to an account, Account Manager temporarily locks the account for 30 minutes. An account administrator can explicitly unlock locked accounts within the administrator’s organizations. - **[Add an Account to Your Organization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_invite_user_to_organization.htm&release=264.0.0&type=5)** As an Account Administrator, you can add user accounts to your organization. - **[Manage Access of Partner Accounts in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_manage_partner_access.htm&release=264.0.0&type=5)** Account administrators can use Account Manager to manage access of user accounts invited to the administrator's organization (for example, a partner account). You can control which B2C Commerce applications the invited account can access. - **[Reset a User Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_reset_user.htm&release=264.0.0&type=5)** Account administrators can use Account Manager to reset a user's account. This operation is useful if the user forgets their password or if you want to unlink an Account Manager account from a Salesforce account. When you reset a user's account, you put the account in the same state it was in when it was initially created. The user must reactivate the account. - **[Delete an Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_delete_account.htm&release=264.0.0&type=5)** You can delete an account only if you are an account administrator and the account is within one of your organizations. When you disable an account, the user can't log in to services using their credentials. When you delete an account, Account Manager still stores the user in the database for security-related reasons. - **[Purge an Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_purge_account.htm&release=264.0.0&type=5)** You can purge an account only if you are an account administrator and the account is within one of your organizations. When you purge an account, Account Manager removes the user record from its database. - **[Undelete an Account in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_undelete_account.htm&release=264.0.0&type=5)** When an account is deleted, the deleted user can no longer log into any systems requiring Account Manager credentials. If you delete an account by mistake or as a security precaution, you can undelete the account. Only account administrators can undelete an account. - **[Add an API Client in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_add_api_client_id.htm&release=264.0.0&type=5)** Account administrators use Account Manager to create API clients. To access Salesforce Commerce API (Shopper Commerce API \[SCAPI\]) or Open Commerce API \[OCAPI\]), use an API client. Append the API client ID to the URLs that you use to access these APIs. The On-Demand Sandbox API also requires an API client. - **[Enable and Disable an API Client ID in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_enable_disable_client_id.htm&release=264.0.0&type=5)** Account administrators can use Account Manager to enable or disable an existing API client. Disabling a client blocks its access to the APIs without deleting the client, so you can re-enable it later. - **[Purge a B2C Commerce API Client](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_api_client_purging.htm&release=264.0.0&type=5)** Account Manager administrators can purge API clients with the Account Manager purge feature. - **[Edit an Organization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_edit_organization.htm&release=264.0.0&type=5)** As an Account Administrator, you can edit an organization to specify a password policy,  allow your users to link their Account Manager account to an existing account in your organization in the Salesforce Platform, and specify the multi-factor authentication (MFA) verification methods that are available for users to verify their identity when logging in to B2C Commerce B2C applications. MFA is required for all Account Manager users to improve security and reduce the risk of unauthorized access and account compromise. - **[Audit Log Events](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_audit_logs.htm&release=264.0.0&type=5)** Account Manager B2C Commerce audit log events are available in Log Center and provide visibility into changes to users, API clients, and organizations. - **[B2C Commerce Accounts FAQ for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_faq.htm&release=264.0.0&type=5)** B2C Commerce uses a unified account management system, Account Manager. This topic answers common questions about setting up and accessing your account using Account Manager. - **[Select Contact Users to Receive Account Manager Security Notification Emails](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_maintain_security_contact_email.htm&release=264.0.0&type=5)** Select up to five contact users to receive security email alerts about changes in B2C Commerce Account Manager. # Account Manager Workflow Learn how data flows through the configurations when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Single sign-on (SSO) is an authentication method that enables users to access multiple applications with one login and one set of credentials. You can set up your Salesforce org to trust an external identity provider to authenticate users. ![A diagram that illustrates the workflow for integrating B2C Commerce with SSO.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_sso_1.png) This diagram illustrates the workflow for integrating B2C Commerce with SSO. 1. A third-party management system manages identities and user accounts 2. Salesforce Identity authenticates users and identities. 3. Customers access B2C Commerce tools and applications. 4. SSO works across Salesforce Clouds. ## Login Flow with Salesforce Identity Use this guided flow chart to understand how Salesforce Identity authenticates Account Manager users. ![A diagram that illustrates the sequence of steps for login with Salesforce Identity.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_login_flow.png) #### See Also - [Design Considerations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_design_considerations.htm&release=264.0.0&type=5 "Keep these design considerations in mind when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") - [Configurations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configurations.htm&release=264.0.0&type=5 "Complete SSO configuration.") # Activate a B2C Commerce Account in B2C Commerce Before you can activate an account, it must first be created for you by an account administrator. When the administrator creates your account, Account Manager sends a message to your email address. This email message serves as a starting point for activating your account. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Click the activation link in the activation email message. This link redirects you to the Account Manager's Change Your Password page. 2. In the **Password** field, specify a password. As you enter characters, the page gives you feedback about the security strength of your password. 3. In the **Confirm Password** field, reenter your password. 4. Click the **Change Password** button. A message appears indicating that your password was successfully changed. 5. Click **Continue**. A second message is sent to your email address, indicating that your password has changed. The purpose of this message is either to confirm that your activation was successful or to warn you that someone else tried to change the password. If someone else tried to change password, contact your account administrator or help desk. # Activate a Payment Method for B2C Commerce Activate the payment methods you want to offer shoppers in your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site. Offer Checkout, Express Checkout, or both. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Ordering** | **Salesforce Payments**. 2. Click **Configure** and select the payment methods you want to offer. Select Checkout, Express Checkout, or both. Before activating Express Checkout, see [Express Checkout Considerations for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_express_checkout_considerations.htm&release=264.0.0&type=5 "Although Express Checkout is often faster and easier to use than the Checkout payment method, features such as coupons, gift wrapping, shopper product customization, and gift card redemption aren’t always a good fit for Express Checkout."). ![Activate a payment method.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_activate_payment_method.png) 3. Click **Next**. If you activate Express Checkout, B2C Commerce enables the credit card payment method for Express Checkout transactions. Many Express Checkout payment methods, such as Apple Pay and Google Pay, use credit cards. Enabling Express Checkout has no effect on the methods enabled for Checkout. 4. Click **Activate**. #### See Also - [Configure Payment Methods for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_payment_methods.htm&release=264.0.0&type=5 "Configure payment methods for each payment zone based on your payment provider, region, and currency configuration. The checkout and express checkout payment methods that you configure appear on the checkout page in your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site.") - [Deactivate a Payment Method for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_deactivate_payment_method.htm&release=264.0.0&type=5 "Disable payment methods from appearing in your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site.") # Activate Data 360 Guest Shopper Segments in B2C Commerce Salesforce Data 360 segments are used to determine the target audience for promotions and used to determine the type of rewards provided to segment members. Use guest shopper segments created in Data 360 in your B2C Commerce guest shopper campaigns. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Customers** to access customer-related features in Business Manager. Guest Shoppers are shoppers who visit your site without logging in or using a registered account. When a guest shopper places an order the order data is captured and shared with Data 360. Data 360 separates the order data into several data streams. The `SalesOrderCustomer_bjmp_prd` data stream holds the guest customer details. The `SalesOrderCustomer` data stream is updated one time per hour. Use the `SalesOrderCustomer` data stream to create guest shopper segments. To create a guest shopper Data 360 segment, see [Create a Segment in Data 360](https://help.salesforce.com/s/articleView?id=data.c360_a_create_a_segment.htm&type=5&language=en_US). Use the `SalesOrderCustomer` data stream for the data segment. Set a rule to identify customers in the `SalesOrderCustomer` data stream whose Anonymous flag is equal to true. # Activate the Connection Between Account Manager and Salesforce in B2C Commerce After you enable identity federation, link Account Manager with your Salesforce org. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. In a web browser, go to [https://account.demandware.com](https://account.demandware.com/). 2. Select **Login with SSO**. 3. Enter your Salesforce credentials. You’re redirected back to Account Manager. 4. Enter your Account Manager username (email address). The Account Manager and Salesforce CRM Core email addresses are the same. 5. Click **LOG IN**, and enter your password. 6. Click **LINK ACCOUNT**. 7. Use a registered multi-factor authentication (MFA) method to verify that you’re authorized to log in to Account Manager. You’re now logged in to Account Manager. 8. Review the history details to verify that your account is linked to Salesforce Identity. Next, install Account Manager as a connected app and configure your Salesforce platform. # Active Data Attributes B2C Commerce calculates several attributes or uses them to calculate extra metrics, including: availability, cost price, item age, SKU coverage, and TTOOS (time to out of stock). To see the collected information, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Products and Catalogs** | **Products**. Each standard attribute has a specific use. Salesforce doesn’t recommend that you use attributes for other than their designated use. For example, don't use the _costPrice_ attribute to import non-cost price data. Imported values are often used to calculate other metrics, so importing data into an attribute or not supplying information for imported attributes can affect other attributes. To feed in more data, create custom attributes for the `ProductActiveData` and `CustomerActiveData` business objects. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Don't use active data attributes to import data that you want to replicate to other systems. Active data can't be replicated. Multiple systems can feed attribute data in different import cycles. For example, a third-party system can feed product review data daily, while a backend system can feed return rate information weekly. Active data feeds contain the attributes listed under the Type column of the following tables as the Imported type. Feeds can also include custom attributes added to the _ProductActiveData_ and _CustomActiveData_ business objects. Near-time attribute data is updated within a day–data is collected in real time during the business day, aggregated overnight, and delivered to you the next day. Real-time attribute data can be updated on-demand from your live B2C Commerce production site. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce collects yearly and lifetime attributes daily. Currently, the following fields are available and supported for Product Active Data export: `productID, revenueDay, unitsDay, ordersDay, impressionsDay, viewsDay, avgSalesPriceDay, conversionDay, revenueWeek, unitsWeek, ordersWeek, impressionsWeek, viewsWeek, avgSalesPriceWeek, conversionWeek, revenueMonth, unitsMonth, ordersMonth, impressionsMonth, viewsMonth, avgSalesPriceMonth, conversionMonth, revenueYear, unitsYear, ordersYear,impressionsYear, viewsYear, avgSalesPriceYear, conversionYear` ## Active Data Product Attributes | Attribute | Description | Type | Sample Value | Period | | --- | --- | --- | --- | --- | | [Availability](https://help.salesforce.com/s/articleView?id=cc.b2c_availability.htm&release=264.0.0&type=5 "Availability is the normalized ratio between the Allocation attribute and the Available To Sell (ATS) attribute of a B2C Commerce product inventory record. Special rules apply for variation products, product sets, and potentially product bundles. Availability is the same for all sites that share an Inventory list, so it's basically a site-specific value.") | Ratio between inventory allocation and current stock level. | Real-Time | 0.59 | N/A | | [Cost Price](https://help.salesforce.com/s/articleView?id=cc.b2c_cost_price.htm&release=264.0.0&type=5 "Cost price is a fixed cost price imported into B2C Commerce for use in calculations. Cost price is a site-specific value and must be represented in the same currency used for purchases on the site.") | The cost of goods sold for the product. | Imported | 10.19 | N/A | | [SKU Coverage](https://help.salesforce.com/s/articleView?id=cc.b2c_sku_coverage.htm&release=264.0.0&type=5 "SKU Coverage is the normalized ratio between the total number and the number of available variations of a B2C Commerce base product. SKU Coverage is the same for all sites that share an Inventory list, so it's a site-specific value.") | Ratio between total number of variation products and their availability status. | Real-Time | 0.90 | N/A | | [Time to Out of Stock (TTOOS)](https://help.salesforce.com/s/articleView?id=cc.b2c_ttoos_time_to_out_of_stock.htm&release=264.0.0&type=5 "Time to out of Stock (TTOOS) is the estimated time before a B2C Commerce product goes out of stock.") | Estimated time in hours before product goes out of stock. | Real-Time | 14 | N/A | | Return Rate | The percentage of orders that result in the product being returned. | Imported | 4.5% | N/A | | Average Sales Price | The average sales price for the product in orders, after discounts. | Near-Time | 13.99 | Day, Week, Month, Year | | Impressions | The number of times the product appeared on a search results page, was recommended to a customer, or appeared as a member of a product set. | Near-Time | 17774 | Day, Week, Month, Year | | Views | The number of times the product appeared on a product details page. | Near-Time | 564 | Day, Week, Month, Year | | Revenue | The total revenue for the product. | Near-Time | 2244.66 | Day, Week, Month, Year | | Units | The number of units of the product ordered. | Near-Time | 456 | Day, Week, Month, Year | | Conversion | The number of orders for the product divided by the number of visits in which a customer viewed the product. Also known as the Look To Book ratio. | Near-Time | 4.7% | Day, Week, Month, Year | | [Days Available](https://help.salesforce.com/s/articleView?id=cc.b2c_days_available.htm&release=264.0.0&type=5 "Days Available is a product attribute representing the time since B2C Commerce created the item.") | The number of  days since the product became available, based on the imported _Available Date_ for the product. If no available date has been imported, the system uses the date the product was created. | Real-Time | 5 |   | | Average Gross Margin Value | The average sales price minus the cost of goods sold for the product. | Near-Time | 3.80 | Day, Week, Month, Year | | Average Gross Margin Percent | The average gross margin value divided by the average sales price for the product. | Near-Time | 27.2% | Day, Week, Month, Year | | Look To Book Ratio | The number of orders for the product divided by the number of visits in which a customer viewed the product. | Near-Time | 5.0% | Day, Week, Month, Year | | Sales Velocity | The number of units sold divided by the number of hours. | Near-Time | 30.8 | Day, Week, Month, Year | ## Active Data Customer Attributes | Attribute | Description | Type | Sample Value | Period | | --- | --- | --- | --- | --- | | Visits | The number of times the customer visited the site. | Near-Time | 9 | Week, Month, Year | | Orders | The number of orders placed by the customer. A customer is credited with all orders placed in a visit, even if they place an order before logging in. | Near-Time | 21 | Lifetime | | Returns | The number of return _orders_ placed by the customer. A customer receives credit for all orders returned in a visit, even if they return an order before logging in. | Near-Time | 1 | Lifetime | | Return Value | The amount of negative revenue for the customer due to returns. | Near-Time | 9.99 | Lifetime | | Order Value | The amount of revenue for the customer minus the return value. | Near-Time | 2387.89 | Month, Lifetime | | Average Order Value | The amount of revenue for the customer divided by the number of orders. | Near-Time | 127.51 | Lifetime | | Discount Value without Coupon | The discount amount on customer orders applied for implicit (that is, not coupon) promotions. | Near-Time | 188.45 | Lifetime | | Discount Value with Coupon | The discount amount on customer orders applied for coupon promotions. | Near-Time | 90.00 | Lifetime | | Source Code Orders | The number of customer orders with a source code applied. | Near-Time | 7 | Lifetime | | Gift Units | The number of product units marked as "gift" on customer orders. A customer receives credit for all orders placed in a visit, including orders they place before logging in. | Near-Time | 7 | Lifetime | | Gift Orders | The number of customer orders with one or more product units marked as _gift_. A customer receives credit for all orders placed in a visit, including orders they place before logging in. | Near-Time | 2 | Lifetime | | Top Categories Ordered | The (up to) 20 categories from which the customer has purchased the most product units. | Near-Time | Video, Audio, Top Sellers | Lifetime | | Products Ordered | The products ordered by the customer. | Near-Time | S123, S456, S789 | Lifetime | | Base Products Ordered | The base product SKUs of all variation products ordered by the customer. This attribute has a Set-of-string data type and derives from the Ordered Products values. | Near-Time | S123, S456, S789 | Lifetime | | Products Viewed | The products viewed by the customer. | Near-Time | S123, S456, S789, S999, S888, S777 | Month | # Active Data Collected B2C Commerce collects information about your site automatically. B2C Commerce also collects data, tracks events, and tracks amounts. As you collect data over time, you can encounter stale data - data that is too old to be of value. ## Data Collected
Value Examples Context Description
Product Category

"DVD"

"Men's apparel"

"Video" "Men's shoes" "Action"

Any The category of a product. Can be based on context of the page in the site, or a product primary/classification category.
Source Code "SPRING" "PREFERRED" " Any The source code in effect for a customer session. Can be blank if no source code in effect.
Customer "1234567" " Any The customer number. Can be blank if unknown. Chosen because the identifier must not contain any personally recognizable information such as email address.
Product "ABC123" Any The SKU of a product shown, such as in a search result, added to cart, or ordered.

Recommended Product

 

"ABC123" Any

The SKU of a product recommended on a page. Multiple recommended products can appear on a page.

This data isn't collected now.

## Events Tracked | Event | Description | | --- | --- | | Order | Counts how many times a customer placed an order. | | Product Impression | Counts how many times a product appears in minimal detail on a page. Examples include search results, recommendations, and banners. The exact interpretation is up to the customer. | | Product View | Counts how many times a product appears in great detail on a page. Examples include product detail and comparison pages. The exact interpretation is up to the customer. | | Gift Order | Counts how many times an order contains at least one unit of a product that is marked as a gift. Implement a gift feature to take advantage of this functionality. To implement gifts, you must set the ProductLineItem object _gift_ attribute to _true._ For an example, see the SiteGenesis singleshipping.xml templates. | ## Amounts Tracked | Event | Description | | --- | --- | | Units | Counts some units of a product in an order. | | Revenue | Counts an amount of revenue for a product in an order. | | Discount Value Without Coupon | Counts a discount amount applied to an order for implicit, that is, not coupon-based promotions. | | Discount Value With Coupon | Counts a discount amount applied to an order for coupon promotions. | | Gift Units | Counts some product units marked as a gift in an order. | Multi-Currency When a site supports multiple currencies, B2C Commerce collects active data raw values across all sessions, regardless of session currency. B2C Commerce then converts currency values into the site's default currency using the exchange rate applicable for that day. Active data metrics are also provided in the site's default currency. For example, the site's default currency is USD, but the site supports both USD and EUR currencies. When a customer places order and selects EUR as the currency, B2C Commerce converts the order values from EUR to USD using that day's exchange rate. Active data values retrieved are then in USD only. # Active Merchandising Active merchandising data is product and customer data that web analytics tools, order management systems, or other third-party systems collect or calculate. Use active data to improve how you target your customers. You can import the data from backend systems to feed metrics calculations in Salesforce B2C Commerce. B2C Commerce collects order data automatically, with no customization required, such as changes to site configuration, pipelines, or templates. Site traffic data, such as product impressions and product detail view, are only collected if a site uses Internet Store Markup Language (ISML) tags added for that purpose. Those tags are necessary on only a few pages and you can add them to your site easily. You can also create _custom_ active data attributes, and import their values into B2C Commerce from customer backend systems using a custom .csv feed file. Configure the import file format as a feed definition. You can also use the B2C Commerse APIs to customize active data processes. Consider using the metrics calculated for active data for extra reporting. B2C Commerce deposits the active data feed .csv file daily in the global upload location for Business Manager. This folder is accessible from WebDAV like any other impex folder. Use WebDAV PUT or GET operations to upload or download the daily .csv file. It isn't possible, however, to change the location of the feed. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Active merchandising data isn't used by the B2C Commerce analytics feature. B2C Commerce's Merchandising Analytics process collects active data once a day and uses it to calculate extra active data attributes. For example, the Merchandising Analytics calculates the _average gross margin value_ using the average sales price and the cost price. The cost price is imported from a feed file. The average sales price is collected from the storefront. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Data is only imported into the Production and Staging instances. If you import custom attributes or data onto a Sandbox instance for testing purposes, remember to rebuild the product search index after import. Use the collected and calculated active data attributes to define sorting rules and content slots (that reference customer groups) to influence search result sorting in your storefront and promotion presentation to customers. ![B2C Commerce Digital](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_active_merchandising_slide_1.gif) ## Automatic Data Collection B2C Commerce automatically collects data from orders and customer viewing statistics throughout the day from your Production instance. After the end of the business day, B2C Commerce aggregates the data so that it’s available by 6 AM in the site time zone. B2C Commerce refers to this form of data collection as near-time data collection–data is collected in real time during the business day, aggregated overnight, and delivered to you the next day. The data can be available earlier, depending on your site time zone. Most of the information collected is near-time and derived from orders and not static attributes. Therefore, the data used for metrics reflects the data at the time of purchase, rather than data imported at a specific point during the day. Data collected from orders doesn't require any configuration. However, to collect data from the storefront to track customer page views, place specific ISML tags in your pages. If your storefront is based on SiteGenesis, these ISML tags are already in place. This is the process: - Developers add specific tag to your storefront templates that automatically collect data for analytics. - Merchants create import feeds. These feeds have information about products that 's n’t used on B2C Commerce. For example, the cost price of products, which you use to derive information about products profitability. - B2C Commerce collects Storefront data, such as order numbers or product page views, and sends them to the Merchandising Analytics process for analysis. Feeds pass the data from the collection part of the process to the analysis part of the process. User login and Sessions If a customer logs in during a session, B2C Commerce associates all anonymous activity, such as categories and orders, from before the login with that customer. If multiple customers log in and out within the same session, B2C Commerce assigns each activity to the customer logged in then. If a customer scrolls in a carousel, B2C Commerce records the products viewed as part of a carousel as impressions. Each time the customer selects a search refinement, such as changing the price or size of product, B2C Commerce registers a product impression. B2C Commerce also registers a product view for any quick view window that opens. ## B2C Commerce Active Data Daily Feed B2C Commerce processes the product and customer data for a particular day on the Production instance after the end of day for the site. The data is typically processed after 12:00 AM by the site time. The time to process the data depends on the site size, amount of traffic on a given day, and other factors. When data processing completes, the Merchandising Analytics automatically process imports the Active Data Daily feed into the Production instance. It then rebuilds the active data search index for the instance. At 1:00 AM site time, B2C Commerce imports the processed data into the Staging instance and rebuilds the active data search index for the instance. B2C Commerce handles both the import and index rebuild, requiring no job or custom pipeline. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If active merchandising data processing takes more than an hour to complete, it's still imported, even if it takes up to three more hours. If the processing exceeds three hours, B2C Commerce imports the data from the previous day (or most recently processed data) into Staging and rebuilds the index. If the processing consistently exceeds three hours, contact Salesforce Support to extend your processing window. The Active Data Daily feed file is available in the global import directory. It’s accessible via WebDAV for import into sandboxes or for download to external systems. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The data imported into the Staging instance is from the Production instance: B2C Commerce doesn't collect data from the Staging instance. ## B2C Commerce Active Data Weekly Feed On a weekly basis, B2C Commerce processes yearly and lifetime product and customer data for the site. The exact day and time when the processing runs is site-specific. When processing completes, B2C Commerce automatically imports the Active Data Weekly feed into the Production and Staging instances. It then rebuilds the active data search index for each instance. B2C Commerce handles both the import and index rebuild, requiring no job or custom pipeline. The Active Data Weekly feed file is available in the global import directory and accessible via WebDAV for sandboxes or for download to external systems. ## Custom Active Data Feeds In addition to the data that is automatically collected from the site, you can also create one or more custom feed for the _returnRate_, _costPrice,_ and _availableData_ attributes of the _ProductActivedata_ system object. These values can't be derived, so import them for all metrics to calculate correctly. Create a custom import pipeline that uses the _ValidateActiveDataFile_ and _ImportActiveData_ pipelet. If you use a job to trigger this pipeline, import custom active data whenever you want. However, this data is only used to calculate extra metrics once a day by the Merchandising Analytics process. # Active Merchandising Scenarios These scenarios demonstrate how you can use active merchandising data in B2C Commerce to facilitate your searchanding and personalize merchandising activities. Searchandising is where you configure sorting rules to rank search results, while personalized merchandising is where you show slot content that targets specific customer groups. Both are based on an analysis of active data metrics. ## Scenario 1: Overstock A merchant is overstocked on power drills. The merchandiser wants to make sure that any search or browse that includes power drills elevates those products, by order of their level of overstock. The merchant creates a sorting rule that sorts products in descending order of TTOOS (time to out of stock). Because B2C Commerce calculates this order in real time, based on inventory levels, the merchant can skip creating a feed. ## Scenario 2: Hot Items A bookseller wants to control the balance of search results shown between New Arrivals and Bestsellers. The merchant creates a rule that sorts using a dynamic attribute, hotItem. HotItem blends Sales Velocity (descending, average, 60% weighting) and Age (ascending, minimum, 40% weighting). Because the Sales Velocity and Age are both calculated by B2C Commerce, the merchant can skip creating a feed. The resulting search results show a blend of New Arrivals and Bestsellers. ## Scenario 3: Smart Selling A merchant wants to elevate results based on the average order value of a product, the views to purchases conversion, or the margin of the product. The margin of profit can be either book margin, or actual margin based on promotion discounts. The merchant creates custom active data attributes (AOV and ActualMargin) for the ProductActiveData system object. The merchant adds a feed definition and creates a feed file to import this data. The merchant creates a rule based on both the custom attributes and the Average Gross Margin Percent(30 Days) attribute. ## Scenario 4: Selling by Availability Bras are running low at an intimate apparel merchant. Only size 34C is available because the base product has low SKU coverage. The merchant wants to move products with low SKU coverage lower in the search results based on real-time availability. However, if the shopper has already _drilled down_ to size 34C, then ignore the SKU coverage. The merchant creates a rule based on SKU coverage (descending) and sets it as the default sorting rule for keyword searches. Because the category that includes bras has a different default sorting rule, the SKU coverage doesn't affect any category navigation pages. ## Scenario 5: Sort by Brand A high-end fashion retailer must highlight products based on brand. For example, Diesel Jeans by margin, Hugo Boss by bestsellers, and Armani by conversion rate (impressions to order or visits to order). Assuming that each brand is a category, the merchant can specify a default sorting rule for each brand. If each brand isn't a category, alter your search pipeline to determine if there’s a brand refinement. Then apply specific sorting rules if a customer refines by a specific brand. ## Scenario 6: Reselling Promotions A large retailer also serves as a marketplace for third-party merchant products. This retailer must adjust the merchants' products either up or down depending upon the agreed contract. The merchant can create a sorting rule for a custom product attribute with an explicit search rank. See [Search.](https://help.salesforce.com/s/articleView?id=cc.b2c_search_overview.htm&release=264.0.0&type=5 "Use B2C Commerce to control how customers find your products on your own site and through external search engines, such as Google.") ## Scenario 7: Promoting Quality An electronics merchant is concerned about return rates on a high-defect category, such as flat-panel televisions. To provide customers with low-return-rate items first in a search, create a dynamic attribute with a partial weighting to the attribute returnRate. Import the returnRate attribute value in a feed, because it isn't collected in B2C Commerce. Use a dynamic attribute to include quality as a factor in your product sorting without making quality the sole determinant. ## Scenario 8: Customer Segmentation An apparel merchant wants to be able to provide loyal female customers with information on new spring arrivals and a 20% discount on new suits. To target both slots and promotions to the appropriate customers, create a dynamic customer group defined by data and metrics derived from customer profiles. ## Scenario 9: Geographical Promotions An apparel merchant wants to increase sales in an area where they’re planning a new store. To target promotions to customers from a specific city or area, create a dynamic customer group based on login location. # Active URL Mapping with Source Codes for B2C Commerce Support a friendly URL that a customer can enter. This URL takes the customer to a specific product page, for example, a target page that shows the results of the search for product ID `S1916071`. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Online Marketing** | **Source Code Groups**. 1. On the Source Codes Groups page, click **Find** to view the list of Source Code Groups. 2. Open the selected source code group. 3. On the Source Code Group page General tab, click the Codes tab. 4. Enter SpringSale into the Source-Code Specification field and click **Add**. 5. On the Redirects tab, using the browse button, locate and select the product page you want to show and click **Apply** 2. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Site Preferences** | **Source-Codes**.. 1. On the Source Code Preferences page, enter src into the URL Parameter Name control. 2. Click **Apply**. 3. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Site URLs** | **Aliases**. 1. On the Aliases page, enter www.yourstore.com. 2. Click **Save**. 4. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Site URLs** | **Dynamic Mapping**. 1. On the Dynamic Mapping page, enter the following text. ``` /specials/?src=* p,,,SourceCodeRedirect-Start,,src,{0} ``` 2. Click **Save**. The customer sees the specified target page. # Add a Content Block to a Page Drag a saved content block from the Content Blocks toolbar onto a B2C Commerce Page Designer page to reuse the same content across pages. After you add a block, future edits to the block automatically appear on every page where the block is used. Before you begin, create at least one content block. See [Create a Content Block](https://help.salesforce.com/s/articleView?id=cc.b2c_cb_save_as.htm&release=264.0.0&type=5 "Create a content block by saving a component in B2C Commerce Page Designer. The content block retains the component's content, attribute values, and targeting rules."). 1. In Page Designer, open the page where you want to add the content block. 2. Click the Content Blocks icon in the left toolbar. The menu shows available content blocks. Alternatively, open the Page Structure panel and click **+** where you want to add the content block. Content blocks appear under **Content Blocks**. 3. Drag the content block to the page or into a component region. 4. Click **Save**. The content block appears with a purple highlight border and special icon. Future edits to this block automatically appear on all pages where it's used. # Add a Custom Preference Programmatically in B2C Commerce Get and set custom preferences programmatically using the Salesforce B2C Commerce APIs and via the Business Manager extension mechanism. To configure a new custom preference: 1. Define the preference group and definition in the Business Manager user interface. 2. Embed the preference in your custom application using the `GetPreferenceSet` pipelet and access its values from the returned `PreferenceSet` object. 3. Extend the `bm_extensions.xml` file of the _cartridge_ directory of the custom cartridge to define a preference editor for the new preferences. Use the Business Manager extension descriptor to assign the necessary permissions to configure the custom preferences. ## Setting Preference Values Business Manager extensions reside in a cartridge. The cartridge has a pipeline and the pipeline has two sub pipelines, one for site actions and one for admin actions. The pipelines each have one script node. The script node uses the XML file `bm_extensions.xml` to create the extensions. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You can create a controller to replace the pipeline provided by default in the cartridge, but there is no reason to because you still use the XML file. Business Manager extensions, like jobs, use pipelines. Use the Business Manager extension mechanism to set the values of the defined preferences for a particular site. Use the `CustomPreferences` pipeline with the `View` start node. To configure the pipeline, pass the following parameters: - PrefGroupName: (mandatory) ID of the preference group whose values you configure through this preference editor. - Domain: (optional) name of a domain for which the values are configured. By default, this preference editor configures the preferences of the site where you deploy it. - instType: (optional) initial instance type selected when this preference editor starts. ## Example The following is an example snippet of a `bm_extensions.xml` file that deploys a preference editor for the preference group with the `ID CreditCardPreferences` into Business Manager: **Merchant Tools** | **site** | **Site Preferences** | **Custom Preferences** | **site preferences**. ``` Credit Card Preferences Credit Card preferences Configure the Credit Card preferences icons/pref_ico.gif SLD_MANAGE_SITES ``` # Add a Managed SSL Certificate for B2C Commerce Add an eCDN managed SSL certificate to a hostname for a zone, validate it, and map DNS so the hostname's traffic routes to its zone. eCDN managed certificates are issued and auto-renewed by Salesforce. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Managed SSL certificates aren't available on SCAPI zones. Salesforce manages the SCAPI hostname and certificates. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) For the DNS mapping rules, validation methods, and certificate limits, see [DNS Mapping for eCDN Zones](https://help.salesforce.com/s/articleView?id=cc.b2c_dns_mapping_for_ecdn_zones.htm&release=264.0.0&type=5 "To route a hostname's traffic through its embedded CDN (eCDN) zone, map DNS from your provider to the zone and validate the zone's SSL certificate. Understand the mapping rules, validation methods, and certificate limits before you add or update a certificate."). To add an eCDN managed certificate with the CDN Zones API instead, see [eCDN Automatic Certificates](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-automatic-certs.html) in the developer documentation. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Click **Certificates** or **Settings** for the zone to which you're adding a certificate. 3. On the Crypto tab, select the zone from the list. 4. Click **New Certificate**. 5. Select **eCDN Managed Certificate**. An eCDN managed certificate uses the **automatic** certificate type: Salesforce issues and renews it for you. ![Upload Custom Certificate dialog with eCDN Managed Certificate selected, showing certificate details and assignment details](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_managed_cert.png) 6. From the SSL Certificate Authority dropdown, select **Lets Encrypt** or **Google** (recommended). 7. From the SSL Certificate Validation Method dropdown, select **HTTP Validation** or **TXT validation**. Choose HTTP validation without a stacked CDN, or TXT validation with a stacked CDN and DCV delegation. For the details and requirements of each method, see [DNS Mapping for eCDN Zones](https://help.salesforce.com/s/articleView?id=cc.b2c_dns_mapping_for_ecdn_zones.htm&release=264.0.0&type=5 "To route a hostname's traffic through its embedded CDN (eCDN) zone, map DNS from your provider to the zone and validate the zone's SSL certificate. Understand the mapping rules, validation methods, and certificate limits before you add or update a certificate."). 8. Select the hostname to which you want to assign the SSL certificate. 9. Click **Upload Certificate**. 10. Copy the displayed verification text into your own DNS portal. - **HTTP validation:** Copy the displayed hostname verification text. ![Certificates table showing hostname with Initiating status and hostname TXT validation values to copy](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_enter_host_name.png) - **TXT validation:** Copy the displayed certificate and hostname TXT verification text, including the DCV Delegation CNAME. ![Certificates table showing hostname with Pending Validation status and certificate TXT and hostname TXT values to copy, plus DCV Delegation CNAME](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_enter_host_name_txt.png) 11. To check the status of hostname validation, click **Verify HostName**. Verification can take up to six hours. 12. (TXT validation only) After the hostname is active, click **Verify eCDN Managed Certificate** to validate the certificate through the TXT record. Verification can take up to six hours. 13. Map DNS so that the hostname's traffic routes to its zone. See [Map DNS to an eCDN Zone](https://help.salesforce.com/s/articleView?id=cc.b2c_map_dns_to_ecdn_zone.htm&release=264.0.0&type=5 "After a hostname is active, map DNS at your provider so that the hostname's traffic routes to its embedded CDN (eCDN) zone. Use this procedure whenever you add or update a certificate for a zone."). After the CNAME points traffic to the new zone, click **Verify eCDN Managed Certificate** to check the certificate validation status. # Add a New Customer in B2C Commerce When a customer registers in the storefront, view their information in Business Manager. Add new customers in Business Manager and modify or delete customers (with the proper permission). See [Customers.](https://help.salesforce.com/s/articleView?id=cc.b2c_customers.htm&release=264.0.0&type=5 "Customize how you manage customer records, customer login access, and customer search. Define how long you want to retain product lists in wish lists, and gift registries for anonymous customers.") ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you see unavailable fields, you have read-only permission. You can search for customers and view details such as ID, addresses, customer group membership, and active data, but can't change them. See your administrator if you require write access. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Customers** | **Customers**. 2. On the Customers page, click **New** to create a new customer or click a customer number to edit a customer record. You can also [delete](https://help.salesforce.com/s/articleView?id=cc.b2c_deleting_customers.htm&release=264.0.0&type=5 "Delete one or more customers.") one or more customers. 3. On the Customer page, add or edit the information. 4. Click **Apply**. The Addresses, Customer Groups, and Active Data tabs are now active. 5. Click the **Addresses** tab, and then click **New** to add one or more addresses for this customer. 6. Click the **Customer Group** tab. For a new customer, no customer groups appear. Assign them in the Business Manager [Customer Groups](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_customer_group.htm&release=264.0.0&type=5 "Create and edit customer groups and assign customers to them for marketing.") module. 7. Click the **Active Data** tab to view customer activity. For a new customer, no active data appears. 8. Click the Customer page **General** tab, and then click **Apply** to apply your changes. # Add a Second URL with Source Codes for B2C Commerce Map two sets of incoming URLs to the same target for B2C storefronts. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce allows only one source code group to be active at a time. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Online Marketing** | **Source Code Groups**.. 1. Click **Find** to view the list of source code groups. 2. Open the selected source code group. 3. On the Codes tab, enter SpringSale into the Source Code Specification field and click **Add**. 4. On the Redirects tab, select the **Active: Category** option. 5. Enter JA as the category code and click **Apply**. 2. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Site Preferences** | **Source Codes**. 1. On the Source Codes Preferences page, enter src into the URL Parameter Name control. 2. Click **Apply**. 3. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Site URLs** | **Aliases**. 1. On the Aliases page, enter www.yourstore.com. 2. Click **Save**. 4. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Site URLs** | **Dynamic Mapping**. 5. On the Dynamic Mapping page, enter these two mapping code lines: - `/` `specials` `/?src=* p,,,SourceCodeRedirect-Start,,src,{0}` - `/` `seasonal` `/?src=* p,,,SourceCodeRedirect-Start,,src,{0}` 6. Click **Save**. A customer can navigate via either: ``` www.yourstore.com/specials/?src=SpringSale www.yourstore.com/seasonal/?src=SpringSale ``` The result is the same regardless of the incoming URL. The category page corresponding to code `JA` appears. # Add a Self-Managed SSL Certificate for B2C Commerce Add a self-managed SSL certificate to a hostname for a zone, validate it, and map DNS so the hostname's traffic routes to its zone. You upload and renew self-managed certificates yourself. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Self-managed SSL certificates aren't available on SCAPI zones. Salesforce manages the SCAPI hostname and certificates. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) For the DNS mapping rules, validation methods, and certificate limits, see [DNS Mapping for eCDN Zones](https://help.salesforce.com/s/articleView?id=cc.b2c_dns_mapping_for_ecdn_zones.htm&release=264.0.0&type=5 "To route a hostname's traffic through its embedded CDN (eCDN) zone, map DNS from your provider to the zone and validate the zone's SSL certificate. Understand the mapping rules, validation methods, and certificate limits before you add or update a certificate."). To upload a self-managed certificate with the CDN Zones API instead, see [eCDN Custom Certificates](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-certs.html) in the developer documentation. Restriction You can add up to 5 self-managed certificates per realm. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Click **Certificates** or **Settings** for the zone to which you're adding a certificate. 3. On the Crypto tab, select the zone from the list. 4. Click **Add Certificate**. 5. Select **Self-Managed Certificate**. ![Upload Custom Certificate dialog with Self-Managed Certificate selected, showing certificate and private key fields and assignment details](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_self_managed_cert.png) 6. Enter the SSL certificate and private key information from your certificate provider. 7. Select the hostname to which you want to assign the SSL certificate. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Self-managed wildcard certificates require SANs for both the root domain and the wildcard hostname. See [Configure Wildcard Custom Hostnames](https://help.salesforce.com/s/articleView?id=cc.b2c_add_wildcard_custom_hostname.htm&release=264.0.0&type=5 "Use a single wildcard custom hostname (for example, *.merchantsite.com) to cover multiple subdomains and reduce onboarding and management overhead in B2C Commerce eCDN via Business Manager."). 8. Click **Upload Certificate**. 9. Copy the displayed verification text into your own DNS portal. 10. To check the status of hostname validation, click **Verify HostName**. Verification can take up to six hours. 11. Map DNS so that the hostname's traffic routes to its zone. See [Map DNS to an eCDN Zone](https://help.salesforce.com/s/articleView?id=cc.b2c_map_dns_to_ecdn_zone.htm&release=264.0.0&type=5 "After a hostname is active, map DNS at your provider so that the hostname's traffic routes to its embedded CDN (eCDN) zone. Use this procedure whenever you add or update a certificate for a zone."). # Add a System Use Notification Message in B2C Commerce Create a system use notification message that displays when your users log in. You can also require them to acknowledge this message before continuing to log in. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Security** and select the Misc tab. 2. To erase the record of known good hosts, click **Clear** for the Clear Secure File Transfer Protocol (SFTP) Known Good Hosts File setting. 3. To show a System Use Notification Message on the Business Manager's login page, select **Enable System Use Notification Message**. 4. Select the language that you want to use for the message. You can specify one message per supported locale. The System Use Notification Message lets the user select a locale and see its associated message. 5. Enter the notification message in the System Use Notification Message field. The message communicates your organization's terms of use. 6. To require users to acknowledge the message before logging in, select **Enforce Acknowledgment** setting. 7. Click **Apply**. # Add an Account to Your Organization in B2C Commerce As an Account Administrator, you can add user accounts to your organization. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Log into Account Manager. 2. Click **User**. The Users page opens, showing a list of accounts. 3. Click **Add User**. The Email validation page opens. 4. In the **Email Address** field, enter the email address of the account you want to add to your organization. If your email provider supports subaddressing, you can enter a subaddress with a + sign in the email address. Subaddressing directs variations of an email address to a single inbox. For example, if you want to create a user account for a specific function, such as development, you can enter a subaddress such as: username+development@sample.com. Subaddresses help you manage roles at a granular level. See [Manage Access of Partner Accounts in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_manage_partner_access.htm&release=264.0.0&type=5 "Account administrators can use Account Manager to manage access of user accounts invited to the administrator's organization (for example, a partner account). You can control which B2C Commerce applications the invited account can access."). 5. Click **Add**. If Account Manager cannot find the account, the Add User page opens and you can create an account (see Create a User Account). If Account Manager finds the account, you can click **Add** to add the account to your organization. If the user account is from another organization (for example, a partner account), the added account shows up in the user list of your organization under **Invited Users**. A message is sent to the user's email address, which notifies the user about the membership in your organization. After the user account is added to your organization, you can manage the account's access to various B2C Commerce applications. # Add an API Client in B2C Commerce Account administrators use Account Manager to create API clients. To access Salesforce Commerce API (Shopper Commerce API \[SCAPI\]) or Open Commerce API \[OCAPI\]), use an API client. Append the API client ID to the URLs that you use to access these APIs. The On-Demand Sandbox API also requires an API client. Starting with Account Manager 3.10, new API clients can only be assigned to one organization. You can't add more organizations to an existing API client. If you have existing API clients assigned to multiple organizations, consider updating them to single-organization assignments. In a later release, all API clients must be migrated to single-organization assignment. For more information, see [Security Updates for Account Manager API Clients Assigned to Multiple Organizations for B2C Commerce](https://help.salesforce.com/s/articleView?id=005316038&type=1&language=en_US). You can't use the same client ID for SCAPI and OCAPI. Each API framework requires its own client ID. Don't assign the Salesforce Commerce API role to an API client ID for OCAPI. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Log in to Account Manager. 2. Click **API Client**. The **API Clients** page opens, showing a list of API clients. For each client, the page shows the API client ID, the display name, and the status. If an API client is shared across multiple organizations, the display name has an indicator icon (1). Warnings are also shown for shared API clients on the API Client Detail page and when saving changes. 3. To open the Add API Client page, click **Add API Client** (2). ![API Clients page in Account Manager showing (1) a shared API client and (2) the Add API Client button](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/account_manager_shared_client.png) 4. In the **Display Name** field, enter the display name of the client. 5. In the **Password** field, enter the password. Minimum password requirements: - Include at least 12 characters. Configure the number of required characters at the organization level. - Include three out of four: numbers, symbols, lowercase, uppercase. - Can't include part of your name, username, or universally unique identifier (UUID). 6. In the **Confirm Password** field, reenter the password. The **Access Control** section indicates the status of the API client. 7. In the **Client Authentication Type** section, select an authentication type. - **Confidential**: Suitable for applications that run on servers or platforms capable of securely storing a client secret. - **Public**: Suitable for environments where a secret can't be hidden, such as single-page web apps or native mobile and desktop apps. Uses Proof Key for Code Exchange (PKCE) to exchange OAuth tokens securely. For public API clients, you can't assign a role, set a password, or use a JWT public key. 8. In the **Organizations** section, click **Add**. The **Assign Organizations** page opens. 9. On the **Assign Organizations** page, follow these steps: 1. Search for organizations. 2. To add the API client to an organization, select the organization’s checkbox. Starting with Account Manager 3.10, assign each API client to exactly one organization. 3. Click **Add**. 10. (Optional) To assign roles to the API client, in the **Roles** section, click **Add**. 1. To assign Account Manager roles, search for and select roles such as Account Administrator or API Administrator. 2. To give the API client access to Salesforce Commerce API, search for, select, and add the Salesforce Commerce API role. To specify the required role scope, select the filter icon and select an organization. Enter the instance names and select them. Click **Add**. 11. (Optional) To use a JSON Web Token (JWT) to authenticate the API client instead of using a password, provide a Client JWT Bearer Public Key in the **JWT** field. Enter a PEM-formatted certificate or a Base64-encoded RSA public key, with or without headers. The system checks for correct formatting and valid cryptographic material. To use Access Token format, add a JWT. 12. (Optional) To access B2C Commerce resources using OAuth2 with an API client, provide values in the **OpenID Connect** section. Use the JWT access token format. UUID isn't supported. 13. Save your changes. Account Manager creates the API client. Additional Resources - [Time to Switch to JWT Access Tokens](https://help.salesforce.com/s/articleView?id=000394343&language=en_US&type=1). - [How to Add an API Client in Account Manager](https://www.youtube.com/watch?v=Z3cZlQHWjtM&list=PLFNbZmUNjID7UuW9nGFwbNgAVF3yNlu3v&index=7&pp=iAQB). #### See Also - [Enable and Disable an API Client ID in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_enable_disable_client_id.htm&release=264.0.0&type=5 "Account administrators can use Account Manager to enable or disable an existing API client. Disabling a client blocks its access to the APIs without deleting the client, so you can re-enable it later.") # Add Custom Subagents and Custom Actions The Shopper Agent subagents manage the transactional shopping experience. If you want a capability that isn't in the subagent template, create a custom one. Custom subagents use their own node so you can define strict, domain-specific behavior. You define content rules, output formatting, URL normalization. Configure the subagent to ask the shopper what to select when there are multiple matches. This subagent also handles language and scope boundaries. Considerations for custom subagents: - Keep instructions for domain rules for formatting, verbatim content, and scope. Also, keep cross-cutting brand rules in the shared variables. - Restrict the agent to only the capabilities that your storefront uses. Retire or remove what you don't need, including a subagent's router route. - Use a connected subagent to delegate to a separately deployed agent, such as an external support specialist. The external source doesn't inherit the session binding so connect it independently. Types of actions you can add:
Action Type Example Variable Guidancer
Prompt-template /RAG actions generatePromptResponse Rely on your own content (manuals, policies, knowledge articles), and return a grounded answer with citations. Retrieval from these sources don't require a resolved product ID first. Common inputs include outputLanguage for multilingual responses, and citationMode to define how sources are cited.
Invocable actions (Apex) and Flow actions standardInvocableAction Call org logic. Create a case, look up an order or account, check business hours or agent availability, set session variables, or contact an external system via a named credential.
Utility actions N/A Built-in features like @utils.transition (move between subagents), @utils.escalate (human handoff), and @utils.setVariables (capture and store extracted values such as name, email, and language)
Multi-step action chains N/A

Chain actions together the same way product_expert does. One action finds or identifies the item, and a second action fetches its details. You can apply this pattern to any domain. The lifecycle hooks before_reasoning and after_reasoning move the subagent to the next step automatically, after the required fields are complete.

1. Give the subagent a precise description and its own reasoning instructions. Indicate what the subagent handles and what it defers to another subagent. You want clear routing, and topics that don't overlap. 2. Wire it into the router by adding a `go_to_` transition in `start_agent agent_router`. If you remove that route, it disables the subagent. Removing the block entirely retires it. 3. Include actions, which are the tools that an agent can call. # Add Excluded Products to a Promotion in B2C Commerce Specify products to be excluded from order promotions. For example, you can exclude products (SKUs) that represent gift certificates or products that don't qualify for any promotion because they’re already discounted in price books. This option is available for order promotions of type: With amount of qualifying products. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Online Marketing** | **Promotions**. 2. On the Promotions page, enter or select the general promotion information. 3. Select **Order** for the Promotion Class and select a promotion type. 4. To specify excluded products, Click **Edit**. 5. On the Product Include/Exclude window, specify the qualifier, operator, value, and catalog of products to be `included` in the list of `excluded` products. If the Qualifier is ID, search and select multiple products in one step with the Business Manager product selection pop-up page. You can also use a name in the search along with the ID (for example, "S1653098, Nokia\*"). 6. Click **Add** to add additional types of products to the list. ![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_example.png) Example "10% discount on orders of $100 or more (DOES NOT INCLUDE GIFT CERTS)". The assumption is that gift certificates are created as SKUs in the catalog. The storefront user interface shows "10% item-level discount", so it's important that it's set up as an order-level promotion and not a product-level promotion. The merchant creates this promotion: | Setting | Value | | --- | --- | | Promotion class | Order | | Promotion type | With amount of qualifying products | | Discount | Buy $100 or more and get 10% off | | Non-qualifying products | Gift certificates | - The customer adds a gift certificate for $50 and DVDs costing $60 to the cart. The total order value is $110. The Order promotion doesn't apply because the $100 threshold hasn’t been reached ($110 - GiftCerts = $60). - The customer adds more DVDs to cart; so that the cart now contains gift certificate $50 and DVDs costing $105. The order promotion now applies because the $100 threshold has been reached. The 10% discount applies on the order value excluding the gift certificates ($155 - GiftCerts = $105; discount = $10.50) # Add Favorites to Business Manager To make your work faster and more efficient, save B2C Commerce Business Manager modules as favorites. Add up to 20 site-specific or global modules to the Business Manager home page. Site-specific modules are only available for the selected site. 1. In Business Manager, select a site. 2. Click **Add your favorite Business Manager modules to your homepage.** 3. Select up to 20 modules from the list. Only the modules that you have permission to access appear. 4. Click **Apply**. 5. Return to the home page to see your new favorites displayed in the Favorites section. 6. To change your favorites, click the edit icon in the Favorites section. # Add Hostnames to an eCDN Zone You can configure subdomains of the same zone on the same Salesforce B2C Commerce instance, or on different instances of different realms of the same retailer. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You can't add or remove hostnames on a SCAPI zone. Salesforce auto-provisions the SCAPI hostname, and **Add Hostname** shows 0 hostnames available. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) For example, configure _www.shop.com_ on the Production instance, _test.shop.com_ on the Development instance, and _eu.shop.com_ on the Production instance of the EU realm. To validate a hostname and cut over DNS with the CDN Zones API instead, see [CDN Zones](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones.html#validate-the-hostname-and-cut-over-dns) in the developer documentation. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note For multiple subdomains on the same base domain, consider using a single wildcard custom hostname. See [Configure Wildcard Custom Hostnames](https://help.salesforce.com/s/articleView?id=cc.b2c_add_wildcard_custom_hostname.htm&release=264.0.0&type=5 "Use a single wildcard custom hostname (for example, *.merchantsite.com) to cover multiple subdomains and reduce onboarding and management overhead in B2C Commerce eCDN via Business Manager."). 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings** | **Add Hostnames**. The Additional Hostnames slider opens from the right side of the page. This slider shows the names of zones and hostnames (subdomains) that you can add to the Embedded CDN Settings page. If the list is long, search for specific zones and hostnames using the search field. If you don’t see the hostname you want, verify that it exists in the site's Aliases section under **Merchant Tools** | **site** | **SEO & Discoverability** | **Aliases**. 2. Select a hostname in the list and click **Add Hostname**. Business Manager adds the hostname to the Embedded CDN Settings page, as a child of its zone. After you add an SSL certificate and activate the hostname, complete the remaining steps. 3. Test inbound communication through the embedded CDN by resolving your custom hostname to the IP address of the embedded CDN locally (modify /etc/hosts). Example: 104.12.34.7 shop.abcd.com The CDN domain name resolves to different IP addresses over time. Using a fixed IP address is acceptable for testing purposes only. 4. In your DNS server configuration, point the DNS record of your hostname to the embedded CDN. Create a CNAME record. The value of the record appears in Business Manager. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Removing a hostname from a zone doesn't remove it from the zone's SSL certificate. To remove the hostname from the certificate, update the certificate. **Legacy zones only: permission rules.** To prevent damage to the production experience, users on a non-Production instance can't modify subdomains configured on other instances. In addition, users can't modify certificates on a zone with at least one Production instance as origin. However, they can add hostnames to existing zones with Production instance origins. Users on Production instances can modify all CDN settings, even if another Production instance of the same retailer is impacted. # Add Product Categories with AI Get category suggestions for products in your B2C Commerce product list. AI suggests categories based on your current catalog and the product data available. 1. In Business Manager, click the **App Launcher**, and then select **Merchant Tools** | **Site** | **Products and Catalogs** | **Product List**. 2. Select the base and simple products that you want category suggestions for. Variation products inherit their base product's category. 3. Click **AI Suggest**, and then select **Categories**. 4. Review the suggested categories, and make changes as needed. 5. Select the products that you want to save, and then click **Save**. You can also add categories on the dashboard. To see which products are missing categories and the corresponding AI suggestions, go to the **Products Without Categories** tile, and then click **View Details**. # Add Products Manually Add products to your main B2C Commerce catalog manually. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you see unavailable fields, you have read-only permission. You can search for products and view product data, but you can't change them. If you have mixed permission to access one module (via different roles), B2C Commerce grants the higher-level access. If you require write access, see your administrator. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Products**. 2. To initiate the wizard, click **New**. If you see unavailable fields, you have read-only permission. See your administrator if you need write access. 3. On the Product page General tab, enter general product information: - ID: Don't include commas or periods in your IDs. These characters can cause limitations elsewhere in the product. - Catalog: Select from dropdown (Only select the dropdown when you are creating a product.) - Tax Class: Select from dropdown - Online - Searchable - Searchable If Unavailable: Use this field to control on a product-level if a product is to appear in the search results when it's unavailable (that is, ATS=0). - Name - Brand - Manufacturer - Manufacturer Product ID - Description - Online/Offline for a specific time period - Attributes, such as SEO, Sitemap, presentation and search ranking 4. Click the **Edit Site Specific** button to configure site-specific attributes. 5. On the Options tab, select shared product [Create Product Options.](https://help.salesforce.com/s/articleView?id=cc.b2c_create_product_options.htm&release=264.0.0&type=5 "Product options enable you to associate some products with other products so that B2C Commerce customers can configure a customized product.") 6. On the Variations tab, specify a product [variation](https://help.salesforce.com/s/articleView?id=cc.b2c_create_a_variation_product.htm&release=264.0.0&type=5 "Variation attributes can be Local or Shared. You create shared variation attributes in the scope of a B2C Commerce catalog, and apply them to some or all products of that catalog. You create local variation attributes for a specific product, and apply them only to that product.") consisting of a base product, a set of variable product attributes and associated variation products. 7. On the Pricing tab, assign [pricing](https://help.salesforce.com/s/articleView?id=cc.b2c_pricing_and_price_books.htm&release=264.0.0&type=5 "Price books are the way you define prices for products. A price book contains price definitions for a group of products, based on a currency. Each product in the price book can have multiple price tables in which you define prices for varying quantities.") to the product. 8. On the Inventory tab, manage the settings of a single product [inventory](https://help.salesforce.com/s/articleView?id=cc.b2c_inventory_management.htm&release=264.0.0&type=5 "To manage storefront inventory data, connect B2C Commerce to an external inventory management system that serves as your system of record. Rely on the platform for basic tracking or integrate Salesforce Omnichannel Inventory to access advanced availability features. This integration makes sure of accurate stock levels and supports complex fulfillment scenarios.") record. 9. On the Categories tab, assign the product to a [category.](https://help.salesforce.com/s/articleView?id=cc.b2c_assign_products_to_a_category.htm&release=264.0.0&type=5 "Assign products to categories in B2C Commerce from the product editor and from a category page.") 10. On the Links tab, specify [static product links](https://help.salesforce.com/s/articleView?id=cc.b2c_linking_products.htm&release=264.0.0&type=5 "Use the Links tab in the B2C Commerce Product Editor to create links between products. Link from or to products.") between this and other products. 11. On the Recommendations tab, specify the [products that are associated](https://help.salesforce.com/s/articleView?id=cc.b2c_recommendations.htm&release=264.0.0&type=5 "Use B2C Commerce to implement recommendations using a variety of approaches.") with this product as one of the following recommendation types: - Product Detail Page - Cross-Sell - Category Landing Page - Featured Items - Other ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Your configuration can have different recommendation types other than those listed here. If so, choose a type that is appropriate for your organization. 12. On the Bundles tab, specify products that are [bundled](https://help.salesforce.com/s/articleView?id=cc.b2c_create_product_bundles.htm&release=264.0.0&type=5 "Create product bundles from multiple products in B2C Commerce.") with this product. 13. On the Product Sets tab, view the [product sets](https://help.salesforce.com/s/articleView?id=cc.b2c_create_a_product_set.htm&release=264.0.0&type=5 "Configure a group of products to appear on a B2C Commerce storefront as a product set.") of the current product. 14. On the Active Data tab, view [active data](https://help.salesforce.com/s/articleView?id=cc.b2c_active_merchandising.htm&release=264.0.0&type=5 "Active merchandising data is product and customer data that web analytics tools, order management systems, or other third-party systems collect or calculate. Use active data to improve how you target your customers. You can import the data from backend systems to feed metrics calculations in Salesforce B2C Commerce.") of the current product. 15. On the Page Meta Tag Rules tab, create and manage [page meta tags](https://help.salesforce.com/s/articleView?id=cc.b2c_page_meta_tags.htm&release=264.0.0&type=5 "Page meta tags are used in HTML documents to provide structured data about a web page. Meta tags are snippets of text that don't appear on the page itself, but in the page’s code, describing a page’s content. Common tags are title, robots, description, and social tags such as open graph tags."). 16. Click **Apply** to save your changes. Watch this video to see how to add a product to the B2C Commerce Catalog. If you can’t watch the video in full screen, open this link in a new tab: [Add a Product to the B2C Commerce Catalog](https://salesforce.vidyard.com/watch/wVTfpobCCwmXV1JnJvFe8J). # Add Products to a Category with the B2C Merchant Agent Use the Merchant Agent to add one or more new products to a category, making product categorization more efficient. 1. In Business Manager, select **Merchant Tools** | **Site** | **Products and Catalogs** | **Visual Merchandising**. 2. Select **Category** and enter the category that you want to modify. 3. In the action panel, click **Curate**. The Curate page opens. 4. In the **Action** field, select **Add Product to Category**, and enter a description of the products to add. For example, for the category **Womens** > **Clothing** > **Dresses**, enter Add all products that contain the word floral dress. 5. Click **Create**. The rule details appear on the page. 6. Review the rule. If it meets your requirements, click **Apply**. The new products appear in the category. ![Visual Merchandising category with rearranged products.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_merchant_agent_vm_products.png) # Add, Modify, and Edit Products Manually B2C Commerce Business Manager supports the manual addition, edit, and modification of products. Manually editing products is a good option when you have a few products to update. Besides adding products manually, you can also edit product details, modify product category assignments, and change product attribute assignments. - **[Add Products Manually](https://help.salesforce.com/s/articleView?id=cc.b2c_add_products_manually.htm&release=264.0.0&type=5)** Add products to your main B2C Commerce catalog manually. - **[Edit Product Details](https://help.salesforce.com/s/articleView?id=cc.b2c_edit_product_details.htm&release=264.0.0&type=5)** Use B2C Commerce Business Manager to edit the product details for an individual product. - **[Edit Multiple Products](https://help.salesforce.com/s/articleView?id=cc.b2c_edit_multiple_products.htm&release=264.0.0&type=5)** Use B2C Commerce Business Manager to edit multiple products. Update or delete product attributes or reassign products to a category, copy or delete products, and modify prices. #### See Also - [Add a Product to the B2C Commerce Catalog (Video)](https://salesforce.vidyard.com/watch/wVTfpobCCwmXV1JnJvFe8J) # Additional B2C Commerce Einstein Resources We've prepared some resources to help you optimize your B2C Commerce Einstein experience. This table contains B2C Commerce Einstein feature best practices, recommendations, and FAQs, a link to the Einstein Recommendations API, and links to B2C Commerce Einstein Trailhead documentation.
Information Type Documentation Links
Best Practices, Recommendations, and Instructions
Einstein FAQs
B2C Commerce APIs - Salesforce B2C Commerce Developer Portal B2C Commerce Einstein API
Einstein Developer Guidance Salesforce Partner Community (customer account required)
Trailhead Documentation
# Additional Resources for B2C Commerce Campaigns and Promotions We've prepared some resources to help you optimize your experiences with campaigns and promotions in B2C Commerce. - [B2C Commerce - Platform Adoption Playbook - Promotions](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/Commerce_Cloud_Promotions_Platform_Adoption_Playbook.pdf): Use promotions to create discounts to incentivize purchases and grow revenue. - [B2C Commerce - Platform Adoption Playbook - Campaigns](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/Commerce_Cloud_Campaigns_Platform_Adoption_Playbook.pdf): Use campaigns to create, customize, and schedule different shopping experiences. - [B2C Commerce - Managing Campaigns, Promotions, Coupons, and Source Codes](https://org62.my.salesforce.com/sfc/p/#000000000062/a/0M000000YESo/C0BK7SAv8MExTznVGrjMIax4rajexxftQV4NPm9JdVs): Learn some best practices for managing campaigns, promotions, coupons, and source codes within B2C Commerce. - [How To: Display Thumbnail and PDP Messaging for Coupon Triggered Promotions Before the Coupon is Applied](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/B2CCommerce_HowtoDisplayCalloutMessagingforCouponTriggeredPromotionsBeforetheCouponisApplied.pdf): Learn how to display the promo callout message on the thumbnail and product detail page (PDP) before the coupon code is entered. - [B2C Commerce - Merchandising Calendar Template](https://resources.docs.salesforce.com/rel1/doc/en-us/static/misc/merchandising_campaign_calendar_template.xlsx): Use this spreadsheet to create a high-level overview of past, present, and future campaigns and promotions. - [B2C Commerce Promotion Refinement Overview:](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/CommerceCloudPromotionRefinementOverview.pdf) This document provides an overview of the Promotion Search Refinement functionality for B2C Commerce, which makes it possible to filter products currently on promotion. - [10 Steps for Launching a Successful Flash Sale](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/10StepsforLaunchingaSuccessfulFlashSale.pdf): Learn how to plan for and launch a successful flash sale (also called a hype or high-volume sale). - [Traffic Management Best Practices for Hype Sales](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/TrafficManagementBestPracticesforHypeSales.pdf): Prepare your site to handle the increased traffic that’s expected during a hype sale. - [Bot Mitigation Best Practices for Flash Sales](https://developer.salesforce.com/docs/commerce/commerce-solutions/guide/bot-mitigation-sk.html): Protect your site from malicious bot activity. # Administering Your Organization for B2C Commerce As an administrator, you control users and permissions. You’re responsible for import and export, third-party integration, batch processing, and data replication. Use the Control Center to manage instances. You can also manage client certificates within your environment. - **[Access WebDAV Files for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_access_files_webdav.htm&release=264.0.0&type=5)** Use the folder browser in Business Manager to easily view and download WebDAV files. You can also use a third-party WebDAV client to view, download, upload, and delete WebDAV files. - **[Change the User Interface Locale for Business Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_business_manager_locale.htm&release=264.0.0&type=5)** The Business Manager user interface for B2C Commerce supports multiple languages. - **[Permissions, Users, and Roles in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_permissions.htm&release=264.0.0&type=5)** To facilitate efficiency of operation and security when using B2C Commerce, assign and restrict access based on your defined roles. Only a user with the administrator role can control users and permissions. - **[Cross-site Request Forgery (CSRF) Preferences for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_csrf_preferences.htm&release=264.0.0&type=5)** To protect pages from CSRF attacks, Business Manager injects tokens into requests and logs failed validations. Use the log entries to troubleshoot failed requests. - **[Business Manager Email Configurator](https://help.salesforce.com/s/articleView?id=cc.b2c_business_manager_email_configurator.htm&release=264.0.0&type=5)** Use the optional email settings to define your own SMTP server for B2C Commerce customer and platform email delivery. - **[JavaScript and Objects in HTML Attributes for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_javascript_in_html_attributes.htm&release=264.0.0&type=5)** For security reasons, only Business Manager users with strong authentication, such as through multi-factor authentication with Account Manager, can include JavaScript and objects embedded with `iframe`, `object`, `applet`, or `embed` tags in the HTML attributes of a database object. - **[Global Preferences for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_global_preferences.htm&release=264.0.0&type=5)** Configure global preferences for the entire organization, and sometimes, override those preferences at the site level. Global preferences include setting the time zone, locale, and sequence numbers for a site. - **[Site Preferences in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_site_preferences.htm&release=264.0.0&type=5)** Use site preferences to control the behavior of individual Salesforce B2C Commerce sites. Configure various site preferences. - **[Managing Sites in Business Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_managing_sites_in_bm.htm&release=264.0.0&type=5)** In Business Manager, you can manage various aspects of sites, such as the B2C Commerce storefront sites, the Business Manager site itself, and the global static cache. - **[Scheduling Instance Backups in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scheduling_instance_backups.htm&release=264.0.0&type=5)** Schedule instance backups. - **[Connect Your B2C Commerce Instance to Salesforce](https://help.salesforce.com/s/articleView?id=cc.b2c_connected_comm_salesforce_connection.htm&release=264.0.0&type=5)** Create a trusted data exchange between your B2C Commerce instance and a Salesforce org. This connection gives you access to agentic and cross-cloud experiences, such as Shopper Agent, Merchant Agent, Shopper Profile Sync, and Shopper Notifications. - **[Shopper Profile Sync](https://help.salesforce.com/s/articleView?id=cc.unified_shopper_profile_sync.htm&release=264.0.0&type=5)** Shopper Profile Sync connects your B2C Commerce shopper data with records in your Salesforce org. This integration automatically syncs registered shoppers as person accounts and provides a unified view of each customer across Commerce, Service, and other Salesforce apps. - **[Set Up Eventing in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_event_types.htm&release=264.0.0&type=5)** Use eventing in B2C Commerce to receive notifications when certain data or processing events occur in your Commerce Cloud environment. You enable event types and configure connectors in Business Manager; B2C Commerce routes events directly to your configured connectors. - **[Jobs for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_job_creation_management.htm&release=264.0.0&type=5)** Jobs automate routine tasks or long-running processes, such as importing and exporting data, replicating data or code, or building a search index. Jobs can use preconfigured system steps, or a developer can create custom job steps. Run jobs manually as needed or schedule them to run at a specific time or on a recurring basis. - **[Replication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_replication.htm&release=264.0.0&type=5)** Replication securely copies selected storefront data or a code version from a staging instance to a development or production instance on your Primary Instance Group (PIG). It’s a two-step procedure that first transfers the data or code version, then publishes the data or activates the code version. # Administration Data Replication in B2C Commerce These tables map Business Manager Administration modules to data replication tasks. Organization | Business Manager Module | Replication Task | Scope | | --- | --- | --- | | Organization Profile | N/A | N/A | | Users | N/A | N/A | | Roles & Permissions | N/A | N/A | | WebDAV Client Permissions | WebDAV Client Permissions | Global |
Sites
Business Manager Module Replication Task Scope
Manage Sites Sites Global
Customer Lists Customer Lists Global
Content Libraries
  • Content Library (site-specific)
  • Libraries (shared)
  • Content Library: Site
  • Libraries: Global
Batch Processes N/A N/A
Embedded CDN Settings    
Site Development | Business Manager Module | Replication Task | Scope | | --- | --- | --- | | Development Setup | N/A | N/A | | Code Deployment | N/A (see [Code Replication](https://help.salesforce.com/s/articleView?id=cc.b2c_code_replication.htm&release=264.0.0&type=5 "Code replication transfers a code version from staging to a development or production instance and activates it on the target instance.")) | N/A | | System Object Types | N/A | N/A | | Custom Object Types | Custom Object Types | Global | | Custom Error Pages | N/A | N/A | | Custom Maintenance Pages | N/A | N/A | | Deprecated API Usage | N/A | N/A | | Import & Export | N/A | N/A | | Site Import & Export | N/A | N/A | | Open Commerce API Settings | OCAPI Settings | Global | | Customer Service Center Settings | CSC Settings | Global |
Global Preferences
Business Manager Module Replication Task Scope
Locales Preferences Global
Instance Time Zone Preferences Global
Change History    
OAuth2 Providers OAuth Providers Global

Security

Note
Note Configure the global security preference Enforce HTTPS separately for each instance. The Preferences replication task does not replicate this setting.
Preferences Global
Store Locator Data Geolocations Global
Page Meta Tags Preferences Global
Feature Switches    
Order Search Preferences Site
Sequence Numbers Preferences Global
Products    
Retention Settings    
Import & Export N/A N/A
Global Timeouts    
Custom Preferences Preferences Global
B2C Commerce Einstein Data Privacy Agreement N/A N/A
Analytics N/A N/A
Operations | Business Manager Module | Replication Task | Scope | | --- | --- | --- | | Job Schedules | N/A | N/A | | Job History | N/A | N/A | | Job Schedules (deprecated) | N/A | N/A | | Job History (deprecated) | N/A | N/A | | Job Statistics | N/A | N/A | | Import & Export | N/A | N/A | | GMV Reports | N/A | N/A | | Custom Log Settings | N/A | N/A | | Code Profiler | N/A | N/A | | Pipeline Profiler | N/A | N/A | | Quota Status | N/A | N/A | | Change History | N/A | N/A | | Encryption Keys | N/A | N/A | | Private Keys and Certificates | N/A | N/A | | Services |   |   | | Service Status | N/A | N/A | | IP Address Geolocation Data | N/A | N/A | | Predictive Intelligence |   |   | # Administrator Role in B2C Commerce The administrator role is the top-level role for an organization. This role is automatically created and can't be deleted directly or indirectly by import. The administrator role has the following properties: - Is always available in a new instance. - Cannot be deleted through B2C Commerce tools or the import. - Has access to all known system modules in all known sites (per organization). - Automatically gets access to all system modules of a newly created site. - Automatically gets access to new modules when deploying new releases (for all organizations and sites). - Can be extended with functional permissions. - Can be extended with access permissions for custom modules. - Can access permissions on all locales assigned to all roles. For locales created after Release 16.9, administrators must explicitly grant locale-specific permissions to a relevant role. Administrator access for all system modules is ensured via the following mechanisms: - When a new site is created, the administrator role automatically receives the required access permissions for all site system modules. The administrator role maintains full access to all modules within all sites. - When the server starts, B2C Commerce checks whether the organizational and site level administrator roles still have access to all known system modules in all sites. The administrator role automatically gets access to newly introduced system modules (for example, when deploying new releases). ## Retrieving Passwords We recommend that all customers and partners have one administrator who is responsible for the passwords of all their instances. This administrator is usually the default _admin_ user account included with every new instance. The admin user can create other named accounts that also have administrator permissions. Developers use their own accounts to access instances and don't change or reset the global administrator password. After a dbinit is run on a sandbox, the administrator is responsible for changing the passwords for the sandbox back to the original passwords. See Using Dbinit. Security settings let the administrator configure Business Manager passwords behaviors. An administrator can retrieve or reset a forgotten password using the _Forgot Password_ feature. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Salesforce Support resets only the main administrator password for the admin account. Only a user logged in as the admin user can reset other accounts with administrative access. ## Import and Export The import logic rejects deletion attempts for the administrator role (for example, via DELETE mode import). The import logic also rejects any modification of system module access privileges (for example, via REPLACE mode import). The import log records both cases as warnings. ## Business Manager Module Permissions Module permissions grant access to specific B2C Commerce Business Manager modules. If a logged-in user has permission to access a Business Manager module, the application appears in the left navigation pane. Grant read-only permission to certain modules and preferences. Users with read-only permission can view preferences and modules, but can't edit them. Read-only permission is available for the following modules: customers, products, product sets, global custom preferences, Content Assets, Customers, Inventory Lists, Job History, Libraries, Library Folders, Ordering, Price Books, Products, Product Sets, Site Preferences, and Variation Attributes. Enabling write access also enables read access. You can also grant read-only permissions to Business Manager modules for all site-specific preferences. These preferences include locking, baskets, A/B tests, locales, currencies, source codes, gift certificates, guided search, sequence numbers, order, coupons, promotions, storefront toolkit, storefront URLs, system object definitions, and custom preferences. If a Business Manager module provides site-specific functionality, permission is granted in context of that particular site or the entire organization. For example, orders are managed in the context of a site, so the permission on the Ordering module is granted in the context of the site. ## Business Manager Locale Permissions B2C Commerce Business Manager supports localization of business objects. Specify which users have access to a locale's data. To give users access to a locale, first create a role using the Locale tab on the Roles and Permissions page. Assign the role to the user. Enabling write access also enables read access. Because every role requires read permission for at least the default locale, read permission is automatically assigned. For example, a user with write permission can edit products within a locale. The user can edit localizable fields, such as description and name, and non-localizable fields, such as the brand and the merchandiser. A user with read permission only on the selected locale can't edit any fields, even non-localizable fields. ## Business Manager Functional Permissions Functional permissions aren't associated with a B2C Commerce tool module. They let a user perform specific functions in B2C Commerce. For example: to make Alice an agent who can log in on behalf of any customer of site ABC, Alice needs the functional permission `_Login_On_Behalf_` for site ABC. To edit data, these permissions must be combined with Business Manage module permissions. ### Organization-Wide Functional Permissions The following table lists the functional permissions that apply to your organization as a whole:
Permission Description
Access_Customer_and_Customerlist_Impex controls access to the Customers and Customer List in the Business Manager Import and Export module. Users have access to the import and export buttons and can import and export data. Limiting authorization provides better control over data import and export operations. It helps organizations maintain data integrity and follow security policies. Users can view relevant files and status overview on the Import and Export page.
Replication_Run_For_Org Lets a user manage and start data replication processes for global replication tasks (that is, system object type definitions).
Manage_All_Catalogs

Lets a user:

  • view, create, edit, organization catalogs
  • assign catalogs to sites
  • view, create, edit, all assets in all catalogs in all languages and for all sites

Allows access to catalogs, categories, products, recommendations, variation attributes, options, product category assignments, or catalog images. Assign this permission to users who need access to Products, Catalogs, Product Options, Product Sets, Recommendations, or Variation Attributes modules.

Delete_All_Catalogs

Lets a user:

  • delete organization catalogs
  • delete all assets in all catalogs in all languages and for all sites

Having the Manage_Site_Catalog functional permission along with the Delete_All_Catalogs functional permission isn't sufficient to delete any catalog. Only users with both Manage_All_Catalogs and Delete_All_Catalogs can delete catalogs. As of Release 16.3, all users who previously had the _Manage\_All\_Catalogs_ permission are automatically assigned the additional Delete_All_Catalogs permission.

Manage_All_Libraries

Lets a user manage all libraries and their content assets for all sites.

Manage_All_PriceBooks

Lets a user:

  • view, create, edit, delete organization price books
  • assign price books to sites
  • view, create, edit, delete prices in all price books for any product
  • view, create, edit, delete product options and shared option prices (option prices aren't in price books)

Allows access to price books, product prices, and option prices. Assign this permission to users who need access to Products, Product Options, or Price Books.

Manage_Inventory

Lets a user:

  • view, create, edit, delete inventory lists
  • assign inventory lists to sites
  • view, created, edit, delete inventory records in all inventory lists for any product

Allows access to inventory lists and inventory records. Assign this permission to users who need access to the Products and Inventory modules.

Merge_Customers Lets a user merge customers of one customer list into another customer list.
View_Coupon_Codes Lets a user view full coupon codes in Business Manager, Open Commerce API (OCAPI), and through the export function.
### Site-Wide Functional Permissions The following table lists the available functional permissions to restrict a role to a specific site or sites.
Permission Description
Login_On_Behalf Allows administrators to log into the Storefront on behalf of a customer, provided they also have Create_Order_On_Behalf_Of functional permission. For example, a call center application can access storefront data, but is restricted to the storefront.
Replication_Run_For_Site Lets a user manage and start data replication processes for site-specific replication tasks (that is, search indexes).
Login_Agent Lets an application log in as a customer in the storefront. Restricts the access to only those Business Manager users that have the permission Login_Agent. This permission lets an application, such as a call center application, access storefront data, but restrict it to specific sites.
Manage_Site_Catalog

For storefront catalog products, lets a user:

  • view, create, edit, delete all non-localized attributes
  • view localized attributes for all locales
  • view, create, edit, delete localized attributes for allowed site locales

For products owned by another catalog, but assigned to the storefront catalog, lets a user:

  • view non-localized attributes
  • view localized attributes for all locales
  • browse all other catalogs and assign products from other catalogs to the storefront catalog
Manage_Site_PriceBooks

Lets a user:

  • view site price books
  • view, create, edit, delete prices in site price books for site products

Users can't:

  • edit any attributes of site price books
  • view non-site price books

Site prices books are either directly assigned to the site or assigned via source codes. Users with this permission can’t edit price books not assigned to site or source code.

Allows access to price books, product prices, and option prices for the site. Assign this permission to users who need access to Products, Product Options, or Price Books.

Manage_Site_Inventory

Lets a user:

  • view site inventory list
  • view, create, edit, delete inventory records in site inventory list for site products

Users can't:

  • edit any attributes of site inventory list
  • view non-site inventory lists

Allows access to inventory lists and inventory records. Assign this permission to users who need access to the Products and Inventory modules.

Manage_Site_Library Allows a user to edit an asset in a locale. The locale must be active for one of the sites that you have permissions. If the locale isn't enabled, you can't edit the content.
Adjust_Item_Price Allows a user to add or delete a price adjustment at the item level.
Adjust_Shipping_Price Allows a user to add or delete a price adjustment at the shipping level.
Adjust_Order_Price Allows a user to add or delete a price adjustment at the order level.
Delete_Order_Note Allows a user to delete a note at the order or basket level.
Delete_Order Allows a user to delete all order information (including personal data in the order).
Create_Order_On_Behalf_Of Allows administrators to log into the Storefront on behalf of a customer, and allows an agent to create orders via the Shop API.
Search_Orders Allows a user to search for orders as an agent via the Shop API.
Handle_External_Orders Allows a user to handle external orders as an agent via the Shop API.
Access_Protected_Storefront Allows a user to access a password-protected storefront.
## WebDAV Permissions To grant access to specific WebDAV folders, use WebDAV permissions. WebDAV permissions apply to your entire B2C Commerce organization. | Permission | Description | | --- | --- | | `/cartridges` | Write access to the files in the `/cartridges` folder and its subfolders. | | `/catalogs/*` | Read or write access to your organization's catalogs. You can grant access to all catalogs or selected catalogs. | | `/dynamic/*` | Read or write access to your organization's dynamic folders. Grant access to all dynamic folders or selected dynamic folders. | | `/libraries/*` | Read or write access to your organization's libraries. Grant access to all libraries or selected libraries. | | `/realmdata` | Write access to the files in the `/realmdata` folder and its subfolders. | | `/securitylogs` | Read access to the files in the `/securitylogs` folder and its subfolders. | | (all other folders) | Read or write access to other top-level folders. | ### Permissions for Impex Folders If you grant permission to a root folder with an asterisk, B2C Commerce grants full permission to all its subfolders, even if you haven't granted permission to a specific subfolder. For a subfolder with an asterisk, B2C Commerce also grants read and write permissions to all its subfolders unless you set permission for a subfolder to read only. For example, the root folder `/impex/*` has an asterisk. You have access to `/impex/subfolder`, even if permission isn't granted. For the subfolder `/impex/test/*`, select the read option to limit access to `/impex/test/subfolder` as read only. ## Assign a Price Adjustment Limit Assign limits per user for manual price adjustments in B2C Commerce Business Manager. You can select a context of one, multiple, or all sites for which the limits apply. Access limits programmatically via the Script API, `dw.order.LineItemCtnr.verifyPriceAdjustmentLimits()`. A price adjustment limits violation check is done during manual price adjustment creation by Open Commerce API (OCAPI), as follows: ``` POST /baskets/\{basket_id\}/price_adjustments ``` Price adjustment limits are imported and exported through the site import/export. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Organization** | **Roles and Permissions** > and select Administrator. 2. On the **Price Adjustment Limits** tab, select the context in which you want to assign permissions. 3. Click **Apply**. 4. To add a limit, click **Add**. 5. On the Add Price Adjustment Limit window, select a type (Item, Shipping, or Order), a currency, and a value. Price adjustment limits validation considers only the access roles with price adjustment [permissions](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-setting-permissions-for-csc.html) configured. Only price adjustment limits that are assigned to an access role with a specific type of price adjustment permission are considered when a manual price adjustment is validated. The type of price adjustment permission, item, order, or shipping, depends on the type of the manual price adjustment. To prevent all users with access to a role from creating unlimited manual item price adjustments, define price adjustment limits to access roles with an item, order, or shipping price adjustment permission. 6. To change the context, click **Select Context**. When you change context from one to multiple sites, for example, you can see unassigned limits. 7. To assign a limit, check the box next to the limit and click **Update**. 8. To unassign a limit, clear the box next to the limit and click **Update**. 9. To revert changes, click **Revert** before you click **Update**. When you click **Update**, your changes can't be reverted. ## Find All Users with a Particular Permission Check which users have read or write access to a module in B2C Commerce Business Manager. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Organization** | **Permission Audit**. 2. Select a permission and, optionally, select an access level or site. 3. Click **Find**. 4. To sort or filter the user list, click **Export to CSV**. The CSV format provides sorting and filtering functionalities. # Advanced Search Extended Attributes Data Types When searching for B2C Commerce products, search by extended attributes. This table shows the data types of extended attributes and their corresponding operator options: | Extended Attribute Data Type | Operators Available | | --- | --- | | String, email, enum of string with single value (key or internal) | Equals, not equals, contains, starts with | | String email, enum of string with single value (not key or not internal) | Equals, not equals, contains, starts with, exists, does not exist | | Integer, double, date, datetime, enum of integer with single value (key or internal) | Equals, not equals, less than, greater than, less than or equal, greater than or equal | | Integer, double, date, datetime, enum of integer with single value (not key or not internal) | Equals, not equals, less than, greater than, less or equal, greater than or equal, exists, does not exist | | Boolean (key or internal) | Equals, not equals, exists, does not exist | | Set of string, set of integer, set of double, enum of string, enum of integer with multiple values (key or internal) | Contains | | Set of string, set of integer, set of double, enum of string, enum of integer with multiple values (not key and not internal) | Contains, exists, does not exist | _Key or internal_ in the data type column refers to attributes that are either defined as key or internal. For example, if you’ve defined a custom attribute, the ID is automatically the key. System objects sometimes have attributes that are marked internal. The value lists change dynamically depending on the selected attribute and operator combination. # Agentforce Commerce Client for Messaging The Agentforce Commerce Client is the storefront app that shoppers use to chat with the Shopper Agent. Install the Commerce Client for your B2C Commerce storefront. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The Agentforce Commerce Client replaces the Enhanced Chat component for Shopper Agents starting in July 2026. The Commerce Client renders the chat experience on your storefront and connects to your Shopper Agent through the Enhanced Messaging service. When a shopper chats with the Agent, the Commerce Client starts a messaging session on your agent's messaging channel. Then, the client passes the storefront context, such as the site ID and locale, and streams the agent's responses back to the page. The Commerce Client chat session closes after two hours of shopper inactivity, per [Service Agent Limits](https://help.salesforce.com/s/articleView?id=ai.service_agent_considerations.htm&language=en_US). You can't change the inactivity limit. If a shopper returns after two hours, the chat window shows the welcome message, with no memory of the earlier chat. ## Record Embedded Service Deployment Settings Before you install the Commerce Client, see [Create a B2C Shopper Agent Using the Automated Setup](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_run_auto_setup.htm&release=264.0.0&type=5 "Create a Shopper Agent with the automated tool available in Setup. Enter your configuration details on one page, and setup creates the agent."). Also, record these connection settings for your storefront. - In your Salesforce org, to locate the required settings, go to Setup ![Setup](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/setup_icon_no_border.png). Go to **Embedded Service Deployments**, select the name of your deployment, and in the **Code Snippet** tile, click **Install Code Snippet**. Record these code snippet values. ``` { "channelAddressIdentifier": "4b44007a-a11e-1ff1-22ca-a5bfa333333c", "OrganizationId": "00DSB00001232123", "DeveloperName": "Commerce_ES", "Url": "https://mysite.test1.my.pc-rnd.salesforce-scrt.com" } ``` - `Url`—Endpoint for the Salesforce real-time messaging platform, SCRT2 - `OrganizationId`—The Salesforce org ID - `DeveloperName`—The Embedded Service deployment developer name - In B2C Commerce, locate these settings. - Organization ID. Go to **Administration** | **Site Development** | **Salesforce Commerce API Settings**. - Site ID. Go to **Administration** | **Sites** | **Manage Sites** | **site\_name**. Record the **ID** value. ## Commerce Client Setup for Your Storefront Type The deployment steps for the Commerce Client depend on your storefront type. Begin with [Agentforce Commerce Client Overview](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/agentforce-commerce-client-overview.html), and then follow the instructions for your storefront.
Storefront Type Agentforce Commerce Client Setup Instructions
Storefront Reference Architecture (SFRA)

Install the Agentforce Commerce Client on SFRA.

Before you deploy the Commerce Client, turn on hybrid authentication. In Business Manager, select Merchant Tools | Site Preferences | Hybrid Auth Settings. Under Site Settings, enable Hybrid Auth, Shopper Context, Do-Not-Track Synchronization, and HttpOnly True.

Also, make sure that you can access the Salesforce Commerce repository on GitHub.

PWA Kit Install the Agentforce Commerce Client on PWA Kit.
Storefront Next Install the Agentforce Commerce Client on Storefront Next.
#### See Also - [Set Up Service Escalation for the B2C Shopper Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_shopping_agent_service_escalation.htm&language=en_US) # Agentic Commerce Search for B2C Commerce Agentic Commerce Search is a paid add-on for B2C Commerce that replaces native keyword search with an AI model. The model trains on your catalog, shopper behavior, and simulated queries to rank products by relevance and conversion automatically. The AI model ranks products by relevance and conversion, handling natural language, misspellings, and emerging trends automatically. The model trains on your catalog attributes and descriptions, real shopper interactions, and simulated queries. It replaces manual synonym lists, stop word lists, and edge-case search rules. Agentic Commerce Search maintains the index through two update modes. Delta updates process changed products only and typically run every 15–60 minutes. Full rebuilds reindex the complete catalog once daily. To trigger a full rebuild manually, use the [Search Index](https://help.salesforce.com/s/articleView?id=cc.b2c_search_indexes.htm&type=5&language=en_US) page in Business Manager. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) - **[How Agentic Commerce Search Affects Native B2C Commerce Search Features](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_introduction.htm&release=264.0.0&type=5)** When you turn on Agentic Commerce Search for B2C Commerce, an AI model powers all standard product searches on your storefront. Some native B2C Commerce Search capabilities continue to operate independently and remain unchanged. - **[Get Started with Agentic Commerce Search for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_get_started.htm&release=264.0.0&type=5)** Agentic Commerce Search for B2C Commerce requires confirmed prerequisites and a multi-day provisioning period before it goes live on your storefront. - **[Configure Shopper Sort Options for Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_configure_sort_options.htm&release=264.0.0&type=5)** Customize sort options for shoppers in Agentic Commerce Search for B2C Commerce, including display names, sort order, and the default sort for categories. - **[Configure Search Refinements for Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_configure_filters.htm&release=264.0.0&type=5)** Refinements in Agentic Commerce Search for B2C Commerce give shoppers filters to narrow browse results by attributes, such as brand, size, or price. Use Business Manager to configure these refinements at the catalog and category level. - **[Merchandising Rules in Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_merchandising_rules.htm&release=264.0.0&type=5)** Merchandising rules give you control over specific search and browse results in Agentic Commerce Search for B2C Commerce without replacing AI-driven ranking. Apply them to express business priorities the AI model doesn't address on its own, such as contractual placements, seasonal promotions, or sitewide catalog policies. - **[Agentic Commerce Search Product Capabilities](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_product_capabilities.htm&release=264.0.0&type=5)** Agentic Commerce Search for B2C Commerce includes two built-in AI capabilities that activate automatically after provisioning. Both require no admin configuration or manual activation. - **[Troubleshoot Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_troubleshoot.htm&release=264.0.0&type=5)** Diagnose and resolve common issues with search results and merchandising rules in Agentic Commerce Search for B2C Commerce. Stale results usually indicate an index lag. Rule issues usually trace back to schedule or scope mismatches. # Agentic Commerce Search Product Capabilities Agentic Commerce Search for B2C Commerce includes two built-in AI capabilities that activate automatically after provisioning. Both require no admin configuration or manual activation. Agentic Query Rewrite activates after a shopper submits a query and receives poor results. Suggested Products operates in the search bar as shoppers type a query. Both capabilities improve as the AI model processes more shopper queries and interactions over time. On new sites or low-traffic sites, accuracy builds over several weeks as both capabilities accumulate shopper data. - **[Automatic Query Rewrite for Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_query_rewrite.htm&release=264.0.0&type=5)** Agentic Query Rewrite in Agentic Commerce Search for B2C Commerce automatically reformulates queries that return poor or irrelevant results to show more relevant products. The feature activates after provisioning and requires no admin configuration. - **[Suggested Products in Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_suggested_products.htm&release=264.0.0&type=5)** Agentic Commerce Search for B2C Commerce includes a built-in capability that gives shoppers AI-driven product recommendations directly in the search bar. Suggested products activate automatically after provisioning. # Aggregations Made with Fully Additive and Semi-Additive Measures This topic applies to B2C Commerce and Tableau. Most B2C Commerce measures are fully additive. To create reliable data views in Tableau, use both fully additive and semi-additive measures. Fully additive measures are summable with any dimension in the dataset and are always the same. They can be further aggregated on a subset of dimensions. Semi-additive measures are summable with some dimensions, but the inclusion of some dimensions can result in unexpected sums that can skew your data analysis. In Tableau, only aggregate semi-additive B2C Commerce measures with certain dimensions. ## How Measures Affect Your Metrics This scenario shows how fully additive and semi-additive measures affect your metrics. Using the tools in Tableau, we imported a simplified version of the productOrderItems subject area. The productOrderItems subject area allows export of the orderPlacedDate and productId dimensions and the ordersPlaced, unitsSold, and GMV measures. To have all the data available to build a dashboard, we import all the fields (dimensions and measures) for the subject area. **Semi-Additive Example** Table 1 shows a simplified version of data from the productOrderItems subject area. The ordersPlaced and GMV measures are aggregated by the orderPlacedDate dimension. The sum of all orders placed on 9/10/2021 is 7. An order can contain multiple products. Table 1 Table 1 | orderPlacedDate | ordersPlaced | GMV | | --- | --- | --- | | 9/10/2021 | 7 | $2,943 | Table 2 shows the same simplified data from the productOrderItems subject area. The ordersPlaced and GMV measures are aggregated by the orderPlacedDate and productId dimensions. The sum of all orders placed on 9/10/21 is 14, one count for each productId ordered. However, 14 orders is an error. The ordersPlaced measure is semi-additive and isn’t summable by the productId dimension. The productId dimension caused the sum of ordersPlaced to count all the productId line items in each customer order rather than just the customer orders. The result in table 2 can’t be used as a metric for orders placed. Table 2 Table 2 | orderPlacedDate | productId | ordersPlaced | GMV | | --- | --- | --- | --- | | 9/10/2021 | product\_1 | 2 | $247 | | 9/10/2021 | product\_2 | 1 | $83 | | 9/10/2021 | product\_3 | 3 | $1,087 | | 9/10/2021 | product\_4 | 1 | $298 | | 9/10/2021 | product\_5 | 4 | $975 | | 9/10/2021 | product\_7 | 1 | $148 | | 9/10/2021 | product\_9 | 2 | $105 | **Fully Additive Example** GMV is a fully additive measure. The sum of GMV in both Table 1 and Table 2 is $2,943. Because GMV is a fully additive measure, no matter which dimensions aggregate GMV, the sum is always the same. # AI and Social Integrations Syndicate your B2C Commerce product catalog to AI and social channels so shoppers can discover your products where they search, browse, and shop. Use the AI & Social Integrations section of Business Manager to share your B2C Commerce product catalog with external AI and social commerce channels. Each integration generates a canonical product feed from your catalog, maps your catalog attributes to the channel's feed requirements, and uploads the feed to the channel on a daily schedule. Shoppers who discover your products on a channel click through to your storefront to complete their purchase. To open the integrations, in Business Manager click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **AI & Social Integrations**. ## Available Integrations B2C Commerce supports the following AI and social integrations: - **[Common Product Feed Setup](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_setup.htm&release=264.0.0&type=5)** Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ. - **[Catalog Feed Integration with OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_overview.htm&release=264.0.0&type=5)** Syndicate your B2C Commerce product catalog to OpenAI's ChatGPT for product discovery, enabling shoppers to find and browse your products through conversational AI. - **[Catalog Feed Integration with Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_overview.htm&release=264.0.0&type=5)** Syndicate your B2C Commerce product catalog to Google for product discovery, enabling shoppers to find your products in Google Shopping ads and free listings. # Analytics The B2C Commerce Reports & Dashboards app gathers, analyzes, and synthesizes data from your realm, and configures it into logical datasets called dashboards. Use the Reports & Dashboards portal, to review your site's sales, product, promotion, technical, traffic, and other data. Each dashboard presents analytics that help you identify trends over time. The metrics in the Reports & Dashboards can help you identify trends and modify your storefront strategies. Focus on the correlation between metrics and finite numbers such as revenue and number of orders. The overall goal of using metrics is to identify trends over time. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The Business Manager Analytic Reports are retired and are now called the Historical Reports. Continue to use the reports for historical data for dates before January 1, 2021. - **[Commerce Tableau Connector](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_cloud_tableau_connector.htm&release=264.0.0&type=5)** The Commerce Tableau Connector facilitates access to your B2C Commerce base metrics in Tableau. Use Tableau to generate customized analytic views of your data. - **[Generate an API Client ID for Marketing Cloud Intelligence](https://help.salesforce.com/s/articleView?id=cc.b2c_generate_datorama_api_client_id.htm&release=264.0.0&type=5)** To connect your B2C Commerce data to Marketing Cloud Intelligence, generate an API Client ID for Marketing Cloud Intelligence. - **[Reports & Dashboards for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_reports_and_dashboards.htm&release=264.0.0&type=5)** Use the B2C Commerce Reports & Dashboards tool to identify trends over time and to make smarter business decisions based on your B2C Commerce data. Data is available for dates after January 1, 2017. - **[Gross Merchandise Value](https://help.salesforce.com/s/articleView?id=cc.b2c_gmv.htm&release=264.0.0&type=5)** The Gross Merchandise Value (GMV) report provides GMV metrics of all B2C Commerce transactions for goods and services in a calendar month. # Analytics and Reporting for Promotions in B2C Commerce Salesforce B2C Commerce reports on promotions via analytics reports, the debug logger, and system logs. ## Processing Reports Because many implementations use pipelines to process promotions, the Pipeline Usage and Pipeline Errors reports can provide useful information when testing and troubleshooting promotions. See [Reports & Dashboards Technical dashboard](https://help.salesforce.com/s/articleView?id=cc.b2c_technical_dashboard.htm&release=264.0.0&type=5 "The B2C Commerce Reports & Dashboards Technical Reports dashboard gives you insights about your site’s server-side technical operations data, including pipelines and controllers."). You can also use the Pipeline Debugger. ## Conversion Reports The Promotion Conversion dashboard tracks promotion conversions. See [Reports & Dashboards Promotion Conversion dashboard](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_conversions_dashboard.htm&release=264.0.0&type=5 "The B2C Commerce Reports & Dashboards Promotion Conversion dashboard gives you insights about the performance of the promotions that you display on your storefront. You can use the dashboard to evaluate the effectiveness of your promotion strategy. You also can identify the promotions that convert site traffic to revenue and the promotions that underperform."). ## System Logs The system logs capture information related to API processing, data staging, and error handling. These logs can provide useful information when troubleshooting promotion-related issues. See [Understanding Log Files.](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-log-files-overview.html) # Analytics Reporting Events Salesforce B2C Commerce supports 2 Analytics reporting events. The following table describes the supported Analytics reporting events: | Event Name | Description | | --- | --- | | `ABTest` | AB test started | | `Checkout` | Checkout operation started | ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The `ABTest` event is not used in either reference application―Salesforce Reference Architecture (SFRA) and SGJC. For other events, captured for Reports & Dashboards, the [`isobject` tag](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-tagging-pages-for-data-collection.html#add-isobject-tags) is used. # Analytics Reporting Integration Salesforce B2C Commerce provides robust storefront Analytics that can help make your storefront more successful. To provide these Analytics, B2C Commerce records storefront events–for example, orders entered by consumers. We don’t record events outside of B2C Commerce, such as order cancellations, order modifications, or returns performed off-line. Storefront event data is collected using the [`isobject` tag](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-tagging-pages-for-data-collection.html#add-isobject-tags). Data for your realm is available in the [Reports & Dashboards](https://help.salesforce.com/s/articleView?id=cc.b2c_reports_and_dashboards.htm&release=264.0.0&type=5 "Use the B2C Commerce Reports & Dashboards tool to identify trends over time and to make smarter business decisions based on your B2C Commerce data. Data is available for dates after January 1, 2017."). - **[Analytics Reporting Events](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_events.htm&release=264.0.0&type=5)** Salesforce B2C Commerce supports 2 Analytics reporting events. - **[Analytics Reporting URL Patterns](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_url_patterns.htm&release=264.0.0&type=5)** Each Analytics event in B2C Commerce corresponds to a URL pattern. The pattern begins with a call to the ReportingEvent-Start endpoint, followed by a collection of URL parameters for each event. The Salesforce Reference Architecture (SFRA) and SGJC reference applications use different techniques to construct the URLs. - **[Analytics Reporting Integration in Salesforce Reference Architecture (SFRA)](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_sfra.htm&release=264.0.0&type=5)** To record Analytics events in B2C Commerce SFRA, you construct the corresponding URL patterns by calling helper methods in the `reportingUrls.js` module. Each of these helper methods constructs URLs and returns an array of URLs. This array is then passed as a variable (`pdict.reportingURLs`) to the template `reportingUrls.isml`. - **[Analytics Reporting Integration in SGJC](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_sgjc.htm&release=264.0.0&type=5)** To record Analytics events in SGJC, add certain templates to your application. These templates call B2C Commerce processes that capture the data and report on it via the Business Manager user interface. # Analytics Reporting Integration in Salesforce Reference Architecture (SFRA) To record Analytics events in B2C Commerce SFRA, you construct the corresponding URL patterns by calling helper methods in the `reportingUrls.js` module. Each of these helper methods constructs URLs and returns an array of URLs. This array is then passed as a variable (`pdict.reportingURLs`) to the template `reportingUrls.isml`. ## SFRA Analytics Reporting Helper Script The `app_storefront_base/cartridge/scripts/reportingUrls.js` script provides the following helper method: ``` getCheckoutReportingURLs(UUID, step, stepName) // Checkout event ``` ## SFRA Analytics Reporting Template The following code snippet shows the body of the `app_storefront_base/cartridge/templates/default/reporting/reportingUrls.isml` template: ``` ``` For any SFRA template to record Analytics events, include this template. For example, here is a code snippet taken from the `app_storefront_base/cartridge/templates/default/checkout/confirmation/confirmation.isml` template: ``` ``` # Analytics Reporting Integration in SGJC To record Analytics events in SGJC, add certain templates to your application. These templates call B2C Commerce processes that capture the data and report on it via the Business Manager user interface. SGJC uses session IDs to capture web activities for the Analytics data. This approach doesn't distinguish between visits and visitors (unique visits). However, this approach does circumvent the issue with users blocking cookies or not allowing JavaScript and therefore not being counted. To capture this information, include the appropriate reporting template on a page. This template triggers a request to the server (via a URL include statement) with the required parameters. When you include the reporting template, it triggers a request to the server. A URL include statement triggers the server request and provides the required parameters. There are two ways of reporting events to Reports & Dashboards. Depending on the event, you use either the `ReportingEvent-Start` pipeline or the `isobject` tag. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce ignores reporting (log) entries that originate from pages that are processed using the RedirectURL-Start pipeline (URL mappings). ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important Don't use the `ReportingEvent-Start` pipeline as a pipeline trigger. There are some explicit checks for it in the web adapter, and the requests for that pipeline don't propagate to B2C Commerce. See [A/B Test Participation Triggers](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_test_participation_triggers.htm&release=264.0.0&type=5 "With A/B testing, you can define triggers that a customer accesses to qualify for participation in a particular test. A/B test triggers are included in imported and exported data."). See [Analytics.](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics.htm&release=264.0.0&type=5 "The B2C Commerce Reports & Dashboards app gathers, analyzes, and synthesizes data from your realm, and configures it into logical datasets called dashboards. Use the Reports & Dashboards portal, to review your site's sales, product, promotion, technical, traffic, and other data. Each dashboard presents analytics that help you identify trends over time.") ## Reporting Hooks The following SiteGenesis templates include reporting hooks (SiteGenesis Storefront Core: `cartridge/templates/default/util/reporting`): - `ReportABTesting.isml`: collects Analytics on A/B testing (the A/B testing functionality in the Business Manager Analytics Module, not in the Online Marketing > A/B Testing module). - `ReportCheckout.isml`: collects Analytics on the checkout process. ![Warning](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_warning.png) Warning Don't change the locale in these templates. These templates merely log the information into the Analytics log file. The customer never sees it, and the Analytics module expects _en\_US._ ## ReportABTesting.isml Reference this template via an include statement in a template that renders the result of the test segmentation or alternate page. For example: ``` . ``` Variables are passed in the SiteGensis application to the `ReportingEvent-Start.xml` pipeline that this template expects ## ReportCheckout.isml This template logs a checkout event. It logs the step, depending on the parameters, and expects the step number and name as parameters in the scope of a page. The reporting funnel display uses the step value to show the steps in ascending order. Using the name improves the display. This template can be called using an include statement, for example: ``` ``` Use the parameters in this template to collect checkout information. You can give each step a meaningful name for the checkout funnel name by changing the pdict variable `checkoutname`. Report the steps in the correct sequence with the `checkoutstep` variable. For example, if you have three steps in your checkout, they must be reported with the values one, two, and three. If you report with values one, two, and five, the funnel report inserts steps three and four with the same values as in step five. In SiteGenesis, the `modues.isml` template references the `ReportCheckout.isml` template directly. It doesn't use an include statement. ## Related Links [Analytics](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics.htm&release=264.0.0&type=5 "The B2C Commerce Reports & Dashboards app gathers, analyzes, and synthesizes data from your realm, and configures it into logical datasets called dashboards. Use the Reports & Dashboards portal, to review your site's sales, product, promotion, technical, traffic, and other data. Each dashboard presents analytics that help you identify trends over time.") [Analytics Reporting Integration](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration.htm&release=264.0.0&type=5 "Salesforce B2C Commerce provides robust storefront Analytics that can help make your storefront more successful.") [Analytics Reporting Integration Events](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_events.htm&release=264.0.0&type=5 "Salesforce B2C Commerce supports 2 Analytics reporting events.") [Analytics Reporting Integration URL Patterns](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_url_patterns.htm&release=264.0.0&type=5 "Each Analytics event in B2C Commerce corresponds to a URL pattern. The pattern begins with a call to the ReportingEvent-Start endpoint, followed by a collection of URL parameters for each event. The Salesforce Reference Architecture (SFRA) and SGJC reference applications use different techniques to construct the URLs.") [Analytics Reporting Integration in Salesforce Reference Architecture (SFRA)](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_reporting_integration_sfra.htm&release=264.0.0&type=5 "To record Analytics events in B2C Commerce SFRA, you construct the corresponding URL patterns by calling helper methods in the reportingUrls.js module. Each of these helper methods constructs URLs and returns an array of URLs. This array is then passed as a variable (pdict.reportingURLs) to the template reportingUrls.isml.") # Analytics Reporting URL Patterns Each Analytics event in B2C Commerce corresponds to a URL pattern. The pattern begins with a call to the ReportingEvent-Start endpoint, followed by a collection of URL parameters for each event. The Salesforce Reference Architecture (SFRA) and SGJC reference applications use different techniques to construct the URLs. The following sections describe the URL patterns for each Analytics event and provide information about where you view implementation details. ## ABTest URL Pattern Neither SFRA nor SGJC use the `ABTest` event. However, SGJC does provide a template (`ReportABTesting.isml`) that you can use to record this event. | URL Parameter | Parameter Value | | --- | --- | | `ID` | "ABTest" string | | `Name` | Test name, for example, "FastCheckout" | | `Segment` | Basket created or opened | For SGJC, the following code snippet from the `ReportingABTesting.isml` template shows how this URL pattern is constructed: ``` ``` ## Top 10 Checkout Steps Report SFRA and SGJC use the `Checkout` event. The Top 10 Checkout Steps Report requires that each step in the checkout process invokes the `ReportingEvent`\-Start Controller. Each controller invocation has to contain the following information for each step in the process | URL Parameter | Parameter Value | | --- | --- | | `ID` | Set to string Checkout | | `BasketID` | Set to the universally unique identifier (UUID) or the basket being checkout out | | `Step` | Checkout step number | | `Name` | Checkout step name | For SFRA, see the helper method `getCheckoutReportingURLs()` in `reportingUrls.js`. For SGJC, the following snippet shows how this URL pattern is constructed in the `ReportCheckout.isml` template: ``` Log event indicating checkout Logs the step depending on the parameters. step and name as parameter in page scope expected Make sure, that step can be ordered alphabetically because the reporting funnel display will use the step value to order the steps ascending. The name improves the display. DO NOT CHANGE THE LOCALE HERE. It just serves the purpose of logging the information to the analytics log file. The customer will never see it and the analytics module expects en_US. Parameters: checkoutstep : the checkout step number checkoutname : the name of the checkout var locale = 'en_US'; ``` ## Journey Funnel Report The Shopper Journey Funnel Report also requires that `ReportingEvent`\-Start Controller also be invoked when a shopper interacts with a basket or cart. Each controller invocation has to contain the following information | URL Parameter | Parameter Value | | --- | --- | | ID | Set to string `BasketOpen` | | `Basket ID` | Set to the id of the basket being opened | | `Items` | Set to the number of items in the basket | | `MerchandizeTotal` (optional) | The merchandise total | | `AdjMerchandizeTotal` (optional) | The adjusted merchandise total | | `AdjMerchandizeTotalPromo` (optional) | The merchandise total adjusted for promotions | | `ShippingTotal` (optional) | The Shipping total | | `AdjShippingTotal` (optional) | The adjusted shipping total | ``` Log event indicating creation or use of cart DO NOT CHANGE THE LOCALE HERE. It just serves the purpose of logging the information to the analytics log file. The customer will never see it and the analytics module expects en_US. var locale = 'en_US'; Some common statistic for this cart ``` # Analyze HTTP and Security Traffic for an eCDN Zone To get insights into HTTP traffic and security data, use the eCDN Analytics tab in B2C Commerce Business Manager. The Analytics tab shows the Traffic Analysis timeline chart, top traffic statistics across multiple dimensions, and per-rule activity. Switch between HTTP and Security views to see request traffic or firewall events for the same zone and time range. Looking for the Crypto, Security Rules, Speed, Customization, Logs, or Under Attack Mode controls on the same screen? See the Configure an eCDN Zone in Business Manager guide. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note HTTP and Security analytics are available on SCAPI zones from the Production instance. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the zone you want to configure, and select **Configure Zone** from the actions menu. ![Tip](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_tip.png) Tip **On-Demand Sandbox (ODS) zones:** Select the shared storefront zone or shared BM zone for your realm. Because ODS uses a shared zone model, analytics reflect aggregate traffic across all ODS instances in the realm rather than per-instance traffic. To narrow results to a specific instance, apply a site context filter — each error type then appears per site. 3. Click the **Analytics** tab. The Analytics tab opens in HTTP mode by default. Use the toggle near the top of the tab to switch between two views of the same zone and time range. - **HTTP** — Request traffic to your zone, including request volume, top source IPs, user agents, paths, hostnames, countries, and ASNs. Use this view for performance, traffic-shape, and capacity questions. - **Security** — Firewall events that fired on your zone, including managed-rule hits, custom firewall rule hits, rate-limit rule hits, and the sampled security log entries that triggered them. Use this view for security investigations. ![Analytics tab in Security mode showing the HTTP / Security toggle, time-range dropdown, Add Filter, and Traffic Analysis timeline chart](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_analytics.png) 4. (Optional) Set the time range by clicking the time-range dropdown in the top-right of the Analytics tab and choose any value between the past 30 minutes and the past 30 days. The view defaults to the past 24 hours. The selected range applies to the Traffic Analysis chart, the Top Statistics panels, and the Sampled Logs table at the bottom of the tab. 5. (Optional) Click **Add Filter** at the top of the Analytics tab to narrow the view. Filters apply across the chart, top statistics, and sampled logs together. Pick a filter dimension (for example, country, ASN, action taken, or user agent) and a value, then click **Apply**. To clear all active filters and return to the default view, click **Clear All Filters**. The Traffic Analysis chart shows your zone's request volume over the selected time range. The X axis is time (local timezone of your viewing environment); the Y axis is request count. Hover over any point to see the exact count for that interval. **Read the Top Statistics** Below the Traffic Analysis chart, the Top Statistics section presents the top values across multiple dimensions. The values shown depend on whether you're in HTTP or Security mode. **HTTP mode:** - **Source IP Addresses** — The IPs sending the most requests to your zone - **User Agents** — The most common User-Agent strings - **Hosts** — The hostnames receiving the most traffic - **Paths** — The URL paths receiving the most traffic - **Countries** — The countries the traffic originates from - **Source ASNs** — The Autonomous Systems sending the most traffic **Security mode (additional panels):** - **Managed Rules** — Cloudflare-managed WAF rules that fired, with hit counts (for example, DotNetNuke - File Inclusion - CVE:CVE-2018-9126, Oracle WebLogic - Deserialization - CVE:CVE-2020-14882, Command Injection, XSS HTML Injection, SQLi) - **Rate Limit Rules** — Your Rate Limiting rules that fired, with hit counts - **Firewall Rules** — Your Custom Firewall rules that fired, with hit counts When you see a particular IP, country, path, or rule dominating a panel, click the value to filter the entire Analytics view to that dimension. This is the fastest way to pivot from "what's happening?" to investigating a specific source or rule match. **Sampled Logs (Security Mode)** In Security mode, scroll to the Sampled Logs panel near the bottom of the Analytics tab. This panel shows up to 15 individual firewall events from the selected time range and filters — each entry corresponds to a single request that was logged or blocked. Each row shows: Date, Action taken (log / block), Country, IP address, Service (firewallCustom / firewallManaged). Service indicates which detection layer matched: `firewallCustom` (your Custom Firewall rule fired) or `firewallManaged` (a Cloudflare-managed rule fired). ![Sampled Logs table in the Analytics tab showing firewall events with Date, Action taken, Country, IP address, and Service columns](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_analytics_sampled_logs.png) Click the chevron at the start of a row to expand it and see the full per-request detail, grouped into three sections: - **Matched service** — Service, Action taken, Ruleset, Rule - **Request analyses** — WAF Attack Score, WAF SQLi Attack Score, WAF XSS Attack Score, WAF RCE Attack Score (each 0–100; higher = more suspicious) - **Request details** — Ray ID, Country, Referer, Path, IP address, User agent, Method, Query string, ASN, HTTP Version, Host ![Expanded Sampled Logs row in the Analytics tab displaying Matched service, Request analyses with WAF scores, and detailed request information](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_analytics_sampled_logs_expanded.png) For a continuous stream of full log events outside this sampled view, see [Configure Logpush and Logpull for an eCDN Zone](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_zone_logs.htm&release=264.0.0&type=5 "Stream B2C Commerce eCDN request, security, and Page Shield logs to your own storage or observability platform (Amazon S3, Google Cloud Storage, Azure Blob Storage, Datadog, or Splunk), or download recent logs on demand, all from the Logs tab on the Configure Zone screen in Business Manager."). **I Don't See This Tab** If you don't see the Analytics tab or the HTTP / Security toggle described in this guide, ask your admin or your Salesforce representative to enable the new Configure Zone screen for your instance. The Analytics timeline chart and HTTP/Security toggle are part of the new LWC Configure Zone screen, not the legacy slider-based interface. #### See Also - [SLAS Best Practices](https://developer.salesforce.com/docs/commerce/commerce-api/guide/slas-best-practices.html) # Anomaly Detection in Log Center Identify performance regressions, operational issues, and suspicious activity from unusual patterns in B2C Commerce Log Center. Log Center continuously analyzes incoming log data and compares the data with learned baseline behavior. When data deviates from the baseline and meets your thresholds, Log Center flags the anomaly. Each user can configure up to ten detectors. Use these guidelines to reduce false positives and improve detector accuracy. - Start with critical applications, such as authentication failures or error logs. - Start with a higher threshold, then adjust severity and confidence over time. - Review detector results regularly, and refine filters to show more relevant results. - Create separate detectors for different environments to avoid mixing baselines. ## Reading the Anomaly Detector Results To review a detector's findings, open its Anomaly Detector Results window. The window shows detected anomalies over time so that you can compare actual and predicted behavior and open the related logs for investigation. Summary cards show the Total Number of Anomalies, the Anomaly Rate (%), and the Last Anomaly Occurrence for the selected period. Use the Time Range selector to set the period, from the last 15 minutes up to the last 14 days. You can also enter custom start and end times in UTC. The chart plots two series over the selected period: the Actual log data trend and the Model predicted trend. Shaded plot bands mark the periods when the Log Center flagged an anomaly. ![Anomaly Detection Results in Log Center](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_log_center_anomaly_detection.png) This table lists each flagged anomaly.
Column Description
Time

Time when the anomaly occurred, shown in UTC.

Severity

Severity score and category predicted by the model, from 0.0 to 1.0. Higher values indicate more severe anomalies.

Confidence

Estimated probability that the flagged anomaly is genuine, from 0.0 to 1.0. Higher values indicate greater confidence.

Actual

Observed value for the metric or trend at the time of the anomaly.

Expected

Predicted value for the metric or trend at the time of the anomaly.

Deviation

Difference between the actual and expected values.

View Logs

Opens a log search filtered to about 30 minutes before and after the anomaly, so that you can investigate the underlying log entries.

Severity ranges: | Severity | Score range | Chart and table color | | --- | --- | --- | | Low | Less than 0.3 | Green | | Medium | 0.3 to less than 0.6 | Blue | | High | 0.6 to less than 0.8 | Orange | | Critical | 0.8 and higher | Red | If you need help with validating a detector strategy, tuning thresholds, or troubleshooting results, contact your Salesforce admin or open a support case. - **[Set Up Anomaly Detectors in Log Center](https://help.salesforce.com/s/articleView?id=cc.b2c_set_up_anomaly_detectors.htm&release=264.0.0&type=5)** Identify unusual log patterns in B2C Commerce Log Center and optionally send alerts when anomalies meet your alert threshold. Log Center continuously analyzes incoming log data and compares the data with learned baseline behavior. When data deviates from the baseline and meets your thresholds, Log Center flags the anomaly. - **[Manage Anomaly Detectors in Log Center](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_anomaly_detectors.htm&release=264.0.0&type=5)** View, edit, pause, resume, and delete anomaly detectors in B2C Commerce Log Center, and create a detector from a log search you already ran. What you can change depends on your Log Center role and the realms you can access. #### See Also - [Set Up Anomaly Detectors in Log Center](https://help.salesforce.com/s/articleView?id=cc.b2c_set_up_anomaly_detectors.htm&release=264.0.0&type=5 "Identify unusual log patterns in B2C Commerce Log Center and optionally send alerts when anomalies meet your alert threshold. Log Center continuously analyzes incoming log data and compares the data with learned baseline behavior. When data deviates from the baseline and meets your thresholds, Log Center flags the anomaly.") - [Manage Anomaly Detectors in Log Center](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_anomaly_detectors.htm&release=264.0.0&type=5 "View, edit, pause, resume, and delete anomaly detectors in B2C Commerce Log Center, and create a detector from a log search you already ran. What you can change depends on your Log Center role and the realms you can access.") # Apply Bulk Actions to Content Blocks Select multiple B2C Commerce content blocks and apply targeting or scheduling rules to all of them at once. Bulk actions reduce the time required to manage seasonal campaigns and sitewide content updates. To apply bulk actions, your role must include the Manage\_All\_Libraries functional permission in the organization context, or Manage\_Site\_Library in the context of the site. When you apply a targeting rule in bulk, the system applies the rule to each selected content block individually. If a content block already has a targeting rule, the bulk action replaces it. The operation processes each content block in a separate transaction, so some content blocks can succeed even if others fail. 1. click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Content** | **Content Blocks**. 2. In the content block list, select the checkboxes next to the content blocks that you want to update. Select up to 10 content blocks at a time for bulk actions. 3. From the bulk actions menu, select the action you want to perform: - **Bulk Schedule** — Set a common start and end date for all selected content blocks. - **Bulk Assign Campaign** — Assign all selected content blocks to the same campaign or promotion. - **Bulk Assign Customer Group** — Apply the same customer group targeting to all selected content blocks. 4. Configure the targeting details. 5. Click **Apply**. A summary shows how many content blocks the system updated successfully and any that failed. Review the details for any failures and retry those content blocks individually if needed. # Apply Defense in Depth Defense in depth means using multiple layers of security within your B2C Commerce environment instead of just one. If an attack causes one security mechanism to fail, other mechanisms can still provide the necessary security to protect the system. Think of creating a security onion and not a security egg. When dropped, an egg smashes everywhere, while an onion just gets a little bruised because it has multiple layers. Here are some best practices when applying defense in depth. - Implement 2FA so a stolen password can’t compromise a user account. Using Account Manager to configure authentication enables customers to enforce 2FA on all their users, thereby implementing defense in depth. - Add authentication mechanisms to internal systems in case an attacker manages to get inside the firewall. # Archive a Promotion in B2C Commerce Archive an expired promotion to avoid cluttering your promotion list, and keep only your active promotions front and center. When you archive a promotion, locate it using a filter. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Online Marketing** | **Promotions**. 2. Select a promotion to archive. 3. Click **More** on the left of the page. 4. Click **Archive**. 5. To view archived promotions: 1. Open the search filter and select **Archived**. 2. Select **Yes**. 6. To unarchive promotions: 1. Search for archived promotions. 2. Click the **More** button on the left of the page. 3. Click **Unarchive**. # Archiving in B2C Commerce You can't automatically roll back instances impacted by data import. Therefore, it’s a good practice to create an archive of your existing site that you can roll back to if the import fails. Salesforce recommends that you keep import feeds for a specified period and regularly export and archive data that only exists in the Business Manager. Exported data is also useful if users make a mistake in Business Manager and change or eliminate data inappropriately. B2C Commerce scripts can archive import feeds and remove out-of-date files. Alternatively, archive feeds on your backend system. # Assign a Catalog to a Site You assign a catalog to a B2C Commerce site on the Site Assignments tab of the catalog definition editor. When you assign a catalog to a site, the catalog that was previously assigned to that site is automatically unassigned. Assign only one catalog at a time to a site. When you unassign a catalog from a site, a replacement catalog isn't automatically assigned. Manually assign a new catalog to the site. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Products and Catalogs** | **Catalogs** 2. Click **Edit** for the catalog you want to manage. 3. Click the**Site Assignments** tab. 4. Select the sites you want to assign this catalog to and click **Apply**. Assign the catalog to as many sites as you want. When you assign a catalog to a site, the category structure defined within the catalog becomes the navigation structure of the assigned storefront site. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note To include the products in the catalog in a search, rebuild the product search index. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Search** | **Search Indexes**. To rebuild, select the index and click **Rebuild**. # Assign a Price Book or Promotion to a Specific Store in B2C Commerce With Store-Specific Pricing and Promotions, select a price book for each of your stores, up to 2,000. The assignments framework lets merchants and developers set qualifiers, such as a store that activates certain experiences, such as a promotion. You can also assign a promotion to a specific store. This feature is only supported via XML import. To use a site assignment, a developer must first edit the assignments XML to include a store assignment. Currently only stores can be listed as assignments. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Online Marketing** | **Import & Export**. 2. Click **Import** in the Assignments section. 3. Select the file with your assignments and click **Next**. 4. Consider the following sample code for assignments. ```html Price books and promotions assigned to Store A 万能青年旅店 true 2020-11-24T00:00:00.000Z 2025-11-24T00:00:00.000Z SiteGenesis SiteGenesisGlobal Store A list_pricebook sale_pricebook 20%Off_promotion ​ ``` See the status of your file. Hit refresh until the import concludes. The import can take a few minutes. To display store-specific experiences on the storefront, a developer must update their Salesforce Reference Architecture (SFRA) cartridge or write an Open Commerce API (OCAPI) hook to set the store in session. To set the store Id in session for SFRA, use the `setStoreIDToSession()` method. For example: `StoreMgr.setStoreIDToSession('0335')`. In Shopper Commerce API (SCAPI), the qualifier is case-sensitive for [createShopperContext](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-context?meta=createShopperContext) and [updateShopperContext](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-context?meta=updateShopperContext) depending on however you’ve set the qualifier type in the XML. For example: ``` { "assignmentQualifiers": { "STORE": "0335" } } ``` #### See Also - [Configure Promotion Preferences for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_promotion_preferences.htm&release=264.0.0&type=5 "Configure many of the promotion settings as site preferences, giving you much flexibility in how your promotions are handled. These settings include Buy X/Get Y promotion behavior, discount precision, and how the tax basis is calculated for line items with discounts.") - [Promotion Schedules in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_schedules.htm&release=264.0.0&type=5 "Schedule campaigns, A/B tests, promotions, and content slots in B2C Commerce. A scheduled experience (promotion or content slot) has to coincide with a container (campaign or A/B test), or it can't run.") - [Tiered Discounts in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_tiered_discounts.htm&release=264.0.0&type=5 "Tier discounts so that the discount amount increases as the shopper buys more products or spends more money. Configure tiered discounts in a promotion with multiple threshold levels for conditional parameters, where the discount varies by threshold and can't be combined.") - [B2C Commerce Promotion Compatibility](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_compatibility.htm&release=264.0.0&type=5 "Use compatibility rules to control the application of promotions. Compatibility rules prevent a shopper from qualifying for every possible promotion. Use the rank and exclusivity system attributes to control your promotion compatibility.") - [Maximum Application for B2C Commerce Promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_maximum_application_for_promotions.htm&release=264.0.0&type=5 "Limit how many times a promotion can apply per order using the maximum application limit.") - [Specify Who Qualifies for an Experience in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_add_a_qualifier_to_an_experience.htm&release=264.0.0&type=5 "Specify who qualifies for an experience and how the promotion is redeemed using qualifiers. A qualifier can be a customer group, a coupon, or a source code. Add a qualifier to a promotion in two ways: assign the qualifier to a campaign, which affects all included promotions, or assign the qualifier to a specific promotion.") - [Qualifying and Discounted Products in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_qualifying_and_discounted_products.htm&release=264.0.0&type=5 "Define promotions that specify qualifying products, the products shoppers buy and how much to be eligible for a discount. Also specify which products are discounted.") - [Promotion Restrictions to Identical Products](https://help.salesforce.com/s/articleView?id=cc.b2c_restricting_promotions_to_identical_products.htm&release=264.0.0&type=5 "The restrictions setting limits product selection to identical products. When you set restrictions for a B2C Commerce product promotion rule, you configure a single product promotion that can apply to multiple products.") - [Qualify or Disqualify Promotions Based on Active Price Book](https://help.salesforce.com/s/articleView?id=cc.b2c_qualify_disqualify_promotions_based_on_active_price_book.htm&release=264.0.0&type=5 "Include or exclude B2C Commerce products from promotions using the price book condition.") # Assign a Price Book to a Site in B2C Commerce For a Price Book to be effective in the storefront, assign it to a site. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Products and Catalogs** | **Price Books**. If you see unavailable fields, you have read-only permission. Search for price book data and view details. You can't modify, delete, or create price books. If you have mixed permission to access one module (via different roles), the higher-level access is granted. See your administrator if you require write access. For read-only access, the role stills need the functional permissions, either _Manage\_PriceBooks_ (for all price books globally) or _Manage\_Site\_PriceBooks_. 2. On the Price book page, click a price book link to select a price. 3. On the Site Assignments tab for the price book, select the site to which you want to assign the price book. 4. Click **Apply**. Assign a price book to more than one site at a time. And assign more than one price book to a site as long as the currencies are the same. #### See Also - [Assign a Price Book or Promotion to a Specific Store in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_assigning_a_pricebook_or_promotion_specific.htm&language=en_US) # Assign a Site to a Library in B2C Commerce When you’ve created a library, assign it to a site. See Content Libraries. You can create and delete libraries or change the assignment of libraries only on staging and sandbox instances. This functionality isn’t available on development or production instances. If you change libraries on staging instances, you can transfer the changes to development or production instances using data replication. 1. To view your organization's libraries, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Content Libraries**. 2. On the Libraries page, click **New** or a library **Edit** link to create or select a library. 3. On the Library page General tab: 1. Select the language. 2. Enter the library ID. The ID is non-modifiable once created. 3. Enter or change the library name. 4. Enter or change the description 5. Click **Apply**. When creating a new shared library, the Library page General tab reappears showing the Site Assignments section. 4. To change the site assignment, click the **Add** button in the Site Assignment section. This button only appears if it's possible to assign the library to one or more other sites. See Content Libraries, the _Shared libraries_ section. 5. On the Reassign Sites window, select the sites you want to assign to the library and click **OK**. The assigned sites appear in the Site Assignments section. 6. To return to the Libraries page, click **<< Back to List**. The new library appears in the grid. # Assign an Inventory List to a Site Assign an inventory list to one or more B2C Commerce sites. A site can be assigned to only one inventory list. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **Products and Catalogs** | **Inventory**. If you see unavailable fields, you have read-only permission. You can search for inventory lists and view their details. You can't modify, delete, or create inventory lists. If you have mixed permission to access one module (via different roles), the higher-level access is granted. See your administrator if you require write access. For read-only access, the role still needs the functional permissions, either `Manage_Inventory` (for all inventory lists globally) or `Manage_Site_Inventory` for selected sites. 2. Click **Edit** for an inventory list. 3. Select the **Site Assignments** tab. 4. Select the site to which you want to assign the inventory list. If the site has another list already assigned, that list is unassigned. 5. Click **Apply**. Assign an inventory list to more than one site at a time. The initial site import can import the assignments of inventory lists to certain sites. Each site can reference the ID of an inventory list. If so, to activate the assignment, create (or import) an inventory list with the same ID referenced by the individual assignment of the imported sites. If an inventory list is removed, the site assignment remains and activates again once you create an inventory list with the same ID. # Assign Channel Numbers to Communication Subscriptions for B2C Commerce Shopper Notifications In B2C Commerce with Agentforce Marketing, a Communication Subscription links a shopper's consent record to a specific SMS or WhatsApp notification channel. Assign channel numbers before configuring the notification flow. This topic applies to SMS and WhatsApp notifications. For email notifications, see [Customize and Activate a Notification Channel Template and Flow](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_customize_flow_and_template.htm&release=264.0.0&type=5 "Update a notification channel template with your B2C Commerce site logo and colors to provide a branded experience. After you install the flows and templates, activate the applicable flow in your connected Salesforce org to start sending notifications."). To use SMS or WhatsApp notifications, [create at least one Shopper Consent](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_create_consents.htm&release=264.0.0&type=5 "Directly connect with your B2C Commerce shoppers by getting permission to send marketing communications according to the terms that you outline in the consent request.") first. When you create a Shopper Consent, B2C Commerce creates a corresponding communication subscription record in Data Cloud. Assign channel numbers to the communication subscription records. If you're setting up WhatsApp notifications, also [configure your WhatsApp channel](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_configure_whatsapp_channel.htm&release=264.0.0&type=5 "Connect WhatsApp Business Manager to your B2C Commerce with Agentforce Marketing org and import a message template to send shopper notifications."). If you're setting up SMS notifications, also [set up your SMS channel](https://help.salesforce.com/s/articleView?id=mktg.um_channel_sms.htm&type=5&language=en_US). 1. In your Salesforce org, from the App Launcher, find and select **Data Cloud** | **Consent** | **Subscriptions**. 2. Click **Edit** for the subscription you want to update. 3. In the **Edit Communication Subscription** window, add the channel number. 1. If the subscription is for WhatsApp, select the WhatsApp number from the **WhatsApp Channels** dropdown list. 2. If the subscription is for SMS, select the number from the **SMS Sender Code** dropdown list. 4. Save your changes. # Assign Coupons to B2C Commerce Campaigns To track and organize your promotions, assign coupons to one or more B2C Commerce campaigns. You can report on and organize coupons, and tie the coupon’s effective window to a campaign and promotion schedule. Instead of repeating the setup on each promotion, apply a coupon to all promotions under a campaign. You can still configure exceptions per promotion. 1. For the relevant site, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Online Marketing** | **Coupons**. 2. On the Coupons page, select a coupon ID. The Edit Coupon page opens. 3. Go to the **Assignments** tab, and click **Assign**. 4. From the list of campaigns, select one or more and click **Assign**. Search for specific campaigns if you don't see them in the list. 5. Save your assignments. 6. To unassign a coupon from a campaign, select one or more campaigns and click **Unassign**. 7. Save your changes. # Assign Granular Replication Permissions Replicate specific B2C Commerce products from staging to production. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Organization** | **Roles & Permissions**. 2. Create a Merchandiser role or edit an existing role. 1. To create a role, enter an ID and description. 2. Click **Apply**. 3. Select the **Functional Permissions** tab. 4. For context, select **Organization**. 5. Enable access to the `Granular_Replication_Publish_Objects` permission. 6. Select other merchandiser permissions as desired. 7. Click **Update**. ![Select Granular\_Replication\_Publish\_Objects.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_granular_repl_9.png) #### See Also - [Use Granular Replication (Video)](https://salesforce.vidyard.com/watch/SwPFKZcE94jzWyxUS6G79w) # Assign Images to Products in B2C Commerce In B2C Commerce, attach an image to a product so the storefront can show it. Assign images on the base product, and a variation product uses those images. Before you start, define the variation attributes for the base product on the product Variations tab. This task does not create those attributes. See [Variation Attribute Values](https://help.salesforce.com/s/articleView?id=cc.b2c_variation_attribute_values.htm&release=264.0.0&type=5 "Define B2C Commerce variation products for a base product by creating a variation attribute."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You can also access images programmatically. See [URLUtils](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.web.URLUtils.html) and [MediaFile](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.content.MediaFile.html). 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Products and Catalogs** | **Products**. 2. On the Products page, search for and open a product. 3. On the Product page General tab, click **Lock**. Lock a product if you have full permission or restricted permission (permission restricted to the storefront catalog of the currently selected site). This site permission is independent from the selected locale. You can't lock a product when you have no permission at all. See [Configure Product and Content Locking for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_product_and_content_locking.htm&release=264.0.0&type=5 "Define the time (in minutes) for when products or content are locked while editing. During this time, other users can't edit the product record or content asset. The lock (applied before product editing) is released after this time."). 4. Scroll down the page and click the **Edit** button in the Images section. The Images window opens. The Images window has three panes: Image Manager, Images, and File Browser. The Images window shows how images are structured for the product. A folder shows up to 1000 items. If it contains more, Business Manager says to use the filters above. The control is labeled **Filter**. The Image Manager pane shows information based on each product type. - Standard product. Shows two levels: view types and images. - Base or variation product. Shows four basic levels: variation values, variation attributes, view types, and images, with multiple levels of variation attributes and values. 5. For a standard product, skip the steps that select a product attribute or open the Variation Attributes window, and go directly to the step that assigns images. In the Image Manager pane, select a product attribute. The images assigned to the selected product type attribute appear in the Images pane. 6. In the Image Manager pane, click **Edit** to open the Variation Attributes window. 7. On the Variation Attributes window, select one or more available variation attributes and click **OK**. This selection chooses which variation attributes group images, and the attributes you select here override any catalog default for this product. See [Image View Types and Variants in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_understanding_view_types.htm&release=264.0.0&type=5 "Use B2C Commerce view types to group product images by usage context, such as large, medium, small, and swatch, and assign different images to each product variation."). The Image Manager pane reappears, showing the new variation attributes. 8. Assign the images. 1. In the Image Manager pane: - For a standard product, select the product. - For a base product, select the base product or a variation value, such as red. That is where the image is assigned. The images assigned to the selected product attribute appear in the Images pane. 2. On the File Browser pane, locate an image. The File Browser pane appears only when the catalog image location is internal. The root directory shown in the file browser points to the catalog's static content folder as specified by catalog image settings base path. Click the open icon **(>>)** to open the File Browser pane. 3. For an internal image: 1. If the image file isn't listed on the File Browser pane, upload it: Right-click the folder you want to upload to, click **Add...**, and then select the file. The name of the image appears with a box icon. Click **Upload**. The file uploads to the folder you right-clicked. Make sure the uploaded file name has a green check mark, which means the upload succeeded. 2. Drag the file from the File Browser onto a view type in the Images pane. See [Image View Types and Variants in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_understanding_view_types.htm&release=264.0.0&type=5 "Use B2C Commerce view types to group product images by usage context, such as large, medium, small, and swatch, and assign different images to each product variation."). Large, medium, small, and swatch are the default view types. A catalog can also include others, such as Hi-res or Other. 4. For an external image, do not upload a file. Click the image placeholder for a view type. In the Path field, enter only the relative file path after the host, such as `bar/your_image.gif`. 5. To replace an image, click the delete icon on the existing image, and then assign another image. Deleting the icon removes the image from the view only. It doesn't delete the file from the File Browser. The change takes effect when you click **Save**. 9. In the Images pane, specify the language to use with the Alt and Title fields. 10. In the Images pane, specify these fields. **Path**. This field is mandatory and can't be null. B2C Commerce doesn't check if the path is valid. For an external image, the path is the relative path on the external host. For an internal image, the path is the file in the catalog image directory. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Configure a product image URL with a path up to 1800 characters. Together with the host path configured with a catalog's image settings, you can specify image URLs with up to 2056 characters. If you try to configure a longer path, Business Manager shows a warning and doesn't let you save the image settings of that product. **Alt**. Enter the localizable alternative text. Use the **Select Language** field to switch between the localized values. **Title**. Enter the localizable title. Use the **Select Language** field to switch between the localized values. 11. Click **Save**. An internal image file is stored in the catalog static content directory, which is the catalog's own static content folder. Copy that directory to the storefront with the replication task: **Replication Tasks > Sites > Catalogs > (Your Catalog)**. See [Image Storage Locations in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_demandware_image_storage.htm&release=264.0.0&type=5 "B2C Commerce stores images in three static content locations, depending on image type."). An external image assignment stores a URL. It is not a file in that directory, so there is no image file to replicate. See Also - [Image View Types and Variants in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_understanding_view_types.htm&release=264.0.0&type=5 "Use B2C Commerce view types to group product images by usage context, such as large, medium, small, and swatch, and assign different images to each product variation.") - [Configure Catalog Image Settings in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_variation_attributes_for_image_assignment.htm&release=264.0.0&type=5 "In B2C Commerce, configure catalog image settings only when the settings created with the catalog differ from what you want, or to add a catalog-level variation attribute. Default alt text and title fill in only when an image has none of its own, so you leave them unchanged before you assign images.") - [Configure Product and Content Locking for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_product_and_content_locking.htm&release=264.0.0&type=5 "Define the time (in minutes) for when products or content are locked while editing. During this time, other users can't edit the product record or content asset. The lock (applied before product editing) is released after this time.") - [Image Storage Locations in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_demandware_image_storage.htm&release=264.0.0&type=5 "B2C Commerce stores images in three static content locations, depending on image type.") # Assign Merchant Agent Roles and Permissions In Business Manager, configure user roles and permissions that can access the B2C Merchant Agent features. The feature requires a single permission, **BM\_Agentforce\_Org**, which is assignable to any role. Create a specific role, such as Merchant Agent User, and assign it only to users who rely on Agentforce capabilities. Limiting who has the user role follows the least-privilege security model, and makes auditing Agentforce access easier. 1. In Business Manager, go to **Administration** | **Organization** | **Roles & Permissions**. 2. Create a role or select an existing role to grant Merchant Agent access. 3. (Optional) Provide a descriptive name for the role, such as Merchant Agent User, and click **Apply**. 4. Select the **Functional Permissions** tab, and in the Select Context window, select **Organization**, then click **Apply**. 5. Find and select **BM\_Agentforce\_Org**. 6. Click **Update**. 7. Assign the new role to users. 1. Go to **Administration** | **Organization** | **Users**. 2. Select the user to grant access. 3. Assign the role with the **BM\_Agentforce\_Org** permission. 4. Save your changes. # Assign Multiple Products to Multiple Catalogs and Multiple Categories Assign products to categories in multiple B2C Commerce catalogs, in a single step. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchandiser Tools** | **site** | **Products and Catalogs** | **Products**. 2. Search for and select the products you want to assign. Assigning a base product or variation group to a category assigns all variation products to that category. You can also assign a single variation product to a category without assigning the base product. 3. Click **Assign**. 4. In the dropdown list, select the catalog you want to add the products to. 5. In the category tree, select the categories you want to assign the products to. Review the listed catalog and category product assignments before confirming your changes. 6. When you’re finished assigning products, click **Next**. 7. Review and confirm your catalog, and category selections. Click **Previous** to make changes. Click **Cancel** to stop the process. 8. For each catalog, assign a primary category to the newly assigned products. Assigning a primary category replaces any previously set primary category for the products. To leave the primary category as is, select **None**. 9. Assign a classification category to the assigned products. Only one classification category can be assigned. To leave the classification category as is, select **None**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce assigns the first classification or category in the dropdown to products without a previously assigned classification category or primary category. 10. Click **Finish: Go to Batch Process** or **Finish: Go to Products**. Both selections start the batch process, and finalize the new assignments. # Assign Payment Zones to a Merchant Account for B2C Commerce Assign one or more payment zones to your merchant accounts. The default payment zone, set to all currencies and countries, is assigned to the first merchant account you create. Assign more payment zones to your merchant accounts to further customize which payment methods can be used for which zones. 1. To assign a payment zone to a merchant account from the Payment Zone page: 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site** | **Global Preferences** | **Payment Zones**. 2. From the actions menu for your payment zone, select **Manage Merchant Accounts**. 3. Select a payment gateway and a merchant account. 4. (Optional) Configure PayPal as a secondary payment gateway. 5. Click **Save**. 2. To assign a payment zone to a merchant account from the Salesforce Payments page: 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site** | **Global Preferences** | **Salesforce Payments**. 2. Click the merchant account that you want to assign a payment zone to. 3. In the Payment Zone section, click **Assign**. 4. Select at least one payment zone and click **Assign**. If you don’t have any payment zones, click Create a new payment zone to [Create a Payment Zone for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_create_a_payments_zone.htm&release=264.0.0&type=5 "Create a payment zone and assign one or more currencies and countries to it.") and add one to your account. # Assign Product Attributes Set the product attributes that appear in the B2C Commerce storefront. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Catalogs** | **catalog**. Make sure product attribute definitions belong to a Product Attribute Group. 2. Click **Edit** beside a catalog in the Catalogs pane. 3. Click the **Product Attribute Definitions tab.** The attributes you specify on this tab affect all ways of viewing a product on the storefront, including: - On the product details page - In a search result set - During a product comparison operation 4. Create a group for the attributes. 5. Specify an ID and name for the attribute group and click **Add**. The newly created group appears in the table. 6. Click the **Edit** link in the Attributes column for the appropriate group to add attributes to the group. 7. Click the **ellipsis** on the Attribute Assignments page, and select attributes (defined for your organization) from the table. Alternatively, you can enter the name or ID of an existing attribute and click **Add**. 8. Select the attributes you want to include in the group and click **Apply**. (Attributes can belong to more than one group.) The table containing the attribute definitions included in the group appears. In this table, add or unassign attributes and sort them. Check the attribute whose order you want to change, then use the sort arrows to move the attribute up or down in the list. 9. On the Product attribute definitions details page, create new product attributes. 10. Rebuild the product indexes so that these changes take effect. # Assign Products to a Category Assign products to categories in B2C Commerce from the product editor and from a category page. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Unassign a product from a category in the same way. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Products**. 2. Select a **product**. Assigning a base product or variation group to a category assigns all variation products to that category. You can also assign just one variation product to a category without assigning the base product. 3. Lock the product. 4. Click the **Categories** tab. 5. On the Product page Categories tab, the categories that are listed are already assigned. 6. To assign or deselect categories, click **Edit Categories** and then select or deselect categories from the category tree. 7. If there are no categories (or appropriate categories) listed, click **Edit Categories** to assign a category. (Make multiple category assignments from one page this way.) Using this interface you can: - Search for a category - Expand and contract the category tree - Select one or more categories - Click **Apply** when you are finished. 8. On the product details page, Categories tab, specify which category is used for the product attribute set, and which is used on the storefront. | Option | Description | | --- | --- | | Classification | This category defines the attribute set of the product. | | Primary | This category is the default category used to define the attributes that appear when the product is accessed from outside a category. For example, based on a direct search or a product number or ID. | 9. Click a radio button in the Primary column and click **Apply**. 10. You can also assign products to a category in the Catalogs module (select **site** | **Products and Catalogs** | **Catalogs** | **catalog**). If you are using the drag user interface, you can't assign `classification` versus `primary` categories. Instead, you make the selection in the Products module. 1. In the Products section, click **Assign**. A list of all the products in the current catalog appears: 2. On the Select products page, select products you want to assign to the category. 3. Use the checkboxes to select specific products. 4. Click **Select**. 5. To select all products on a page and click **Select**, then click the **Select All** link**.** You click **Select** before navigating to a new page of products. To select larger groups of products, click 100 or 1000 to change the number of products shown per page. Watch this video to see how to add products to a category. If you can’t watch the video in full screen, open this link in a new tab: [Assign Products to Categories in B2C Commerce](https://salesforce.vidyard.com/watch/1ZEcPZ5TPA7JRaUJzWDgdU). # Assign Products to a Category in Grid View Search for products in your B2C Commerce catalog then add and arrange them on the product page from the grid view. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Catalog**. 2. Select the catalog category you want to edit. 3. In the product list, click the grid view icon ![Grid view](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_products_gridview.png). 4. Click **Assign** and enter your search criteria. 5. From the search results, select and add product to the category. Drag products to the desired product position or enter the product position in the Position Number Starts At field, and click **OK**. #### See Also - [Assign Products to Categories (Video)](https://salesforce.vidyard.com/watch/1ZEcPZ5TPA7JRaUJzWDgdU) # Assign Variation Attributes Assign attributes to B2C Commerce base product, groups, or products. Here's how to create two base products that share variation values and one with unique variation values: 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site Development** | **System Objects Types** | **Product**, make sure that there’s a color attribute definition for the product system object and create it if necessary. 2. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Variation Attributes** | **Catalog**, create a variation attribute that uses the color attribute definition and at lease one color value. 3. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Products**, select a Base Product. Select the **Variations** tab and click **Lock**. 4. In the Variation Attributes section, click the ellipsis (...). Select the shared attribute you created and click **Apply**. 5. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Products** select a Base Product. Select the **Variations** tab. The product must be a different variation product from the one you previously edited. 6. In the Variation Attributes section, click the ellipsis (...). Select the shared attribute you created and click **Apply**. 7. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Products and Catalogs** | **Products**, select a Base Product. Select the **Variations** tab and click **Lock**. The product must be a different variation product from the one you previously edited. 8. Click **New**. 9. On the New Local Variation Attribute page, add a local variation attribute and click **Apply**. The first two base products you edited now have the same color variations, and the last base product has different color variations. # Associate a PayPal Merchant Account with B2C Commerce To use Salesforce Payments with PayPal, associate your PayPal merchant account with your B2C Commerce instance. Prerequisite: To enable Salesforce Payments, contact your Salesforce account executive. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site** | **Global Preferences** | **Salesforce Payments**. 2. Click **Add Account**. 3. Click**PayPal** and then click **Next**. 4. Select the type of PayPal merchant account that you want to use. - PayPal Sandbox: Select to use PayPal in a staging or development instance for testing. - PayPal Live: Select to use PayPal in a production instance to transact real funds. 5. Click **Next**. The PayPal window appears. 6. (Optional) In the PayPal window, add an existing merchant account. 1. Enter the email address for your existing merchant account. 2. Select the country or region for your account and click **Next**. 3. Enter your password. 4. Click **Agree and Consent**. 5. Click **Return to Test Store**. Youʼre returned to the Business Manager account detail page where you can confirm that the account has been created. 7. (Optional) In the PayPal window, create a merchant account. 1. Enter an email address for your new merchant account. 2. Select the country or region for your account and click **Next**. 3. Enter your first name, last name, a password, and a phone number. 4. Review the PayPal consent forms. To give Salesforce Payments consent to perform the operations listed in the forms on your company’s behalf, accept the forms. 5. Click **Agree and Create Account**. 6. Click **Return to Test Store**. Youʼre returned to the Business Manager account detail page where you can confirm that the account has been created. #### See Also - [Remove a Merchant Account from B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_remove_account_association.htm&release=264.0.0&type=5 "Remove a merchant account from your B2C Commerce instance to end the association between them. You can't remove a merchant account that serves as the default for a payment zone until you reassign that default to a different merchant account. After removal, B2C Commerce clears the account from all payment zones.") # Associate a Store with an Inventory List in B2C Commerce Offer customers the _pick-up from store_ capability within your storefront. Offer customers the _pick-up from store_ capability within your storefront. In Salesforce B2C Commerce, use the _order_ API to implement a pick-up-from-store scenario by associating a basket product line item with an inventory list. Use Business Manager to assign a store to an inventory list. Then programmatically retrieve an associated product inventory list from the _Store_ object. See [Inventory Management](https://help.salesforce.com/s/articleView?id=cc.b2c_inventory_management.htm&release=264.0.0&type=5 "To manage storefront inventory data, connect B2C Commerce to an external inventory management system that serves as your system of record. Rely on the platform for basic tracking or integrate Salesforce Omnichannel Inventory to access advanced availability features. This integration makes sure of accurate stock levels and supports complex fulfillment scenarios."). 1. Associate stores with inventory lists in Business Manager. 1. Define your inventory lists. See [Create Inventory Lists and Records](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_inventory_records.htm&release=264.0.0&type=5 "Use B2C Commerce Business Manager to create inventory lists and records."). 2. Define your stores. See [Create Stores in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_stores.htm&release=264.0.0&type=5 "Use Business Manager to manage store location information, such as addresses, locations, and hours of business, which appears in your storefront."). 3. Associate each store with an inventory list. See [Create Stores in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_stores.htm&release=264.0.0&type=5 "Use Business Manager to manage store location information, such as addresses, locations, and hours of business, which appears in your storefront."). 2. Use the B2C Commerce API to add this functionality to your application.
getInventoryList ()Use to retrieve an associated product inventory list from the Store object. Returns the associated dw.catalog.ProductInventoryList object. From dw.catalog.Store.
# Associate a Stripe Merchant Account with Your B2C Commerce Instance Commerce To use Salesforce Payments with Stripe, create a Stripe merchant account directly from your B2C Commerce instance. You can also use a Stripe merchant account that’s already associated with a B2C Commerce instance. Prerequisite: To turn on Salesforce Payments, contact your Salesforce account executive. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site** | **Global Preferences** | **Salesforce Payments**. 2. Click **Add Account**. 3. Click **Stripe** and then click **Next**. 4. (Optional) Create a new merchant account. 1. Select the country where the account-holding organization resides or where the business is legally established. 2. Click **Add**. 5. (Optional) Add an existing merchant account. If you previously created a Stripe merchant account, associate the account with other B2C Commerce instances. 1. Enter your merchant account ID, which you can find on your Stripe account details page. 2. Click **Next**. 3. Click **Verify Now**. A new tab opens on the Stripe site where a test transaction is created. 4. To verify the account, on the Stripe site, click **Capture**. 5. Return to Business Manager, and in the Add Merchant Account window, Click **Add**. #### See Also - [Remove a Merchant Account from B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_remove_account_association.htm&release=264.0.0&type=5 "Remove a merchant account from your B2C Commerce instance to end the association between them. You can't remove a merchant account that serves as the default for a payment zone until you reassign that default to a different merchant account. After removal, B2C Commerce clears the account from all payment zones.") # Associate an Adyen Merchant Account with B2C Commerce To use Salesforce Payments with Adyen, associate your existing Adyen merchant account with your B2C Commerce instance. If you don’t have an Adyen merchant account, obtain one from Adyen first. You can't create an Adyen merchant account through Salesforce Payments. Prerequisites: - To turn on Salesforce Payments and Salesforce Payments — Adyen, contact your Salesforce account executive. - In your Adyen account, enter an allowed origin. An allowed origin is required for client-side authentication. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Site** | **Global Preferences** | **Salesforce Payments**. 2. Click **Add Account**. 3. Click **Adyen** and then click **Next**. 4. In the Add Merchant Account window, enter your payment gateway credentials. Find the information in your providerʼs dashboard. 1. Select the region, which is the live endpoint that matches your client-side environment. 2. Select the country where the account-holding organization resides or where the business is legally established. 3. For Connection Type, select whether this is a test or live account. 4. Enter your merchant account ID, which you can find on your Adyen account details page. 5. Enter your client key and API key. 6. Click **Save**. #### See Also - [Remove a Merchant Account from B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_remove_account_association.htm&release=264.0.0&type=5 "Remove a merchant account from your B2C Commerce instance to end the association between them. You can't remove a merchant account that serves as the default for a payment zone until you reassign that default to a different merchant account. After removal, B2C Commerce clears the account from all payment zones.") # Audit Log Events Account Manager B2C Commerce audit log events are available in Log Center and provide visibility into changes to users, API clients, and organizations. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Log Center publishes audit log events for all Account Manager activities, including changes to user accounts, API client configurations, organization settings, and role assignments. Audit events include information about: - What entity was modified (target) - Who made the change (actor) - What type of action occurred (create, update, delete, role assignment) - When the change was made - Which organization the change is associated with For detailed information about accessing and using Account Manager audit log events, including filtering options, common use cases, and Log Center Query Language (LCQL) examples, see [Account Manager Audit Log Events](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_log_center.htm&language=en_US) in the Log Center documentation. # Authentication and Authorization Best Practices in B2C Commerce Exploitation of access control vulnerabilities is a core skill of attackers. To protect against the attackers, enforce server-side access control checks for business functions such as account management, order management, and purchasing. To control access to sensitive objects, use authentication and authorization. The following objects are examples of sensitive objects: - Order - Customer - CustomerPaymentInstrument - OrderPaymentInstrument - Basket B2C Commerce identifies Script API objects using object identifiers (universally unique identifier (UUID), ID, Token). Knowing the identifiers shouldn’t grant read or write access to sensitive objects. Always perform additional authentication and authorization in the storefront before processing any requests. Some script APIs provide both secure and insecure methods. Although insecure methods accommodate legacy use cases, we highly recommend using the secure methods. For example, the class OrderMgr provides two signatures to the method getOrder: ``` static getOrder(orderNumber : String) static getOrder(orderNumber : String, orderToken : String) ``` The second signature is the secure method. For more information, see Class OrderMgr. The second signature is the secure method. For more information, see [Class OrderMgr](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/api/class_dw_order_OrderMgr.html). **Authentication** If you use the Storefront Reference Architecture (SFRA) in your cartridge path, you can use its `userLoggedIn` middleware capability to check whether the request is from an authenticated user. This middleware exposes the `validateLoggedIn` function to check whether the user is authenticated to invoke the function. The middleware also exposes the `validateLoggedInAjax` function to validate whether a user is authenticated from an AJAX request. ``` var userLoggedIn = require('*/cartridge/scripts/middleware/userLoggedIn'); server.get( 'Show', server.middleware.https, userLoggedIn.validateLoggedIn, consentTracking.consent, function (req, res, next) { var CustomerMgr = require('dw/customer/CustomerMgr'); var Resource = require('dw/web/Resource'); var URLUtils = require('dw/web/URLUtils'); ``` This code snippet includes the middleware `userLoggedIn` for an exposed business function. If you use SiteGenesis in your cartridge path, you can use guards to wrap controller functions when they’re exported. The functions specified in the guard module act as a request filter. You can specify multiple levels of access to controller functionality. - Require HTTPS. - Require or forbid a certain HTTP method, like GET or POST. - Require that a current user is logged in. This example shows an edit profile controller that requires HTTPS and that the user is logged in. ``` exports.EditProfile = guard.ensure(['get', 'https', 'loggedIn'], editProfile); ``` **Authorization** When implementing storefront operations, use authorization checks that are relevant to your business workflow. When performing an administrative action on a sensitive object, authenticate the requesting user using a secret about that object. For example, when a guest creates an account after successfully checking out, and B2C Commerce reassigns the order to that guest, authenticate the user using a secret about the order. This approach provides high confidence that the requesting user is the user who created the object. The following sections include examples of authorization checks for the Order object for registered and guest shoppers. **Registered Shoppers** When a registered shopper wants to access an order, verify the following information in the storefront: - The shopper is authenticated. Enforce a server-side authenticated-user check, such as the SFRA `userLoggedIn` middleware or SiteGenesis guards. - The order has a cancelable status. Whether a status is cancelable depends on the order management flow of each storefront. See Class Order for supported statuses. - The order has a cancelable status. Whether a status is cancelable depends on the order management flow of each storefront. See [Class Order](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/api/class_dw_order_Order.html) for supported statuses. - The shopper owns the order to cancel. ``` var orderCustomer = order.getCustomer(); var sessionCustomer = session.getCustomer(); If ( orderCustomer.ID === sessionCustomer.ID ) { // The logged-in shopper is the owner of the order // perform actions in accordance with the order management workflow ... } else { // A user attempts to access an order they don’t own // Reject this request with an error message ( HTTP 401 unauthorized or a custom error page) // Log an error message to track this occurrence } ``` **Guest Shoppers** Implementing a robust authentication and authorization scheme that applies to guest (unregistered) shoppers is more challenging than for registered shoppers. To reduce the risk of fraud, consider the following options as applicable for your use case: - Prohibit guest shoppers from changing existing orders; prompt them to create an account when they try to change orders. - Allow access to an order only if the shopper can produce the order number, order token, and a combination of other data included in the order, such as: - Email - Last name - Postal code - Phone number - Don’t allow guest shoppers to access orders that registered users own. - Limit the permitted actions to the strict minimum. For example: - Don’t display payment or personal information stored in the order. - Don’t allow changes that let a malicious user modify the order, for example, changing the shipping address. - Implement bot/script protection controls to protect from brute force attacks. For example: - Rate limiting - Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA) # Authentication and Authorization in B2C Commerce Authentication and authorization are key security concepts. To configure security controls, you need access to Business Manager. - **[Introduction to Roles in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_introduction_to_roles.htm&release=264.0.0&type=5)** In Business Manager, you can perform authentication to determine if the user is who they claim to be. You can also perform authorization to determine if the user has permission to perform the specific action they’re attempting. - **[Shopper Authentication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_authentication.htm&release=264.0.0&type=5)** Shoppers can register and create accounts on your storefront or they can remain anonymous. For example, to browse your storefront, shoppers aren’t required to log in to their account or even have an account. However, when a shopper creates an account, you now have their information, such as billing address, credit card, and previous orders. Authenticated shoppers can also access certain functionality that’s not available to anonymous shoppers, such as a gift registry and wishlist. - **[User Authentication and Authorization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_user_authentication_and_authorization.htm&release=264.0.0&type=5)** As an administrator, you configure security controls in Business Manager. You must perform authentication to determine if the Business Manager user is who they claim to be. You can also perform authorization to determine if the user has permission to perform the specific action they’re attempting. - **[OCAPI Client Authentication and Authorization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ocapi_client_authentication_and_authorization.htm&release=264.0.0&type=5)** Open Commerce API (OCAPI) provides a RESTful interface that OCAPI clients consume (custom code). So, what about client authentication and authorization for OCAPI? - **[WebDAV Authentication and Authorization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_webdav_authentication_and_authorization.htm&release=264.0.0&type=5)** WebDAV is a protocol that enables you to upload and download data or code files. A merchant sends WebDAV requests to your instance’s WebDAV server. The merchant’s WebDAV client can be a Business Manager user or an API client for machine-to-machine interaction. # Automate Import/Export in B2C Commerce Before you start automation, decide on your file naming convention for import files. We recommend that you use a regular expression to name your import files and include a date signifier. This approach makes it easier to identify if the correct files were transferred to the instance and to archive files. Also decide how you want to archive your files and the naming convention for archived files. When the storefront is live, exporting data is as important as importing, because you want to synchronize between the merchant's database and the B2C Commerce system. To export a file, you have two options: - Use an approach that is similar to importing, where you export business objects in the B2C Commerce standard format using pipelets, then translate the data into your format. - Get the set of business objects through a pipelet and write to your format directly. 1. Create an automatic import feed. 1. Configure your backend system to produce XML files required by the feed schema. 2. Create a cartridge for your import export code. 3. Create a pipeline for the import job. 4. Create a job and associate it with the pipeline. Schedule and manage jobs through the Business Manager in the **Administration** | **Operations** | **Job Schedules** module. 5. Create a user with the privileges to execute the job. 6. Use data replication if necessary to transfer the information from the staging instance to the production instance. 2. Create an automatic export feed. 1. Create a custom pipeline. The pipeline can use the export pipelets to export files with the B2C Commerce schema file definitions or scripts to create custom export files. 2. Create a job to run the pipeline. Every date export uses Greenwich Mean Time (GMT)-00 as the time zone. 3. Create a job on your backend system that automatically produces the import file. Schedule and manage jobs through the Business Manager in the **Administration** | **Operations** | **Job** module. 4. Create your export file. 5. Run the job. # Automated Linking for Unlinked Accounts In Account Manager and B2C Commerce If you don't want to use just-in-time provisioning, create user accounts in Account Manager and let them link automatically. When a user first performs single sign-on, Account Manager activates the account and links it to the user's Salesforce Identity account. Existing users must first authenticate with their Account Manager credentials, and MFA if registered. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) When the new user initially performs SSO, their Account Manager account activates and links to their Salesforce Identity account or third-party Identity and Access Management (IAM) that uses Salesforce Identity. You can also use this approach with existing Account Manager users. When the user performs SSO, Account Manager links their account to their Salesforce Identity account. For security purposes, existing users must authenticate with their Account Manager credentials before Account Manager links their account. If the user has an multi-factor authentication (MFA) verifier registered, they must submit the MFA verification to link the accounts. After Account Manager links the user's Account Manager account to their Salesforce Identity account, Account Manager changes the user's username to the email address of their Salesforce Identity account. # Automatic 301 Redirects for B2C Commerce A 301 redirect is the HTTP status code for a permanent URL redirection that also passes page ranking power to the redirected page. In most instances, a 301 redirect is the best method for implementing redirects in your storefront. B2C Commerce handles requests for URLs that have changed by determining whether the URL is an SEO URL and if the URL matches the expected SEO URL for the product. If the URL has changed, B2C Commerce automatically creates a 301 redirect, which preserves page rankings for products and content, even if their properties change. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you remove a product or content item, no redirect is created and it's possible to redirect the customer to a different page. See [Creating a Redirect from a B2C Commerce URL](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_redirect_from_a_digital_url.htm&release=264.0.0&type=5 "The URL redirects feature redirects obsolete or unavailable B2C Commerce pages to currently available pages, or to a specific URL outside B2C Commerce. You can also schedule when a redirect becomes active and when it expires."). ## Out-Dated Storefront URL Mappings Out-dated storefront URL mappings are handled as follows: - Product/Content: if a request with an SEO URL references a product or content that isn't up to date because the mapping syntax changed recently (or the URL path was changed manually), the URL automatically redirects to the current product/content URL mapping. This uses the mandatory product/content ID part in the URL path and works for all instance types. - Category/Folder/Pipeline: requests that are mismatched regarding the configured trailing-slash are automatically redirected. Out-dated URL redirect mappings are only enabled for Staging and Production instances. See [URL Archive](https://help.salesforce.com/s/articleView?id=cc.b2c_using_the_seourls_url_archive_tab.htm&release=264.0.0&type=5 "The URL Archive redirects out-dated URL mappings to the current URL mapping (as defined in your category and folder URL rules section) on your B2C Commerce Staging and Production instance. When out-dated redirects, initiated by the archive, become obsolete (for example, because a category was deleted or because of ID changes), remove them from the URL archive tab. Search for the URL path or object ID."). ## Search Refinement URLs To avoid duplicate content, the automatic HTTP 301 redirect handling for search refinement URLs redirects out-dated URL mappings to the current URL mapping, for the following cases: - URL contains an unmapped and enabled URL search refinement in the query string, for example, `/shoes/?prefn1=color&prefv1=blue` redirects to `/blue/shoes/`. - URL contains multiple URL search refinement mappings with incorrect order, for example, `/blue/abrand/shoes/` redirects to `/abrand/blue/shoes/`. - URL contains multiple URL search refinement values with incorrect order,for example, `/second-refinement|first-refinement/electronics/` redirects to `/first-refinement|second-refinement/electronics/`. - URL doesn't contain a configured constant, for example, `/abrand/blue/shoes/` redirects to `/abrand/constant/blue/shoes/`. - URL contains the `Search-Show` pipeline alias but is configured to be excluded, for example, `/abrand/blue/search/` redirects to `/abrand/blue/`. # Automatic Query Rewrite for Agentic Commerce Search Agentic Query Rewrite in Agentic Commerce Search for B2C Commerce automatically reformulates queries that return poor or irrelevant results to show more relevant products. The feature activates after provisioning and requires no admin configuration. ## When Agentic Query Rewrite Runs Agentic Query Rewrite is useful for emerging trends, specialty terminology, and long-tail phrases that the AI model doesn't handle well. For example, a shopper searches for "glazed donut nails" (a trending nail aesthetic). The query doesn't match product titles or attributes. Agentic Commerce Search recognizes the weak result set, rewrites the query to "sheer gloss nail polish," and caches the improved results. Subsequent searches return the better match immediately. ## How Agentic Query Rewrite Refines Results - A shopper submits a query. - Agentic Commerce Search evaluates the top results for keyword match quality and relevance. - Strong results return without a rewrite. - Poor results trigger a background rewrite. - The first shopper sees the original results while the rewrite runs. - Subsequent shoppers see the improved results from the cache. Salesforce manages the cache duration. To adjust the default period, contact your Salesforce account team. ## Influencing Agentic Query Rewrite Quality Agentic Query Rewrite doesn't expose direct configuration controls. However, complete product titles, descriptions, and attributes give the AI model stronger signals about product intent. You can also [manually create a merchandising rule](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_create_rule.htm&release=264.0.0&type=5 "In Agentic Commerce Search for B2C Commerce, merchandising rules control product ranking, placement, and visibility for specific queries, categories, or catalog attributes. A rule can target a specific query or category, or apply globally across all searches.") and select Query Rewrite as the action type to override the automatic rewrite for a specific query. # Automatic vs. Manual URL Redirects for B2C Commerce Consider the differences between automatic and manual redirects.
Type Feature Automatic Redirect Redirect Type Comments
Category Changing URL Rules Syntax Yes 301 URL Archive - redirects exist in case mappings were live on Production. URL Archive not available on Sandboxes.
  Manual Override Yes 301 URL Archive
  Category ID Change No - User must set up manual redirect within Merchant Tools | Site | SEO | URL Redirects.
  Category Name Change Yes 301 URL Archive
  Append Trailing Slash to Category URLs (Catalog URLs) Yes 301 URL Archive
  Custom Replacement Rules Yes 301 URL Archive
  White-Space Replacement Yes 301 URL Archive
         
Product Changing URL Rules Syntax Yes 301  
  Manual Override Yes 301  
  Use '-' as Product ID Separator Instead of '/' (unticked box to ticked) Yes 301  
  Use '-' as Product ID Separator Instead of '/' (ticked box to unticked) Yes 301  
  Custom Replacement Rules Yes 301  
  White-Space Replacement Yes 301  
  Product ID Change No - User must set up manual redirect within Merchant Tools | Site | SEO | URL Redirects.
  Product Name Change Yes 301 URL Archive
         
Content Changing URL Rules Syntax Yes 301  
  Manual Override Yes 301  
  Use '-' as Content ID Separator Instead of '/' (unticked box to ticked) Yes 301  
  Use '-' as Content ID Separator Instead of '/' (unticked box to ticked) Yes 301  
  Custom Replacement Rules Yes 301  
  White-Space Replacement Yes 301  
  Content ID Change No - User must set up manual redirect withinMerchant Tools | Site | SEO | URL Redirects.
  Content Name Change Yes 301 URL Archive
         
Folder Changing URL Rules Syntax Yes 301 URL Archive
  Manual Override Yes 301 URL Archive
  Append Trailing Slash to Folder URLs (Folder URLs) Yes 301 URL Archive
  Custom Replacement Rules Yes 301 URL Archive
  White-Space Replacement Yes 301 URL Archive
  Folder ID Change No - User must set up manual redirect withinMerchant Tools | Site | SEO | URL Redirects.
  Folder Name Change Yes 301 URL Archive
         
Pipeline Append Trailing Slash to Pipeline URLs (Pipeline Aliases) Yes 301 If “Perform Automatic Redirect” box is checked.
  Changing Pipeline Alias Yes 301 URL Archive
         
Search Refinement URL Refinement Attribute Order Change (Merchant Tools | Site | SEO | URL Rules | Catalog/Folder URLs | Enabled Category/Folder Search Refinements) Yes 301 Without URL Archive. Works on Sandbox.
  Refinement Attribute Value Order Change Yes 301 Without URL Archive. Works on Sandbox.
  Refinement Attribute Naming Change No - User must set up manual redirect.
  Refinement Value Change No 301 (Manual) Merchant can create manual redirects by clicking App Launcher App Launcher, and then selecting Merchant Tools | Site | SEO | URL Rules | URL Search Refinements with snapshot (compares diff) feature in bulk.
  Include or Exclude Constant in Search Refinement URL Yes 301  
  Include or Exclude Search Pipeline in URL Path Yes 301  
  Search Refinement Delimiter Change No - User must set up manual redirect.
         
Hostname Aliases Duplicate Home URLs (resource, site-path, pipeline) No 301 (Manual) User can create mapping via JSON script by clicking App Launcher App Launcher, and then going to Merchant Tools | Site | SEO | Aliases
  Hostname Redirect No 301 (Manual) User can create mapping via JSON script by clicking App Launcher App Launcher, and then going to Merchant Tools | Site | SEO | Aliases
         
URL Framework Switch from Long-URLs to Search-Friendly URL Yes 301 With 17.8 Release - Example: from /on/ demandware.store/ [...]/default/Search- Show?cgid=electronics to /Electronics/ electronics,default,sc.html
  Change of Dynamic Text or Display Name within Search-Friendly URLs Yes 301 Localization example: from /Electronics/ electronics,de_DE,sc.html to /Elektrogeraete/ electronics,de_DE,sc.html
  Switch from Long-URLs or Search-Friendly URLs to Rule-Based Storefront URLs (Merchant Tools | Site Preferences | Storefront URLs) Yes 301 Example: from /on/ demandware.store/ [...]/default/Search- Show?cgid=electronics or /Electronics/ electronics,default,sc.html to /electronics
         
Mappings / Redirect Create Static Mapping Rules (Merchant Tools | Site URLs | Static Mappings) No 301 (Manual) User can set up mappings for unknown URL requests.
  Create Dynamic Mapping Rules (Merchant Tools | Site URLs | Dynamic Mapping) No 301 (Manual) User can set up mappings for unknown URL requests.
  Define URL Redirects (Merchant Tools | Site URLs | URL Redirects) No 301/302/307 (Manual) User can set up redirect for known and unknown URL requests. Redirect type depends on user selection.

Locale segments are not part of the generated URL mapping and consequently not part of the archived mapping.

         
Search Driven Redirects Setup Redirects for Search Phrases (Merchant Tools | Search | Search Redirects) No 301 (Manual) User can set up redirects for search keywords
         
Other Enforce HTTPS URLs in Storefront (Merchant Tools | Site Preferences | Storefront URLs) Yes 301 Feature available on PRD / DEV only for instances on eCDN; With 17.8 Release. Solution for Akamai Connector with 18.1
# Automating File Transfer Through Scripts in B2C Commerce Use B2C Commerce scripts to pull files into the cartridge. External systems, such as inventory or ordering systems, can use the WebDAV interface to upload and download files using the following format: `https:///on/demandware.servlet/​webdav/​​/Impex/src.` The WebDAV interface supports binary files (plain XML) and compressed files. ## Creating File Transfer Pipelines in B2C Commerce File transfer pipelines use B2C Commerce script to create a B2C Commerce FTP, HTTP, or WebDAV client and GET or POST files from an external system to the B2C Commerce instance. You can delete files from the external system after they’re successfully imported. To expose a private pipeline to a third party that uploads files, create a public subpipeline that calls the private subpipeline. This approach allows scheduled jobs and on-demand calls to use the same pipeline. ## Creating File Transfer Scripts in B2C Commerce Use WebDAVClient, FTPClient, or HTTPClient in your file transfer script to move files from your backend system into B2C Commerce. We recommend that the file names for transfer include the date. This convention allows the pipeline to identify if the correct file for import is in the correct location. The pipeline can then remove files from the archive efficiently. This approach requires you to create a script that can generate the expected file name for comparison to the actual file name. For example, the pipeline expects the catalog-jul-08.xml file and instead finds jun-08.xml, it can generate an error. The least complicated file transfer pipeline to write is that for a WebDAV connection with an HTTP GET or POST, because such a pipeline doesn't require you to create an SSL connection. ### Zipping and Unzipping Files Using B2C Commerce Script If you have large files, we recommend that you zip them for file transfer. To automate the zip process when using a pipeline to transfer files, create scripts. The B2C Commerce API supports the creation and extraction of .zip files. - File.zip (File outputZipFile) creates a new .zip file from the contents of this file. If the file is a directory, the .zip file is created from the contents of files in the directory. If the output .zip file exists, it's replaced with a new .zip file. Empty subdirectories aren’t zipped. Zip entry names (pathnames) are made relative to this file. This approach facilitates unzipping the contents into a different directory. - File.unzip(File root) extracts the content of this .zip file into the location designated by the root. If the .zip file contains directories, those directories are created as needed. If a file exists, it's overwritten. Example: ```javascript var catalog: File = new File('/catalog'); catalog.zip('/temp/catalog.zip'); var catalogZip : File = new File('/temp/catalog.zip'); catalogZip.unzip('/temp/catalog'); // /temp/catalog created to store unzipped contents. ``` ### Using WebDAVClient to Integrate Backend Systems with B2C Commerce B2C Commerce implements a WebDAV client in the B2C Commerce Script API to enable developers to access remote locations via the WebDAV protocol. Accessing the Import/Export WebDAV share requires _File Transfer Manager_ privileges. The WebDAVClient class is the actual client, while the WebDAVFileInfo class is used to store information about the files at the remote destination. Use the WebDAVClient class to synchronize directories from a remote server with the B2C Commerce file system or to export files out of the B2C Commerce system. The client supports the following common WebDAV methods: - OPTIONS - GET - PUT - MKCOL - MOVE - COPY - PROPFIND The names of the script methods correspond exactly with the names of the WebDAV methods. The methods propfind() and list(), used to get information about remote files and directories, return instances of WebDAVFileInformation, which encapsulate this information. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note This client can't be used to access the B2C Commerce server via the WebDAV protocol. Example: ``` var webdavClient : WebDAVClient = new WebDAVClient("http://mywebdav.server.com","myusername","mypassword"); var getString : String = webdav.get("http://mywebdav.server.com/myData.xml","UTF-8"); var message : String; if(webdavClient.succeeded()){ message = webDavClient.statusText; } else{ // error handling message="An error occurred with status code "+webdavClient.statusCode; } var data : XML = new XML(getString)); ``` For more information, see the section on classes and methods. ### Using FTPClient to Integrate Backend Systems with B2C Commerce B2C Commerce implements an FTP client in the B2C Commerce Script API to enable developers to access remote locations via the FTP protocol. The FTPClient class can be used to pull or push files that don't require secure transmission. Because it isn't a secure transfer protocol, we recommend that you use the FTPClient only for sandboxes. The FTPClient class supports the FTP commands CD, GET, PUT, DEL, MKDIR, RENAME, and LIST. Because the RMD command isn't supported, it isn't possible to delete directories using the B2C Commerce FTP client. The FTP connection is established using passive transfer mode (PASV). The transfer of files can be text or binary. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The FTPClient.setTimeout method sets the socket, data channel, and script timeouts for the FTP call. Each timeout is set to this value, so the total timeout can be longer than the value set. Example: ``` var ftp : FTPClient = new dw.net.FTPClient(); ftp.connect("http://www.myinstance.com", "username", "password"); var data : String = ftp.get("simple.txt"); ``` To use the FTPClient class, contact Salesforce Support to have a firewall rule installed. Include the following information in your support case: - Target IP - Port number - POD number for your instance ### Using HTTPClient to Integrate Backend Systems with B2C Commerce Use the HTTPClient class to create an HTTP client. The HTTPClient class supports the following HTTP methods: - GET - POST - HEAD - PUT - DELETE ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important For security reasons, we recommend that you always use HTTPS when connecting to external servers. A Certificate Authority (CA) that B2C Commerce recognizes signs the certificate at the external server. Import more CAs in Business Manager. ``` var httpClient : HTTPClient = new HTTPClient(); httpClient.setTimeout(2000); var message : String; httpClient.open('GET', 'http://www.myinstance.com/feed.xml'); httpClient.send(); if (httpClient.statusCode == 200) { message = httpClient.text; } else { // error handling message="An error occurred with status code "+httpClient.statusCode; } ``` # Availability Calculation A product's availability determines whether shoppers can order it, whether it appears in storefront search results, and how it ranks by availability, using its available to sell (ATS) quantity as the input. Availability resolves differently for base products, variation products, bundles, and product sets, often recursively. If you use Salesforce Omnichannel Inventory, it calculates individual product availability and sends the data to B2C Commerce. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Omnichannel Inventory doesn’t perform availability model calculations for main, variation, bundle, and kit products. When integrated with Omnichannel Inventory, B2C Commerce handles those calculations using individual product availability data from Omnichannel Inventory. Each product has a product record. If a product isn't orderable, it doesn't appear in search results. For search availability ranking, the product is ranked high or low based on its available to sell (ATS) value. ## Base Product and Variation Availability Calculation - A base product can't be ordered. Its availability status is the availability of its variation products. - A base product can have an inventory record, but that isn’t best practice. Instead, assign inventory records to its variation products, because customers can order them. - If at least one of the variation products of a base product is orderable or in-stock, the base product is considered orderable or in-stock. If you’ve enabled the _Show Orderable Products Only_ search preference (site or product level), a base product can appear in search results but can't be ordered directly. Also, if you have sorting rules that sort by availability, whether a base product is orderable controls where it appears in the search results. - if none of a base product’s variations appear in search results, the base product doesn't appear in them either. - If a base product contains a bundle, determine availability in a recursive manner. - A base product’s search availability ranking is based on the ATS of its variation products in the current search result. For example, if it represents at least one variation product with good availability, it’s ranked high. ## Product Bundle Availability Calculation - Products in a bundle can have inventory records. - If one item in the product bundle is unavailable, the entire bundle is unavailable. - If a product bundle has an inventory record, Salesforce B2C Commerce uses the inventory record in the calculation of the availability of the product bundle. - A bundle can have its own inventory record. Use the bundle inventory record to control availability of bundles independently from the availability of the bundled products. If bundle availability is "perpetual", You don't need a bundle inventory record. - If a bundle has its own inventory record and the _Use Bundle Inventory Only_ option isn't selected, this record and the records of the bundled products determine availability. Therefore, both the bundle and the bundled products must be available. - If a bundle has its own inventory record and the _Use Bundle Inventory Only_ option is selected in the inventory list, only the availability of the bundle is used to calculate availability. In this case, even if bundled products aren’t available, the bundle remains available. This strategy is useful if the inventory of the bundle and the individual products is tracked separately in your backend ordering or inventory system. - If a bundle has no inventory record and the _Use Bundle Inventory Only_ option isn't selected, only the records of bundled products are used to determine availability. For example, if a product bundle contains two products, one of which has 10 in stock, and the other of which has five in-stock and 10 on backorder, there are five bundles in stock and five on backorder. In this case, product bundles are unaffected by the _default in-stock_ setting of the site inventory list. - If a bundle has no inventory record and the _Use Bundle Inventory Only_ option is selected, the inventory list _default in-stock_ option defines whether the bundle is available. If this option is set, the bundle is always available, otherwise is it never available. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Use getAvailabilityModel().isInStock(). The `in-stock` flag has been deprecated. - If a bundle contains other bundles or base products, availability is determined in a recursive manner. - A bundle doesn't appear in search results if it isn't orderable. - For search availability ranking, the bundle is ranked high or low based on the lowest ATS of all bundled products and the bundle itself (if bundle has a record). ## Product Set Availability Calculation - A product set can't be ordered. Its availability status is the availability of the set products. - If a product set has an inventory record, the record isn't used. A product set can't have an inventory record. - If at least one of the set products is orderable or in-stock, a product set is 'orderable' or 'in-stock'. - If a product set contains bundles or base products, availability is determined in a recursive manner - If none of the set products that the product set represents in the current search result is orderable, a product set isn't shown in search results. - For search availability ranking, the product set is ranked high or low based on the ATS of the set product it represents in the current search result. For example, if it represents at least one set product with good availability, it’s ranked high. # Availability for Active Data Availability is the normalized ratio between the Allocation attribute and the Available To Sell (ATS) attribute of a B2C Commerce product inventory record. Special rules apply for variation products, product sets, and potentially product bundles. Availability is the same for all sites that share an Inventory list, so it's basically a site-specific value. Availability: - Isn’t staged and values are specific to each instance - Is a ratio value from 0.0 through 1.0 - Salesforce B2C Commerce computes values in real time ## Standard Product Example: Standard Product and Bundled Products Within an Inventory List Allocation(p: 50) ATS(p: 10) Availability(p: 10 / 50 = 0.20) ## Base Product and Variations If the number of online variations is zero, then the availability of the base product is zero. Otherwise, the availability of a base product is equal to the sum of the availability of each variation product divided by the total number of variation products. Availability is calculated using the following formula: `Availability(_mp_) = SUM(Availability(_vpX_)) / _X)_` Where: _mp_ is a base product _vpX_ are online variantion products of the base product _X_ is the number of online variation products Example: Base Product Within an Inventory List Variation product 1 Allocation: 50 ATS: 10 Availability: 0.20 Variation product 2 Allocation: 100 ATS: 10 Availability: 0.10 Base Product Availability: (0.20 + 0.10) / 2 = 0.15 ## Product Bundle A product bundle’s availability is the availability of its least available product, because products in a bundle can't be purchased separately. B2C Commerce calculates availability using the following formula: `Availability(_bp_) = MIN(Availability(_cpX_))` ## Product Set A product set’s availability is the availability of its most available product, because products are purchased individually, but are promoted through a set. So customers can purchase any item in a set that’s still available. B2C Commerce calculates availability using the following formula: `Availability(_sp_) = MAX(Availability(_cpX_))` Where _sp_ is a product set _cpX_ are online products in the set Example: Product Set Within an Inventory List Product 1 in set Allocation: 50 ATS: 10 Availability: 0.20 Product 2 in set Allocation: 100 ATS: 10 Availability: 0.10 Product set Availability: MAX(0.20, 0.10) = 0.20 # Availability Ranking Order search results based on the availability of items. Availability is set through the inventory feature in B2C Commerce. To use the Availability Ranking feature to manipulate the search result based on product availability: - Enable or disable dynamic ranking based on availability. - Set an availability threshold, which determines if a product is pushed to the end or to the beginning of the search results. Select the **Availability** model attribute for a sorting rule to place products in order by availability. Usually this is used to push unavailable items to the end of search results. For information on how to control low SKU coverage, in which some variations of a base product have low availability, see [SKU Coverage](https://help.salesforce.com/s/articleView?id=cc.b2c_sku_coverage.htm&release=264.0.0&type=5 "SKU Coverage is the normalized ratio between the total number and the number of available variations of a B2C Commerce base product. SKU Coverage is the same for all sites that share an Inventory list, so it's a site-specific value."). When a customer places an order in the storefront, or a merchant changes the inventory information in the Business Manager or through a feed, update the availability index to reflect these changes. Use incremental indexing to update the index about every 30 seconds, or use a scheduled index rebuild at a longer interval. You can also set an availability low ranking threshold. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then navigate to **site** | **Search** | **Search Preferences**. If you set an availability threshold, then products with a normalized availability less than this number are pushed to the back of the search results. Normalized Availability is a percent value, expressing the availability on a scale of 0.0–1.0 and is calculated for a product (p) by the following formula: ![Normalized Availability](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_search_and_navigation_8680.gif) You enable the availability ranking search feature on your staging instance. You then enable incremental indexing for the availability indexes. The staging index is purely for testing the value of the availability threshold. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The availability ranking only groups the affected products and pushes them to the end of the search result list. It doesn’t sort the products by descending availability. The availability rank of a base product derives from the availability ranks of the variation products it represents in the search result. The availability rank of a product set derives from the set of products it represents in the search result. For example, a base product isn't moved to the bottom of the search result if at least one of the variation products it's representing in the search result is available. ## Availability Indexing B2C Commerce storefront product search features enable your application to filter and sort search results based on inventory data. Exclude a product from the search results if it's out of stock or pushed up or down in the search results due to low availability. The data used for inventory filtering and sorting is contained in your site or organization's availability search index. Each site has its own availability search index. Multiple sites that share inventory list also share search availability index. The incremental or full rebuild of the index is a time and resource critical process, depending on inventory turnover, the number of complex products (variations, bundles, sets) in the storefront catalog, and the sorting rules used in the site. After you rebuild your availability index, it is built incrementally and automatically. The availability indexing process relies completely on the inventory list record data, ignoring the online status of products. In the availability search index, a product is marked as available if it’s in-stock, regardless of the online status of the product at indexing time. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When using Omnichannel Inventory, availability is calculated based on cached availability data from Omnichannel Inventory. The aggregated values for availability-based sorting attributes (Availability, ATS, TimeToOutOfStock, SKUCoverage) for complex products (base products, bundles, sets) are also calculated at search run time. The aggregation takes all subproducts (variation products, bundled products, set products) into consideration that are contained in the product search index, even if these products are currently offline (that is, products are contained in the product index, but the online-from date is tomorrow). ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce, when filtering and sorting search results based on availability attributes, considers a product's online-from and online-to dates. Because online status isn't considered in the availability indexing process, a product is considered available as soon as its online-from date is reached. # Available to Sell (ATS) Calculation The available to sell (ATS) quantity is the number of units of a product that B2C Commerce can sell, calculated from allocation, preorder and backorder allocation, turnover, and on-order values. The formula varies by product type: standard, variation, base product, product set, and product bundle. This quantity feeds the orderable and in-stock status covered in Availability Calculation. The ATS calculation depends on the product type: standard, variation, base product, product set, or product bundle. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important If you use Salesforce Omnichannel Inventory, then Omnichannel Inventory performs all availability calculations and sends read-only availability data to B2C Commerce. Individual inventory records in B2C Commerce are read-only. ## Standard Product ATS Calculation ATS represents the quantity of a product allocated for sale that hasn’t shipped and that isn’t being held for pending orders, plus its quantity available for backorders and preorders. In general, the ATS is the sum of the allocation and preorderBackorderAllocation, reduced by the turnover and the (optional) on order quantity. By default, it's equal to the number of units of a product that are allocated to sell (the `allocation` value). ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When using Omnichannel Inventory, the preorderBackorderAllocation quantity is the sum of the future restock quantities, and the on order quantity isn’t used. The following are some key formulas: | Value | Formula | | --- | --- | | ATS | ATS = max(0, allocation + preorderBackorderAllocation - turnover – on-order) | | Stock level | StockLevel = max(0, allocation - turnover – on-order) | | Available for shipping | Available for shipping = max(0, allocation - turnover ) | Turnover represents a running count of a product's unit sales since the last inventory update. The optional On Order quantity represents the quantity that’s ordered but isn't yet exported for shipping. The turnover doesn't include the On Order quantity. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note On Order Inventory isn’t compatible with Omnichannel Inventory. When products are added to the shopping cart, they aren’t subtracted from ATS. Adjustments to ATS only occur at final checkout. Adding a product to the shopping cart doesn't reserve the product or guarantee its availability at checkout. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Business Manager shows the number of units of a product that are available to sell (ATS). Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Site** | **Products and Catalogs** | **Inventory**. Open an inventory list, and then click **Records**. If a merchant chooses to use B2C Commerce to calculate the ATS value between inventory updates, the following conditions must apply: - The product must have a product inventory record - The product's Perpetual field isn’t checked (`perpetual = false`). If the customer supports backorders or pre-orders, the product's Pre-Order/Backorder Handling field is set to `Pre-Order` or `Backorder` (`backorderable = true` or `preorderable = true`) ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When using Omnichannel Inventory, the preorderable flag is always false, and the backorderable flag is true if the product has any future restocks in Omnichannel Inventory. A change to a product's `turnover`, `allocation`, or `preorderBackorderAllocation` values result in a recalculation of ATS. When the allocation level is reset, the turnover value is set to zero, but the on-order value isn't changed. ## Base Product and Variation ATS Calculation A base product doesn’t have its own product record, so it has no ATS quantity of its own. In previous versions of B2C Commerce, a single product record was used to calculate ATS for a base product, and that record is still included for legacy applications. For information about how a base product’s availability and search ranking resolve from its variation products, see [Availability Calculation](https://help.salesforce.com/s/articleView?id=cc.b2c_availability_calculation.htm&release=264.0.0&type=5 "A product's availability determines whether shoppers can order it, whether it appears in storefront search results, and how it ranks by availability, using its available to sell (ATS) quantity as the input. Availability resolves differently for base products, variation products, bundles, and product sets, often recursively. If you use Salesforce Omnichannel Inventory, it calculates individual product availability and sends the data to B2C Commerce."). ## Product Bundle ATS Calculation A product bundle can have its own product record in addition to the inventory records for the bundled products. Whether the bundle has its own inventory record, and whether the Use Bundle Inventory Only option is selected on the Inventory List page, determines which stock levels an order decrements. - If the bundle has no inventory record and Use Bundle Inventory Only isn’t selected, placing an order that contains the bundle decrements the stock level of all bundled products. - If the bundle has an inventory record and Use Bundle Inventory Only isn’t selected, placing an order decrements the stock level of both the bundle and all bundled products. - If the bundle has an inventory record and Use Bundle Inventory Only is selected, placing an order decrements the stock level of the bundle only, not the bundled products. For information about how these same options determine whether a bundle is orderable or in-stock, see [Availability Calculation](https://help.salesforce.com/s/articleView?id=cc.b2c_availability_calculation.htm&release=264.0.0&type=5 "A product's availability determines whether shoppers can order it, whether it appears in storefront search results, and how it ranks by availability, using its available to sell (ATS) quantity as the input. Availability resolves differently for base products, variation products, bundles, and product sets, often recursively. If you use Salesforce Omnichannel Inventory, it calculates individual product availability and sends the data to B2C Commerce."). ## Product Set ATS Calculation A product set doesn’t have its own product record, so it has no ATS quantity of its own. In previous versions of B2C Commerce, a single product record was used to calculate ATS for a product set, and that record is still included for legacy applications. For information about how a product set’s availability and search ranking resolve from its set products, see [Availability Calculation](https://help.salesforce.com/s/articleView?id=cc.b2c_availability_calculation.htm&release=264.0.0&type=5 "A product's availability determines whether shoppers can order it, whether it appears in storefront search results, and how it ranks by availability, using its available to sell (ATS) quantity as the input. Availability resolves differently for base products, variation products, bundles, and product sets, often recursively. If you use Salesforce Omnichannel Inventory, it calculates individual product availability and sends the data to B2C Commerce."). # B2C Business Manager Cosmos UI: Overview Starting with Salesforce B2C Commerce Version 26.5, the default user interface is Salesforce Cosmos Design. The Cosmos UI includes interactive circular motifs, improved fonts and icons, inviting cues, and higher contrast colors. Cosmos also incorporates the App Switcher and provides customizable navigation and contextual insights. If you're using an earlier version of the Business Manager UI, you can update your UI to Cosmos or keep your existing version. ## B2C Business Manager Cosmos UI: Compatibility - Are existing Business Manager cartridges compatible with the Cosmos UI? Yes. All Business Manager cartridges are compatible with the Cosmos UI. - Can I switch to an earlier UI style? Yes. To switch to an earlier UI style, in Business Manager, select My **Profile Settings** | **Preferences** | **Preferred UI Style**. This setting applies only to the overall look of the UI for your user profile. It doesn't change the appearance of an instance-level feature page, which is controlled by the relevant feature switch. - Is the Modern Cosmos UI built on CRM Core App and Lightning Web Runtime (LWR)? No. B2C Commerce uses a unified design language to update elements and UI components with Salesforce CRM Core App and LWR, but it's built with different technology. ## B2C Business Manager Cosmos UI: Customizing Apps and Navigation - Do I need a special role or permission to see or use the Merchandising Template? No special permissions are required. However, the modules that you see are based on your assigned permissions. - Can I still open modules that aren’t in the Merchandising Template? Yes. You can use any module that you have permission to access. - Can I add any Business Manager module or only a predefined set to my custom apps? You can add all Business Manager modules that you have access to based on your permissions. - Can I have more than one custom app at the same time, for example, Merchandising and Administration? Yes. You can create multiple custom apps in Business Manager. - Can I give two custom apps the same name? No. Each custom Business Manager app requires a unique name within your user account. You can’t leave the name field blank. - Can I add multiple modules to a section at one time in a custom app? Yes. Next to the section, click the ellipsis and select Add pages. The window lists the modules that you have permission to access. Select the modules that you want to add. - Can I rename modules or sections in my custom apps? You can rename sections, but you can't rename modules. - Can I hide or remove modules I don't use? You can remove sections and their modules from the left navigation. You can also move modules between sections. - Can I add or move modules within Merchant Tools or an Administration app? No. You can add, move, or reorder pages and modules only within a custom Business Manager app. - Do my edits apply only to me or to everyone in my organization? Your changes in a custom app apply only to your user account and aren't available to other users. Your edits are specific to your instance and aren't shared between instances for the same user account. - How do I switch back to the full Merchant Tools or classic navigation experience? Open the App Launcher, and switch to Merchant Tools or Administration. - How do I undo or reset a custom app? To reset a custom app, delete its sections. - Can I rename or delete Merchant Tools or Administration apps? No. You can’t rename or delete these apps. You can only rename or delete custom Business Manager apps. - If I accidentally delete a custom Business Manager app, can I recover it? No. You can’t restore a deleted custom Business Manager app. - How do I start using the Commerce Agent Help Chat? To enable Commerce Agent Help Chat, see [Guide Your Users Through Commerce Tasks with Commerce Agent Help Chat](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_ai_agent_setup.htm&language=en_US). ## B2C Business Manager Cosmos UI: Support and Feedback - How do I report problems? Contact Salesforce Customer Support to report functional issues with the Business Manager UI. - Can I request enhancements or features? Yes. Request feature enhancements through the [IdeaExchange](https://ideas.salesforce.com/s/). #### See Also - [B2C Commerce Business Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_business_manager.htm&language=en_US) # B2C Commerce Accounts FAQ for B2C Commerce B2C Commerce uses a unified account management system, Account Manager. This topic answers common questions about setting up and accessing your account using Account Manager. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Q: Does Account Manager require multi-factor authentication? A: Yes, all Account Manager users require MFA to access B2C Commerce. You can find more details [here](https://help.salesforce.com/s/articleView?id=000364011&type=1&language=en_US) Q: Does Account Manager integrate with 3rd party Identity Providers? A: While Account Manager doesn’t integrate directly with 3rd party Identity Providers, you can configure Account Manager to do SSO/Federation using Salesforce Identity and Salesforce Identity can be configured to work with 3rd party Identity Providers. You can find more details [here](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_solution_kit.htm&language=en_US). Q: Does Account Manager support international characters? A: Yes. Account Manager supports international characters. Password and email values, however, can only be standard ASCII characters. All other non-digit input fields accept international characters beyond the standard ASCII character set. Q: I did not get a B2C Commerce email (or I accidentally deleted it), so how can I access my B2C Commerce Account? A: Contact your account administrator and request another copy of your B2C Commerce invitation email. If you’re an account administrator having issues accessing your account, open a Support case in the [Salesforce Help](https://help.salesforce.com/s/). Q: Who manages my account data? A: Everyone with an account can maintain their own personal account information. Each B2C Commerce client or partner organization is assigned an account administrator. The account administrator is responsible for managing accounts for all members of their organization. To change your roles, permissions, or membership, contact your account administrator. The account administrator can also add new user accounts to their organizations. Q: I tried to log in multiple times and when I tried to use the "Forgot Password" operation, I could not reset my password. A: If you try too many times to log in, your account gets locked temporarily for 30 minutes. For security reasons, the "Forgot Password" operation is disabled for locked accounts. Q: Does Account Manager support subaddressing? A: Yes, Account Manager supports subaddressing (also known as plus addressing) for account email addresses. Subaddressing allows you to use variations of a primary email address with a + sign and a tag. Emails sent to these subaddresses are delivered to the primary email address. If your email provider supports subaddresses, you can use them in Account Manager to create multiple user accounts for a single email inbox. You can also assign precise roles based on the subaddress. See [Add an Account to Your Organization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_invite_user_to_organization.htm&release=264.0.0&type=5 "As an Account Administrator, you can add user accounts to your organization."). # B2C Commerce and POS Catalog Unification Use catalog unification to manage product data in B2C Commerce and automatically sync updates to Salesforce Point of Sale. Turn on catalog unification to: - Reduce manual data entry by maintaining product information in one system. - Ensure consistent pricing, descriptions, and availability across online and physical stores. - Streamline merchandising workflows for omnichannel operations. Without catalog unification, you manually update product data in both B2C Commerce and Point of Sale, increasing the risk of data inconsistencies and pricing errors across channels. When you turn on catalog unification, B2C Commerce becomes the source for product information. Product data syncs automatically from your selected B2C Commerce catalog to Point of Sale according to the feed schedule you configure. After you turn on unification, product data in Point of Sale becomes read only. You manage all product changes in B2C Commerce, including product details, field mappings, and feed schedules. ## Prerequisites - A Point of Sale system on Hyperforce - The following feature switches enabled in B2C Commerce. See [Set Feature Switches (Toggles) in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_feature_switches.htm&release=264.0.0&type=5 "Salesforce B2C Commerce sometimes introduces new features that are disabled by default, because they can disrupt your existing sites.") for instructions: - Retail Cloud POS: Enables Point of Sale module - Unified Commerce: Enables catalog unification - Enable POS Feed Generation (CFT): Enables product feed from B2C Commerce to POS - Enable Multi-Locale Feed Generation (CFT): Enables generation of multi-language product data files - A connection between your B2C Commerce instance and a Salesforce org on which you have a Data Cloud license. B2C Commerce and POS use the connection to the Salesforce org to securely authenticate with each other. See [Connect Your B2C Commerce Instance to Salesforce](https://help.salesforce.com/s/articleView?id=cc.b2c_connected_comm_salesforce_connection.htm&release=264.0.0&type=5 "Create a trusted data exchange between your B2C Commerce instance and a Salesforce org. This connection gives you access to agentic and cross-cloud experiences, such as Shopper Agent, Merchant Agent, Shopper Profile Sync, and Shopper Notifications."). ## Limitations Catalog unification supports one site mapped to one Merchant Locale Region (MLR). Catalog unification doesn't support mapping multiple MLRs to a single site. - **[Link and Verify Site Catalog for B2C Commerce and POS Catalog Unification](https://help.salesforce.com/s/articleView?id=cc.b2c_pos_link_verify_catalog.htm&release=264.0.0&type=5)** To synchronize catalog data across B2C Commerce and Point of Sale, link each B2C Commerce site to its corresponding Point of Sale Merchant Locale Region (MLR), then verify the catalog configuration. - **[Sync Product Data for B2C Commerce and POS Catalog Unification](https://help.salesforce.com/s/articleView?id=cc.b2c_pos_sync_product_data.htm&release=264.0.0&type=5)** Choose how product data syncs from B2C Commerce to Point of Sale. Run a scheduled sync of your full catalog, and set up partial syncs that update only what changed. - **[Map Product Fields for B2C Commerce and POS Catalog Unification](https://help.salesforce.com/s/articleView?id=cc.b2c_pos_map_product_fields.htm&release=264.0.0&type=5)** To control how product data transfers during product feeds that support catalog unification, map B2C Commerce product fields to Point of Sale fields. Linking a site to a Merchant Locale Region (MLR) creates automatic field mappings between B2C Commerce and Point of Sale. You can edit some but not all default mappings. - **[View Unified Data in Point of Sale for B2C Commerce and POS Catalog Unification](https://help.salesforce.com/s/articleView?id=cc.b2c_pos_view_unified_data.htm&release=264.0.0&type=5)** After you map product fields between B2C Commerce and POS and schedule product feeds, confirm that product data syncs successfully in Point of Sale. # B2C Commerce API (Shopper Commerce API (SCAPI)) Hook Metrics SCAPI Hook metrics help website administrators and DevOps teams monitor and analyze the performance of SCAPI hooks. These metrics help identify issues with slow performance and failures of SCAPI hooks. SCAPI Hook metrics appear in the Metrics Dashboard with a delay of up to 10 minutes. Use filters to refine the metrics to a specific API. - `API Family`: Filter for all APIs belonging to an API family. - `API Name`: Filter for a single API. ## Hook Execution Time The Hook Execution Time metric measures the time in milliseconds the hook script takes to run. Use case: - Identify performance issues that a poorly implemented hook can cause. ## Hook Execution Errors The Hook Execution Errors metric measures the number of errors that occurred during the execution of SCAPI hooks. Use case: - Identify frequently failing hooks. Find additional SCAPI metrics in the Commerce Analytics Center (CCAC) SCAPI Dashboard. See [Troubleshooting Salesforce B2C Commerce Performance](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-troubleshooting-platform-performance.html) in the B2C Commerce Guide. # B2C Commerce API (Shopper Commerce API (SCAPI)) Metrics SCAPI metrics help website administrators and DevOps teams monitor and analyze the performance of API calls. They help identify issues with APIs, such as long-running API calls or bad cache hit rates. SCAPI metrics appear in the Metrics Dashboard with a delay of up to 10 minutes. Use filters to refine the metrics to a specific API. - `API Family`: Filter for all APIs belonging to an API family. - `API Name`: Filter for a single API. ## Request Latency The Request Latency metric measures the total time in milliseconds an API request takes to process on the SCAPI side, excluding external networking. Use case: - Identify long-running APIs and APIs with deteriorating performance. ## Request Count The Request Count measures the total number of requests made to B2C Commerce APIs. Use case: - Identify APIs that receive an unexpected traffic volume. An unusually high or low number of requests can signify a wrong or ineffective caller implementation, an outage of a calling system, or a DDoS attack. ## Cache Hit Rate The SCAPI cache hit rate metric measures the number of calls that have the response served from the SCAPI cache (HIT), not served from the cache (MISS), or that are constructed from parts that are served from the cache and parts that are not (PARTIAL). Use cases: - Identify which API calls are reliably served from cache and which calls can be improved to reach higher cache hit rates. Find additional SCAPI metrics in the Commerce Analytics Center (CCAC) SCAPI Dashboard. See [Troubleshooting Salesforce B2C Commerce Performance](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-troubleshooting-platform-performance.html) in the B2C Commerce Guide. # B2C Commerce APIs for Coupons Use the B2C Commerce API to add multiple coupon codes for the same coupon to a cart. The behavior controlled by this setting is enforced regardless of how the coupon is added to basket: B2C Commerce Script API, SHOP API, `AddCouponToBasket` or `AddCouponToBasket2` pipelets. Each unique code added to a basket results in a unique `CouponLineItem` being added. Conversely, every `CouponLineItem` represents a single coupon code. When an order is created, all coupon codes associated with the order are marked as `redeemed`. The logic for retrieving active customer promotions is the same as for other promotions. For example, `PromotionMgr.getActiveCustomerPromotions()` returns the same information whether a promotion is triggered in the cart by one coupon code or multiple. When using this coupon type with a [Choice of Bonus Product](https://help.salesforce.com/s/articleView?id=cc.b2c_implementing_choice_of_bonus_product_discount.htm&release=264.0.0&type=5 "There are two types of choice of bonus products in the Salesforce B2C Commerce application: rule-based and list-based. Both are configurable and require application customization.") `BonusDiscountLineItem` created by B2C Commerce is associated with the triggering coupon code. The triggering coupon code is determined by the position of the coupon code and the bonus discount line item within the basket. You can access this association via the B2C Commerce Script API, so that the storefront application can show that the bonus products relate to a specific coupon code. If a coupon code is removed from the cart, only the related bonus products are also removed from the cart. #### See Also - [Multi-Coupon Redemption in the Same B2C Commerce Order](https://help.salesforce.com/s/articleView?id=cc.b2c_multiple_coupons_in_a_basket.htm&language=en_US) # B2C Commerce Business Manager Use Business Manager to manage all aspects of your digital commerce operations. Business Manager gives merchandisers, admins, developers, and business users a unified interface for managing products, customers, orders, promotions, as well as admin and development-related settings. Business Manager organizes its capabilities into functional modules that you access from the left navigation or the App Launcher. Merchant Tools brings together the modules that merchandisers use day to day, including Products, Product Sets, Price Books, Content Assets, Libraries, Customers, and Ordering, so you can manage the full product lifecycle and shopper experience from one place. Administration brings together the modules for managing your organization and sites, including Site Preferences, Job History, Services, and user roles and permissions. Site Development gives developers the modules to deploy code, import and export data, and configure development-specific settings. To see Business Manager tasks in action, watch this [B2C Commerce Video Tutorials](https://help.salesforce.com/s/articleView?id=cc.b2c_videos.htm&release=264.0.0&type=5 "Watch instructional videos and step-by-step tutorials for B2C Commerce Business Manager. Learn how to rebuild search indexes, assign products to categories, create promotions and discounts, add products to the catalog, localize content in Page Designer, build dynamic customer groups, set visibility rules, manage content assets, use granular replication, and create Business Manager roles."). - **[Create a Custom B2C Business Manager App](https://help.salesforce.com/s/articleView?id=cc.b2c_create_a_custom_business_manager_app.htm&release=264.0.0&type=5)** Create a custom app in Business Manager with the modules and navigation tailored to how you work, either from the Merchandising template or from scratch. - **[Manage Sections and Modules in a Custom B2C Business Manager App](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_sections_and_modules_in_business_manager_app.htm&release=264.0.0&type=5)** Organize your custom Business Manager app by creating sections, adding modules, and dragging modules between sections to reorder them. - **[B2C Business Manager Cosmos UI: Overview](https://help.salesforce.com/s/articleView?id=cc.b2c_new_business_manager_ui.htm&release=264.0.0&type=5)** Starting with Salesforce B2C Commerce Version 26.5, the default user interface is Salesforce Cosmos Design. The Cosmos UI includes interactive circular motifs, improved fonts and icons, inviting cues, and higher contrast colors. # B2C Commerce CDP Connector This connector is no longer recommended. It's the legacy approach to a round-trip connection between B2C Commerce and Data 360. For information about this legacy connector, see [CDP Connector for B2C Commerce](https://resources.docs.salesforce.com/rel1/doc/en-us/static/pdf/B2CCDPConnector.pdf). For the latest connector options, see [Data 360 Connectors for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_datacloud_connectors.htm&type=5&language=en_US). # B2C Commerce Concepts and Terminology B2C Commerce provides the resources and processing for your ecommerce sites. You create and build your sites in your realm. A customer realm includes a primary instance group and a secondary instance group. ![Diagram of a B2C Commerce realm with primary and secondary instance groups](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_getting_started_slide_1.gif) ## Realm Typically, you have a single realm. The realm contains instances on which to develop, test, and deploy your online storefront. A B2C Commerce instance is an application infrastructure. It includes web servers, application servers, and database servers. You usually have six B2C Commerce instances: three or more sandbox instances for code development, and three instances for site staging, testing, and deployment. A Merchant can control their storefront online merchandising, configuration, and customization options. The instance administrator for the merchant has direct control over password management, user permissions, and stopping or starting instances within their realm. - Development instance: used for site configuration, data enrichment, and data import. - Staging instance: used to test your site before deployment. - Production instance: hosts the live site that customers use. Single and Multiple-Realm Configurations In most cases, you have a single realm for developing, staging, and deploying multiple sites with different branding or locales. The people managing the storefront site can be in different locations. Sites can share product catalogs or have different catalogs. If you have different lines of business or global teams that each have their own processes or business policies, consider maintaining multiple realms. You can also have separate realms if you have distinct organizations with separate back-end integrations, schedules, or other concerns that make it advantageous to let each team manage their sites independently. Sites in the same realm can share the product catalog for product data. Sites in different realms can't share data through the catalog structure. To share data, import it into different realms. Example: Let's say that you have sites with separate brands in Europe and the Pacific Rim. You can have a realm for the team managing the Pacific Rim sites and another realm for Europe. ![Diagram of single and multiple-realm configurations in B2C Commerce](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_getting_started_slide_2.gif) ## Primary Instance Group The primary instance group has three instances, which merchants use to add data, test code, and run live sites. A realm can have only one PIG per realm. ## Secondary Instance Group The secondary instance group (SIG) contains your sandbox instances. The minimum number of sandboxes in a SIG is 3, and the maximum is 47. ## Cloud The cloud is the underlying resources used to run your instances and live sites that Salesforce manages. You never interact directly with the cloud, but it’s the foundation that supports your site. # B2C Commerce Configurations Complete SSO configuration. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Follow the steps in [Identity Federation with Salesforce Identity in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_identity_federation.htm&type=5&language=en_US) to complete SSO Configuration - [Configure Account Manager for Identity Federation in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_configure_account_manager_for_identity_federation.htm&language=en_US) - [Activate the Connection Between Account Manager and Salesforce in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_activate_the_connection_between_account_manager_and_salesforce.htm&type=5&language=en_US) - [Install Account Manager in Your Salesforce Org in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_activate_the_connection_between_account_manager_and_salesforce.htm&language=en_US) - **[Set up and Integrate OKTA with Salesforce Identity](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_integrate_okta.htm&release=264.0.0&type=5)** This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Okta. - **[Configure an Azure AD Security Assertion Markup Language (SAML) Provider](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configure_azure.htm&release=264.0.0&type=5)** This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Azure IDP. - **[Configure Duo as an Authentication Provider](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configure_duo.htm&release=264.0.0&type=5)** This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Duo. #### See Also - [Account Manager Workflow](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_workflow.htm&release=264.0.0&type=5 "Learn how data flows through the configurations when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") - [Configurations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_design_considerations.htm&release=264.0.0&type=5 "Keep these design considerations in mind when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") # B2C Commerce Continuous Order Capture for Omnichannel Inventory Turn on Continuous Order Capture to accept customer orders and maintain business continuity even if connectivity to Omnichannel Inventory is lost. When the service is unavailable, Continuous Order Capture automatically transitions to an offline mode and accepts transactions without immediate inventory reservations. By independently reconciling pending reservations and providing real-time recovery alerts, this feature protects your storefront from downtime while minimizing overselling risks. Continuous Order Capture provides real-time monitoring of Omnichannel Inventory services. If a disruption occurs, the system maintains continuity through these steps: - Automatically switches to offline mode and accepts orders based on the last known inventory data. - Reduces the Available-To-Order (ATO) value after each order to prevent overselling. - Marks orders as Reservation Missing. A background job processes the offline orders, reserves inventory, reports any overselling, and removes the Reservation Missing state when successful. - For systems configured with Salesforce Order Management, B2C Commerce holds orders from flowing to Salesforce Order Management until Omnichannel Inventory recovers and inventory is reconciled. #### See Also - [Enable Continuous Order Capture for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.oci_enablecoc.htm&release=264.0.0&type=5 "To maintain business continuity, accept orders during Omnichannel Inventory service interruptions. Enabling this feature makes sure of uninterrupted sales but requires accepting the risk of potential overselling while Omnichannel Inventory for B2C Commerce is offline.") # B2C Commerce Data in Tableau Use your B2C Commerce data in Tableau to create dashboards and data views tailored to your specific business needs. The Salesforce B2C Commerce Cloud Connector exports your B2C Commerce analytics data to your Tableau instance. You can use Tableau's data visualization features to analyze your data without code. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Tableau offers numerous options and resources to visualize your data. We recommend taking advantage of the training resources available with your Tableau license to learn more about how to build, refine, and share your data visualizations with Tableau. For technical details and help, refer to the Tableau documentation. ## Salesforce B2C Commerce Cloud Connector Transform your commerce data into actionable insights with the Salesforce B2C Commerce Cloud Connector. Actionable insights help optimize customer experiences and accelerate revenue growth. This Java Database Connectivity (JDBC)-based connector provides access to your ecommerce data and the customer behavior insights that are stored in B2C Commerce. Direct connectivity to your commerce platform enables analysis of sales performance, customer journeys, and product engagement across digital touchpoints. To download B2C Commerce Cloud connector from Tableau Exchange and set it up, see [Salesforce Commerce Cloud Intelligence](https://exchange.tableau.com/products/1086). ## Common Data Terms To get started with B2C Commerce data in Tableau, get familiar with some of the common data terminology used in B2C Commerce and Tableau. - **Role**–A set of properties assigned to a field in Tableau. - **Dimension**–A qualitative field used to segment and expose the details in your data. For example, you can group the measure Gross Merchandise Value (GMV) by the dimensions customer type and date. The value of a measure depends on the context of the dimensions. - **Measure**–A quantitative field used to show metrics or numerical data. A measure is considered a dependent property because a measure’s meaning depends on which dimensions are selected in Tableau, and its value depends on the context of the dimensions. Tableau refers to a measure’s meaning as granularity. B2C Commerce measures are either fully additive or semi-additive. A fully additive measure can be summed for dimensions used with the measure. Examples of aggregation functions that you can apply include sum, count, and average. A semi-additive measure is the result of a mathematical calculation or aggregation. It is summable, but the sums can differ depending on the included dimensions. - **Aggregate**–Specifies how data is combined. The amount of data aggregation in a Tableau chart affects how you evaluate the data and the discoveries that you can make. Aggregating semi-additive measures can generate erroneous results. ## B2C Commerce Data Aggregations The B2C Commerce Tableau Connector is a web data connector that groups your B2C Commerce data in subject areas. Each subject area consists of dimensions and measures derived from raw B2C Commerce data. When you import your B2C Commerce data into Tableau, the connector applies the appropriate aggregation function to represent your data in Tableau. You can create meaningful data views by further aggregating your measures with the imported dimensions. A data dashboard is a convenient way to show data from the same underlying subject area in easy-to-read charts and tables. Each dashboard element depends on a different aggregation of your data. # B2C Commerce Data Subject Areas The Tableau connector provides access to data from the B2C Commerce subject areas. You can select a data subject area data visualization in Tableau. The subject areas are the same analytics data used to generate B2C Commerce Reports & Dashboards. - **[Promotion Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_data_subject_areas.htm&release=264.0.0&type=5)** Promotion Insights—Evaluate the performance of your B2C Commerce promotions. For example, identify your top-three promotions by customer registration type, look for correlations with promotion classes and source codes, or visualize the link between promotion class and revenue. - **[Sales and Product Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_sales_product_data_subject_areas.htm&release=264.0.0&type=5)** Use the B2C Commerce data dimensions and measures to analyze order insights and Product insights. - **[Search Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_search_data_subject_areas.htm&release=264.0.0&type=5)** Search Insights—Analyze the search terms customers use on your B2C Commerce storefront. For example, review the most used search terms and the frequency with which customers use the terms. - **[Technical Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_technical_data_subject_areas.htm&release=264.0.0&type=5)** Use the B2C Commerce data dimensions and measures to evaluate the performance of controller requests, included controller requests, and Open Commerce API (OCAPI) requests. - **[Traffic Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_traffic_data_subject_areas.htm&release=264.0.0&type=5)** Visits analyze data about the visitors to your B2C Commerce site. For example, review the number of site visits, the visits by device, and visit duration. # B2C Commerce Domain Data Mappings When ingesting B2C Commerce domain data using the Apache Iceberg connector, you must manually map these source objects to Data Model Objects (DMOs) in Data 360. Unlike bundle-based ingestion, the Apache Iceberg connector doesn't automatically map source objects to DMOs. After you create a data stream for each source object, then configure the mappings manually in Data 360. The following table lists the B2C Commerce source objects available for ingestion and provides links to mapping reference documentation for each object. | Source Object | Description | Mapping Reference | | --- | --- | --- | | Bundles Product | Products that customers can purchase as a group. Bundle products can contain independent inventory records for the bundle and the products that make up the bundle. | [Bundles Product Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_bundlesproduct.htm) | | Customer Profile | Customer profiles for registered customers. | [Customer Profile Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_customerprofile.htm) | | Goods Product | Hard goods that customers can purchase. | [Goods Product Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_goodproduct.htm) | | Master Product | A container for some types of products. Master products don't have inventory records. | [Master Product Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_masterproduct.htm) | | Product Catalog | Categories and products used to organize merchandise. | [Product Catalog Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_productcatalog.htm) | | Product Category | Categories of products. | [Product Category Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_productcategory.htm) | | Product Category Product | The association between products and their categories. | [Product Category Product Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_productcategoryproduct.htm) | | Sales Order | An order placed by a customer. | [Sales Order Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_salesorder.htm) | | Sales Order Customer | A customer making an order. | [Sales Order Customer Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_salesorder_customer.htm) | | Sales Order Product | Products included in an order. | [Sales Order Product Mapping](https://developer.salesforce.com/docs/atlas.en-us.c360a_api.meta/c360a_api/c360dm_b2ccommerce_salesorder_product.htm) | | Custom Attributes | Custom attributes for products and customer profiles. Custom attribute tables contain rows that apply to their associated entities. Data Cloud doesn't support or ingest custom attributes with Image, HTML, or Password data types. | Map to custom DMOs based on your attribute definitions. | # B2C Commerce Dynamic Imaging Service Use the B2C Commerce Dynamic Imaging Service when storefront code requests a specific image size, crop, or format, and assign the source image in Business Manager. Transformation details are in the B2C Commerce developer guide. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Assign the source image in [Assign Images to Products in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_managing_images.htm&release=264.0.0&type=5 "In B2C Commerce, attach an image to a product so the storefront can show it. Assign images on the base product, and a variation product uses those images."). Storefront code requests the size, crop, or format. See [Dynamic Imaging Service](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dynamic-imaging-service.html) in the B2C Commerce developer guide. See Also - [URL Structure and Order of Operations](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dynamic-imaging-url-structure.html) - [AVIF and WebP](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dynamic-imaging-avif-webp.html) - [Community Product Image Wrapper](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dynamic-imaging-community-wrapper.html) - [Troubleshooting and Migration](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dynamic-imaging-troubleshooting.html) # B2C Commerce Einstein and Data B2C Commerce Einstein needs input data that it gathers from shopper activity. Einstein uses this data for benchmarking and analysis to make intelligent data-driven personalization possible. Using gathered data, Einstein can: - Personalize recommendations. - Personalize search results and category grid sorting. - Identify new search synonyms. - Analyze shopper baskets to identify products commonly purchased together. - Provide shoppers with type-ahead search guidance, recent personal searches, and popular storefront searches. To provide this level of shopper personalization, Einstein gathers and uses data from three sources:
Data source Description
Catalog

To collect product information from your catalog, run a catalog feed against your production instance.

Orders

To collect order information from your storefront, run an order feed against your production instance.

Clickstream

Clickstream data is automatically collected from your site in real-time using pixel tracking; you don't perform any action to collect this data.

The following activities are automatically tracked:

  • Product View
  • Add To Cart
  • Finish Checkout
  • View Recommendation
B2C Commerce Einstein uses machine-learning models to analyze the collected data. - **[Einstein Data Usage by Feature](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_data_usage_features.htm&release=264.0.0&type=5)** As an Einstein customer, it is important for you to know what data is being used in B2C Commerce and B2B Commerce products. This table lists the data that is used by each feature. # B2C Commerce Einstein Consent Management With every click, Einstein collects shopper browsing events and updates the shopper’s predictive model in real time to calculate the most relevant experiences for the shopper. - **[How Consent Management Works](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_consent_mgmt_how.htm&release=264.0.0&type=5)** Einstein uses a specific do-not-track cookie to limit tracking for B2C Commerce shoppers who prefer to not be tracked. - **[B2C Commerce Einstein Do-Not-Track Impact](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_dnt_feature_impact.htm&release=264.0.0&type=5)** When shoppers don’t consent to tracking, how Einstein functionality is affected can vary, depending on the feature. # B2C Commerce Einstein Do-Not-Track Impact When shoppers don’t consent to tracking, how Einstein functionality is affected can vary, depending on the feature. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Overall functionality impact relates to the number of shoppers who opt out of tracking. This table describes the impact to using do-not-track (DNT) cookies for Einstein product recommendations.

Recommender Strategies

Impact

Result

Recent top selling

Works

You can still serve recommendations to the shopper, but the shopper’s purchase activity isn’t used to improve strategy recommendations.

Shoppers who viewed also viewed

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.

Shoppers who viewed ultimately bought

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.

Shoppers who bought also bought

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.

Product affinity algorithm

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.

Recent most viewed

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.
Complete the Set Works Complete the Set recommendations function as expected. Do-not-track cookies have no impact on Complete the Set recommendations, because they aren't personalized to individual shopper activities.

Recently viewed

Doesn’t work

Do-Not-Track disables activity tracking, so you can’t follow a shopper’s recently viewed activity.

Real-time personalized

Doesn’t work

Do-Not-Track disables activity tracking, so you can’t follow a shopper's behavior and personalize recommendations.

This table describes the general impact for Einstein Commerce Insights and Einstein Search Dictionaries.
Einstein Commerce InsightsEinstein Commerce Insights still displays results, excluding the data of shoppers who have opted out.
Einstein Search DictionariesEinstein Search Dictionaries continues to work. Search queries from a Do-Not-Track shopper aren’t used to suggest recommendations.
This table describes the impact to using DNT cookies for Einstein Predictive Sort. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When shoppers don’t consent to tracking, a Predictive Sort score isn’t calculated.

Configuration

Impact

Result

Predictive Sort as only Attribute

Doesn’t work

If a merchant uses only Predictive Sort as a sorting rule, the fallback sorting order is equivalent to product indexing order in the search index. The same sorting order occurs when there are no sorting rules on a page.

Predictive Sort as one of several attributes in the sorting rule

Works

The Predictive Sort attribute is effectively ignored.

Predictive Sort as part of a Dynamic Attribute

Works

The calculation occurs as normal but the Predictive Sort score is omitted.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note To mitigate do-not-track risks for Predictive Sort, best practice is to include Predictive Sort in an existing dynamic sorting rule. This method includes the sorting rule as a combination of different attributes. For example, the sorting rule is weighted with data. For example, this data can include text relevancy on keyword search results pages, or active data on category grid pages. This table describes the impact to using DNT cookies for Einstein Search Recommendations.

Type of Recommendation

Impact

Result

Popular searches

Works

You can still serve recommendations to the shopper, but the shopper’s activity isn’t used to improve strategy recommendations.

Recent searches

Doesn’t work

Do-Not-Track disables activity tracking, so you can’t follow a shopper’s recently viewed activity.

Suggested searches

Doesn’t work

Depends on recent searches.

# B2C Commerce Einstein Insights B2C Commerce Einstein Commerce Insights reports capture shopper, order, and product data and display products that are most commonly purchased together. - **[View B2C Commerce Einstein Insights](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_insight_reports.htm&release=264.0.0&type=5)** Use B2C Commerce Einstein Commerce Insights to perform shopper basket analysis. - **[Review a Product in the B2C Commerce Einstein Insights Dashboard](https://help.salesforce.com/s/articleView?id=cc.b2c_reading_insight_reports.htm&release=264.0.0&type=5)** View basket and product details from the Commerce Insights Dashboard. # B2C Commerce Einstein Predictive Sort Predictive Sort combines the existing B2C Commerce B2C Commerce Sorting Rule approach with the power of B2C Commerce Einstein. - **[How Predictive Sort Works in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_predictive_sort_how_works.htm&release=264.0.0&type=5)** Predictive Sort calculates the affinity of an individual customer to your products. - **[Predictive Sort Performance Considerations in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_predictive_sort_perf_considerations.htm&release=264.0.0&type=5)** Personalization services can impact template rendering and search request performance. - **[Configure Predictive Sort in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_predictive_sort.htm&release=264.0.0&type=5)** Predictive Sort delivers a sort order based on the specific shopper's real-time browse behavior on the site. # B2C Commerce Einstein Privacy and Consent When you set up B2C Commerce Einstein, set default privacy preferences and account for shopper consent. - **[Set B2C Commerce Einstein Privacy Preferences](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_set_privacy_preferences.htm&release=264.0.0&type=5)** In Business Manager, configure the default setting for tracking-related privacy preferences. - **[B2C Commerce Einstein Consent Management](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_consent_management.htm&release=264.0.0&type=5)** With every click, Einstein collects shopper browsing events and updates the shopper’s predictive model in real time to calculate the most relevant experiences for the shopper. # B2C Commerce Einstein Product Recommendations Use Einstein Product Recommendations to create and manage recommenders and assign strategies that predict the most relevant products to promote to individual shoppers. - **[Implementing B2C Commerce Einstein Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_implement_prod_recs.htm&release=264.0.0&type=5)** Implementing B2C Commerce Einstein Product recommendations requires configuring, running, and modifying various components. Different roles perform each of these tasks. - **[B2C Commerce Einstein Recommenders](https://help.salesforce.com/s/articleView?id=cc.b2c_recommenders.htm&release=264.0.0&type=5)** B2C Commerce Einstein has different types of product recommendations that you can place on specific pages. - **[B2C Commerce Einstein Recommender Strategies](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_strategies.htm&release=264.0.0&type=5)** After determining which recommenders you plan to use, specify recommendation strategies. - **[B2C Commerce Einstein Recommenders and Available Strategies](https://help.salesforce.com/s/articleView?id=cc.b2c_recommenders_strategies_pairing.htm&release=264.0.0&type=5)** Which strategies are available depends on the type of recommender that you want to use. - **[B2C Commerce Einstein Recommender Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_rules.htm&release=264.0.0&type=5)** Rules enable you to manipulate a list of recommended product IDs before the list is passed to the storefront at run time. Each rule contains an action, a field, and one or more field values (attributes). - **[Configure a B2C Commerce Einstein Recommender for Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_config_product_recommendation.htm&release=264.0.0&type=5)** When you create a product recommender, you specify the type of recommendation and the strategy you want to use. You can also add rules to fine-tune the recommendation. - **[Preview Recommender Output in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_preview_recommender_output.htm&release=264.0.0&type=5)** After adding or changing a recommender, preview the recommender output to see how the resulting list of recommendations appears to shoppers. - **[Manage Complete the Set Categories in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_cts_categories.htm&release=264.0.0&type=5)** Use the Review Sets tab to manage all Einstein Complete the Set categories individually or use bulk enable or disable functions. - **[Configuring Content Slots for Product Recommendations in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_slots_for_predictive_recommendations.htm&release=264.0.0&type=5)** Use content slots to show product recommendations in your storefront. - **[Developer Considerations for B2C Commerce Einstein Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_dev_considerations_for_prod_recs.htm&release=264.0.0&type=5)** Developer-focused considerations when configuring B2C Commerce Einstein product recommendations. # B2C Commerce Einstein Recommendation Validator The Einstein Recommendation Validator is a Chrome extension that validates and debugs B2C Commerce Einstein recommendations and sorting rules in your marketplace. Use this extension to verify Einstein site activity tracking and recommendations. - **[Install the Recommendation Validator for B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_install_validator.htm&release=264.0.0&type=5)** The B2C Commerce Einstein Recommendation Validator helps with preliminary validation of Salesforce B2C Commerce Einstein integration. - **[Use the B2C Commerce Einstein Recommendation Validator](https://help.salesforce.com/s/articleView?id=cc.b2c_use_validator.htm&release=264.0.0&type=5)** After installation, the Recommendation Validator runs and you can use it right away. - **[Validator Responses in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_validator_responses.htm&release=264.0.0&type=5)** When you navigate to a site that's using B2C Commerce Einstein features, Validator instantly validates recommendation activities and sorting rules. The tool then provides particular responses, based on the activity it registers. - **[Einstein Activity Tracking: Required Fields](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_activity_required_fields.htm&release=264.0.0&type=5)** When implementing Einstein activity tracking for hybrid or custom B2C Commerce storefronts, include specific fields for each activity type. This topic lists the required fields that Einstein APIs expect for proper data collection and attribution. - **[Common Recommendation Validator Errors in Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_common_validator_errors.htm&release=264.0.0&type=5)** Here are some of the common errors that sometimes occur, and how to fix them, when using the Recommendation Validator in B2C Commerce Einstein. # B2C Commerce Einstein Recommender Rules Rules enable you to manipulate a list of recommended product IDs before the list is passed to the storefront at run time. Each rule contains an action, a field, and one or more field values (attributes). - **[Create and Apply Rules in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_create_apply_rules.htm&release=264.0.0&type=5)** Rules enable you to manipulate the list of recommended product IDs before passing the list to the storefront at run time. - **[Rule Actions in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_rule_actions.htm&release=264.0.0&type=5)** Rule actions define how B2C Commerce Einstein Recommenders show, hide, or move matching items within a list. - **[Rule Fields in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_rule_fields.htm&release=264.0.0&type=5)** You use rule fields to define rules. Some rule fields appear only for certain recommenders, and other rule fields appear for all recommenders. - **[Rule Field Values in B2C Commerce Einstein](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_rule_field_values.htm&release=264.0.0&type=5)** When creating rules, you select values for certain rule fields. # B2C Commerce Einstein Recommender Strategies After determining which recommenders you plan to use, specify recommendation strategies. _Strategies_ represent different approaches―different algorithms―for generating lists of recommendations (product IDs). When generating a list of recommended product IDs, B2C Commerce Einstein employs one or more of the strategies listed in the table. The best practice is to select at least a primary strategy and a secondary (fallback) strategy. But select up to three strategies. Strategies apply in the order that you select them. In the rare case the first strategy doesn't return recommendations or has insufficient data to produce high-quality results, the second strategy backfills to send recommendations to the page. The order of strategies matters. The first strategy listed takes priority over the second strategy, which the system uses only if the first strategy fails to generate enough recommendations. The second strategy takes priority over the third strategy, and so on. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Configuring too many restrictive rules can constrain the recommender results. This table lists the supported strategies, a brief description, and the recommender type for which the strategy is available.
Strategy Description Available for recommender types
Customer recently viewed items

Generates recommendations based on items that the customer recently viewed.

Recently viewed
Customers who viewed also viewed

Generates recommendations by analyzing the viewing behavior of other customers who viewed the same product.

Product to Product
Customers who viewed ultimately bought

Generates recommendations by analyzing the purchasing behavior of other customers who viewed the same product.

Product to Product
Customers who bought also bought

Generates recommendations by analyzing the purchasing behavior of other customers who bought the same product.

Product to Product
Recent top sellers

Generates recommendations by analyzing the revenue for products recently purchased by other customers.

This strategy provides a selectable timespan with the following options:

  • Realtime: Identical to the pre-existing Recent Top-Selling Products strategy model, this strategy provides real-time approximation for top revenue-producing products, aggregated by user geographical location and device. It uses a dynamically calculated time window (on average, a rolling 7 days) to ensure sufficient data to produce quality recommendations.
  • 7 Days: This strategy uses a rolling, 7-day time window that updates daily to return recommendations that are similar to top revenue-producing products found in your weekly sales reporting.
  • 30 Days: This strategy uses a rolling, 30-day time window that updates daily to return recommendations that are similar to top revenue-producing products found in your weekly sales reporting.
Note
Note For categories with low sales, some situations can result in recommendations not showing when using either the 7-Day or 30-Day options.
  • Products in a category
  • Products in all categories
Recent most viewed

Generates recommendations by analyzing which products other customers recently viewed.

Note
Note The maximum number of recent most-viewed products is 10.
  • Products in a category
  • Products in all categories
Product affinity algorithm

Generates recommendations by analyzing the product's similarity to other products.

Product to Product
Real-time personalized

Generates recommendations by analyzing the customer's current and past viewing and purchasing behavior.

  • Products to Product
  • Products in a category
  • Products in all categories
Salesforce recommends that you specify at least two strategies, so that if the first strategy fails to return enough recommendations, the system can use the second strategy. Specifying at least two strategies is best practice. However, the _Recently viewed_ recommender type is an exception, as it applies only one strategy. We recommend using the first strategy based on an individual’s real-time behavior. This table shows strategies that use individual customer experience and history blended with the entire customer base of your site. | Strategy | Anchor Expected | Result | | --- | --- | --- | | Product affinity algorithm | product-id | Einstein uses model-generated affinity recommendations based on the purchase history of the entire customer base. | | Real-time personalized | None | Einstein returns the highest ranked products for a specific user based on the user’s recent browsing history. The most recent four products that the user is most likely to be interested in viewing next appear. | When choosing a second strategy, choose one that applies to your site's entire customer base. Then use other strategies based on an individual's history. Using multiple strategies provides a more personalized experience for both new and existing customers. This table shows strategies that use the entire customer base of your site.
Strategy Anchor Expected Result
Customers who viewed also viewed product-id View-to-view correlations
Customers who viewed ultimately bought product-id View-to-buy correlations
Customers who bought also bought product-id Buy-to-buy correlations
Recent top sellers category-id or none

Selectable timespan for the products-in-all-categories and products-in-a-category recommender types. Choose from the following options:

  • Realtime: Identical to the pre-existing Recent Top-Selling Products strategy model, this strategy provides real-time approximation for top revenue-producing products, aggregated by user geographical location and device. It uses a dynamically calculated time window (on average, a rolling 7 days) to ensure sufficient data to produce quality recommendations.
  • 7 Days: This strategy uses a rolling, 7-day time window that updates daily to return recommendations that are similar to top revenue-producing products found in your weekly sales reporting.
  • 30 Days: This strategy uses a rolling, 30-day time window that updates daily to return recommendations that are similar to top revenue-producing products found in your weekly sales reporting.
Note
Note For categories with low sales, some situations can result in recommendations not displaying when using either the 7-Day or 30-Day options.
Recent most viewed category-id / none

Einstein recommends the most viewed products within a specified category or from all categories when a category isn’t specified.

Maximum number of recent most-viewed products is 10.

# B2C Commerce Einstein Recommender Types A recommender type decides whether an anchor is required, what the anchor is, and determines the general use cases available for applying a recommender on your storefront. Each recommender configuration is one of five recommender types. The recommender type determines which _strategies_ are available when you configure the recommender. An anchor provides context about the page where the recommender applies to Einstein. As an example, a recommender type of _Product to Product_ needs the context of the product id of the page being viewed sent to Einstein. Einstein uses this context to potentially recommend products based on the product that the shopper is viewing.
Recommender Type Anchor Description
Product to Product product id

Given a specific product, analyze the product's similarity to other products or the viewing or purchasing behavior of other customers to generate recommendations.

Storefronts typically place product-to-product recommendations on the:

  • Product details page (PDP)
  • Cart
  • Mini-cart
  • Wish-list
  • Checkout
Note
Note Deploy this recommender type only on pages that have product anchors (PDPs, Cart). Don’t deploy this recommender on pages that have category anchors (category pages), or on pages that have no anchors at all (home page, My Account page). If a page doesn’t have product anchors, the recommendations don’t generate and appear on the storefront.
Products in All Categories none

Generate recommendations across all categories.

Storefronts typically place products-in-all-categories recommendations on the:

  • Home page
  • My Account page
  • My Recommendations page
  • Cart
  • Checkout
  • Wishlist
Note
Note Because this recommender type requires no anchor, you can deploy it on any page, including the home page, My Account page, cart, checkout, and wishlist. The recommendations aren’t personalized to the product or category that the shopper is currently viewing, so they render the same regardless of page context. On pages where a product or category anchor is available (such as a product details page or a cart that contains products), use an anchor-based recommender like Product to Product or Complete the Set for more relevant results.
Products in a Category category id

Given a specific category, generate recommendations for products that are in the category.

Storefronts typically place products-in-a-category recommendations on the category page.

Note
Note Deploy this recommender type only on pages that have category anchors (category pages). Don’t deploy on pages that have product anchors (PDPs, Cart), or on pages that have no anchors (home page, My Account page).
Recently Viewed none

Generate recommendations by simply including products recently viewed by the customer.

Storefronts can place recently viewed recommendations on any page.

Complete the Set product id Recommends complementary items for apparel sets, home furnishings, and cosmetic and beauty products.
# B2C Commerce Einstein Recommenders B2C Commerce Einstein has different types of product recommendations that you can place on specific pages. - **[Configure B2C Commerce Einstein Recommenders](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_recommenders.htm&release=264.0.0&type=5)** After deploying B2C Commerce Einstein, product details page (pdp) and recently viewed recommenders are available out of the box. Merchants also can create custom recommenders, leveraging Einstein strategies and rules. - **[B2C Commerce Einstein Recommender Types](https://help.salesforce.com/s/articleView?id=cc.b2c_recommender_types.htm&release=264.0.0&type=5)** A recommender type decides whether an anchor is required, what the anchor is, and determines the general use cases available for applying a recommender on your storefront. - **[Where to Place B2C Commerce Einstein Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_recommenders_where_to_place.htm&release=264.0.0&type=5)** Where you place recommendations affects the shopping experience. Some recommenders work only on specific pages, and some work on any page. # B2C Commerce Einstein Recommenders and Available Strategies Which strategies are available depends on the type of recommender that you want to use. Consider these recommender types and their strategies when deciding where to place a recommendation.
Type Anchor Expected Typical Placement Available Strategies Default Primary and Secondary Strategies
Product to Product product-id Product details pages (PDPs)
  • Product affinity algorithm
  • Customers who viewed also viewed
  • Customers who viewed ultimately bought
  • Customers who bought also bought
  • Real-time personalized
  1. Customers who viewed also viewed
  2. Product affinity algorithm
Products in All Categories None
  • Home page
  • My Account page
  • My Recommendations page
  • Footer
  • Cart
  • Mini-cart
  • Wishlist
  • Checkout
  • Recent top sellers
  • Recent most viewed
  • Real-time personalized
  1. Real-time personalized
  2. Recent top sellers
Products in a Category category-id Category pages
  • Recent top sellers
  • Recent most viewed
  • Real-time personalized
  1. Real-time personalized
  2. Recent top sellers
Recently Viewed None Any page Recently viewed None
Complete the Set product-id
  • PDPs
  • Cart
Complete the Set None
# B2C Commerce Einstein Search Dictionaries When enabled, Einstein Search Dictionaries consumes all site searches and search-related settings, and surfaces terms that shoppers search for but aren’t in a dictionary. - **[How B2C Commerce Einstein Search Dictionaries Works](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_search_dictionaries_how_work.htm&release=264.0.0&type=5)** Einstein Search Dictionaries automatically detects relationships between search terms and recommends which synonym list to assign them to, driving better search experiences for the shopper. - **[Share B2C Commerce Einstein Data](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_data_privacy.htm&release=264.0.0&type=5)** B2C Commerce Einstein Search Dictionaries is the only Einstein feature that enables you to share feature-specific data across the B2C Commerce merchant community. - **[Manage B2C Commerce Einstein Dictionary Entries](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_einstein_dictionary.htm&release=264.0.0&type=5)** Accept, decline, or edit recommendations in Einstein Dictionaries synonym groups. # B2C Commerce Einstein Search Recommendations B2C Commerce Einstein can improve searches with type-ahead guidance. This feature provides AI-driven personalized search recommendations to shoppers in real time. Enabling Einstein Search Recommendations provides shoppers with Einstein-generated, personalized auto-correction and term completion. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Recent search and popular search functions aren’t directly affected when enabling the Einstein Search Recommendations feature. These searches require additional storefront development efforts. For more information, see the _getRecentSearchPhrases_ and _getPopularSearchPhrases_ method details in the [Class SuggestModel](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_suggest_SuggestModel.html) API or the [Search Suggestions Shopper Commerce API (SCAPI) endpoint](https://developer.salesforce.com/docs/commerce/commerce-api/references/shopper-search?meta=getSearchSuggestions) documentation. To enable Einstein Search Recommendations: 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select**Merchant Tools** | **site** | **Search** | **Search Preferences**. 2. Select (check) **Einstein Search Recommendations**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When Einstein Search Recommendations generate search phrase suggestions, the suggestions aren’t affected by the suggestion term blocklist. In addition, Einstein Search Recommendations aren’t guaranteed to yield results. # B2C Commerce Einstein Self-Service Support The B2C Commerce Einstein Status Dashboard provides catalog and order deployment status and the ability to verify the quality of your data. The dashboard also displays any errors and warnings encountered by B2C Commerce Einstein about catalogs, orders, recommendations, or deployment. - **[Common Error Messages](https://help.salesforce.com/s/articleView?id=cc.b2c_self_service_error_messages.htm&release=264.0.0&type=5)** Error messages indicate that something is blocking the successful deployment or automation of B2C Commerce Einstein. - **[Warning Messages](https://help.salesforce.com/s/articleView?id=cc.b2c_self_service_warning_messages.htm&release=264.0.0&type=5)** Warning messages indicate that there’s an issue with the B2C Commerce Einstein deployment or automation. # B2C Commerce Einstein Status Dashboard Use the Einstein Status Dashboard to schedule and run storefront catalog and order feeds, enabling the activation of B2C Commerce Einstein features on the site. - **[B2C Commerce Einstein and Data](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_and_data.htm&release=264.0.0&type=5)** B2C Commerce Einstein needs input data that it gathers from shopper activity. Einstein uses this data for benchmarking and analysis to make intelligent data-driven personalization possible. - **[Configure Catalog and Order Feeds for B2C Commerce Einstein Deployment](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_einstein_deployment.htm&release=264.0.0&type=5)** Configure, schedule, and deploy catalog and order data feeds to Einstein. - **[Monitor the B2C Commerce Einstein Status Dashboard](https://help.salesforce.com/s/articleView?id=cc.b2c_monitor_einstein_deployment_status.htm&release=264.0.0&type=5)** Check the status of your catalog and order deployments and verify the quality of your data. - **[B2C Commerce Einstein Self-Service Support](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_self_service_support.htm&release=264.0.0&type=5)** The B2C Commerce Einstein Status Dashboard provides catalog and order deployment status and the ability to verify the quality of your data. The dashboard also displays any errors and warnings encountered by B2C Commerce Einstein about catalogs, orders, recommendations, or deployment. # B2C Commerce Event Types Reference Find the event you want to subscribe to. Each row links to the page that documents the headers, payload, and example for that event. The B2C Commerce eventing framework supports replication events, a shopper registered event, and an order placed event. Custom events that you declare in a cartridge are documented separately in [Custom Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_custom.htm&release=264.0.0&type=5 "Declare your own B2C Commerce event types in a cartridge and send them from script. Custom events appear in Business Manager with platform events, and you route them to the same connectors."). Use this table to find a platform event, then go to the linked page for its payload reference. | Event ID | Family | Available in | Details | | --- | --- | --- | --- | | `sf.cc.replication.completed` | Process-level replication | 26.6 | [Replication Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication.htm&release=264.0.0&type=5 "Process-level replication events fire when a B2C Commerce replication process reaches a terminal state. Use them to track when bulk replication jobs complete or fail.") | | `sf.cc.replication.failed` | Process-level replication | 26.6 | [Replication Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication.htm&release=264.0.0&type=5 "Process-level replication events fire when a B2C Commerce replication process reaches a terminal state. Use them to track when bulk replication jobs complete or fail.") | | `sf.cc.replication.granular.completed` | Granular replication | 26.7 | [Granular Replication Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication_granular.htm&release=264.0.0&type=5 "The B2C Commerce system fires granular replication events when the granular replication job completes, partially fails, or fully fails. Granular replication operates at the per-object level (products, price tables, content assets) rather than the bulk replication-process level, so its events report which individual object IDs succeeded and which failed.") | | `sf.cc.replication.granular.failed` | Granular replication | 26.7 | [Granular Replication Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication_granular.htm&release=264.0.0&type=5 "The B2C Commerce system fires granular replication events when the granular replication job completes, partially fails, or fully fails. Granular replication operates at the per-object level (products, price tables, content assets) rather than the bulk replication-process level, so its events report which individual object IDs succeeded and which failed.") | | `sf.cc.replication.granular.incomplete` | Granular replication | 26.7 | [Granular Replication Events](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication_granular.htm&release=264.0.0&type=5 "The B2C Commerce system fires granular replication events when the granular replication job completes, partially fails, or fully fails. Granular replication operates at the per-object level (products, price tables, content assets) rather than the bulk replication-process level, so its events report which individual object IDs succeeded and which failed.") | | `sf.cc.shopper.registered` | Shopper | 26.7 | [Shopper Registered Event](https://help.salesforce.com/s/articleView?id=cc.b2c_event_shopper_registered.htm&release=264.0.0&type=5 "The system fires a B2C Commerce shopper registered event when a new customer profile is successfully created and committed. This event contains core customer information needed by external systems. Unlike replication events, which operate at the organization level, the shopper registered event is site-specific, so you can register and route it independently per site.") | | `sf.cc.order.placed` | Order | 26.10 | [Order Placed Event](https://help.salesforce.com/s/articleView?id=cc.b2c_event_order_placed.htm&release=264.0.0&type=5 "B2C Commerce fires an order placed event when an order reaches a placed state and the placement transaction commits. The webhook body is the order representation from the Orders API, and you can route the event by site.") | ## Shared references The following pages apply to multiple event types. - [Common HTTP Headers](https://help.salesforce.com/s/articleView?id=cc.b2c_event_common_headers.htm&release=264.0.0&type=5 "Every B2C Commerce event includes the same set of standard x-sf-cc-* headers, so your connector can identify and correlate events consistently regardless of the event type.") — the standard `x-sf-cc-*` headers included with every event. - [Replication Group IDs](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication_groups.htm&release=264.0.0&type=5 "Replication events carry one or more B2C Commerce replication groups in their payload. Each replication group identifies a unit of data that participated in the replication. Use this page to look up what a given group ID covers.") — the organization, site, and repository group identifiers used in replication event payloads. - [Replication Error States](https://help.salesforce.com/s/articleView?id=cc.b2c_event_replication_error_states.htm&release=264.0.0&type=5 "Failed B2C Commerce process-level replication events (sf.cc.replication.failed) include an errorState field with a machine-readable code that identifies the failure. Use this page to look up what an error state means.") — the `errorState` values reported by failed process-level replication events. # B2C Commerce Hyperforce FAQ Salesforce B2C Commerce infrastructure is getting an upgrade. It’s migrating from Salesforce first-party data centers to Salesforce Hyperforce, the next-generation cloud infrastructure platform powered by public cloud technologies. This effort is a multi-year journey as most other clouds at Salesforce are also‌ migrating to Hyperforce. The move to hyperforce is one of our largest investments in the B2C Commerce product. It demonstrates our commitment to the longevity of this product for many years to come. **Why is my realm moving?** Salesforce is committed to the longevity and scalability of B2C Commerce. We invest in the platform to make sure it can scale and meet the needs of your growing organization. To prepare for your organization's continued growth, we occasionally move a customer’s realm to a new, improved infrastructure. This change enables us to upgrade and modernize our infrastructure and continue to provide you with the levels of performance and trust you expect from Salesforce B2C Commerce. **What is Hyperforce?** Hyperforce is Salesforce’s next-generation cloud infrastructure platform powered by public cloud technologies. For an overview and general information about Hyperforce, see [Introducing Hyperforce - General Information and FAQ](https://help.salesforce.com/s/articleView?id=000388902&type=1&language=en_US). **What are some of the benefits of Hyperforce?** As a Cloud infrastructure, Hyperforce provides these added benefits: - Data residency: Serve your employees and customers globally while providing enhanced choice and control for data residency and compliance. - Scalability: Grow and scale your business more flexibly and sustainably. No more moving realms due to resource scale-up or hardware refresh. - Security: Hyperforce is secure by default through industry-leading features such as least privileged control, zero trust principles, and Infrastructure-as-Code. Your data is encrypted in transit and at rest. - Privacy: Hyperforce provides comprehensive privacy standards that enable transparency and control of your customers’ data **To which region is my realm moving?** Your new Hyperforce realm is in the same Salesforce region as the current POD location. **Where are the physical locations of the assigned Hyperforce AWS regions?** - us-east-2 — US East (Ohio) - ap-northeast-1 — Tokyo, Japan - eu-north-1 — Stockholm, Sweden - ap-southeast-2 — Sydney, Australia - ap-south-2 — Hyderabad, India **Is there a schedule for moving realms to Hyperforce?** Salesforce is scheduling existing customers to upgrade to Hyperforce over the next couple of years, beginning in Q4 of 2024. As the upgrade date approaches, Salesforce notifies you 60 to 90 days in advance of your scheduled move date. At least one month ahead of the move date, customers receive a pre-move checklist and instructions. Use the checklist to make sure your realm is ready to migrate to the Hyperforce infrastructure. On the move date, Salesforce engineers move all realm data, including certificates, to the new Hyperforce location. During the move, the storefront enters maintenance mode. You’re restored to normal operation after the move completes. **Will the currently allowlisted IPs in the existing source POD be automatically migrated to the new servers?** Yes. All existing firewall rules are copied from the source Pod to the new Hyperforce destination. **As a customer, what do I do to prepare for the move?** After the realm move date is finalized, you’re asked to prepare for your realm move to Hyperforce. Salesforce provides a checklist and detailed instructions that walk you through the key steps to configure your services and make sure you experience a smooth upgrade. **How long does it take to complete the move?** The realm move happens during a predefined maintenance window. The migration of realm data (measured from when the maintenance page is up to when the maintenance page is removed) usually takes 2–5 hours. Actual migration time depends on how much data is moved. **Are other Salesforce Clouds moving to Hyperforce, too?** All other Clouds at Salesforce are‌ upgrading to Hyperforce. **Are new customers hosted on Hyperforce?** New customers to Salesforce’s B2C Commerce platform run on Hyperforce. This process is gradual, as we build up the capacity on Hyperforce. **Is the first-party POD environment going away?** After all customers’ realms are migrated to Hyperforce infrastructure, the current first-party POD environments are decommissioned. **If we have integrations with other clouds, such as Marketing Cloud or Service Cloud, do we have to make any changes?** Check all integrations to make sure that they’re working after the POD move. Most cross-cloud integrations use domain names to connect, which don’t change with a POD move. Cross-cloud integrations don’t use a direct IP to connect. However, some endpoints such as Marketing Cloud Personalization can be impacted. If API calls are no longer successful after Pod migration, add the new destination Hyperforce Region IPs to your firewall rule allow list. The Hyperforce external IP list is available at [https://ip-ranges.salesforce.com/ip-ranges.json](https://ip-ranges.salesforce.com/ip-ranges.json). **Does my development environment (sandboxes) move to Hyperforce, too?** On-Demand Sandboxes (ODS) don’t move with your realm. No action is needed if you’re using ODS. If you still use the B2C Commerce Sandbox (aka POD sandbox), Salesforce is de-provisioning them and replacing them with ODS. **Do my B2C Commerce functionality and performance remain the same on the new instance?** After the upgrade, ‌overall B2C Commerce functionality, performance, and user experience remain unchanged. **Can my realm be moved sooner or later than the scheduled date?** There are many realms to upgrade and migrate. After a date is selected, it’s difficult to reschedule. If you have specific needs or requirements regarding the upgrade to Hyperforce, contact your Account Executive (AE) or Customer Success Manager (CSM) as early as possible. **What can I expect to happen next?** When your realm is near the scheduled move date, you’ll receive a notification. The notification includes the move date and the pre-move checklist. Use the checklist to get your realm ready for the move. Salesforce asks that you respond to the notification to confirm the date and to ask questions. **How can I get more information about Hyperforce in general?** Explore these links to ‌learn more about Hyperforce. - [Salesforce Hyperforce POV](https://www.salesforce.com/products/public-cloud-infrastructure/) - [Introduction to Hyperforce YouTube Video](https://www.youtube.com/watch?v=DIqZPxLl2Xw) - [Introduction to Hyperforce - General Information and FAQ](https://help.salesforce.com/s/articleView?id=000388902&type=1&language=en_US) If you have questions not addressed in this FAQ, send them to b2c-hyperforce@salesforce.com, or contact your AE or CSM. # B2C Commerce Lakehouse Schema Reference The B2C Commerce Data Lakehouse stores product catalog, customer, and sales order data in entity tables that use the `ccdl_` prefix. Each table represents a specific entity type with its attributes and relationships. ## Data Limitations The following limitations apply to the data available in the B2C Commerce Data Lakehouse. Review these constraints when planning your data integration and analysis. **General** - Data is automatically available only from live production instances. For non-production instances, see [Using Non-Production B2C Commerce Environments with Data 360](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_non_production_environments.htm&release=264.0.0&type=5 "Starting with release 26.1, use non-production B2C Commerce environments with Data 360 features such as Engagement Events and Near Real-Time Segmentation."). - Currency values are in local currency only. **Sales Order Data** - Sales order data isn't real-time. - Historical sales order data starts on March 1, 2026. - Orders where the shopper has opted out of tracking (Do Not Track) are excluded from sales order tables. **Product Data** - Product data requires Einstein product catalog feeds to be enabled. - Product data is refreshed according to your Einstein data export schedule, with a maximum frequency of daily. - Product records come from the Storefront catalog. - Product data is available in the site's default locale only. - Product data doesn't include site-specific attributes. **Customer Profile Data** - Customer profiles that are modified before March 1, 2026 aren't available, even if you've already enabled the export of registered shopper profiles in Business Manager. To export customer profiles going back to March 1, 2026, clear the **Enable Ingestion of Registered Shopper Profiles into Data Cloud** checkbox and click **Apply**. Then select the checkbox again, enter the desired date in the **Registered Shopper Profile Last Modified Date** field, and click **Apply**. See [Configure the Export of Registered Shopper Profiles into Data 360](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_configure_shopper_profiles_feature.htm&release=264.0.0&type=5 "Export registered B2C Commerce shopper profiles for specific sites and profiles modified after a certain date. The exported profiles are then ingested into Data 360 using the Apache Iceberg connector. A job that performs the ingestion runs once a day. Shopper profiles are visible in Data 360 about an hour after the job completes."). - Currency values are in local currency only. ## Entity Tables The following topics describe each entity table and its columns. - **[ccdl\_attribute\_definition](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_attribute_definition.htm&release=264.0.0&type=5)** Defines custom B2C Commerce attributes and their data types. Each record represents an attribute definition that can be assigned values for various entities. - **[ccdl\_attribute\_value](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_attribute_value.htm&release=264.0.0&type=5)** Contains attribute values for various B2C Commerce entities. This is a generalized table for storing custom attributes across different entity types. - **[ccdl\_customer\_profile](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_customer_profile.htm&release=264.0.0&type=5)** Contains B2C Commerce customer profile information including contact details, preferences, and activity timestamps. - **[ccdl\_product](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product.htm&release=264.0.0&type=5)** Contains detailed information about B2C Commerce products and SKUs. Each record represents a product with its core attributes, identifiers, and metadata. - **[ccdl\_product\_catalog](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_catalog.htm&release=264.0.0&type=5)** Stores information about B2C Commerce product catalogs. Each record represents a catalog container for categories and products. - **[ccdl\_product\_category](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_category.htm&release=264.0.0&type=5)** Contains category hierarchy information within B2C Commerce catalogs. Each record represents a category with its parent relationship and metadata. - **[ccdl\_product\_category\_product](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_category_product.htm&release=264.0.0&type=5)** Assignment table linking B2C Commerce products to catalog categories, keyed by catalogId, productCategoryId, and productId. Each row flags whether the assignment is the product's primary or classification category. - **[ccdl\_product\_image](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_image.htm&release=264.0.0&type=5)** Stores B2C Commerce product image metadata and paths. Each record represents an image associated with a product. - **[ccdl\_product\_option](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_option.htm&release=264.0.0&type=5)** Definition table for B2C Commerce product options such as gift wrapping or warranties, keyed by productId and productOptionId. Each row carries the option's display name, description, default value, and whether it's shared across products. - **[ccdl\_product\_option\_value](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_option_value.htm&release=264.0.0&type=5)** Selectable values for B2C Commerce product options, keyed by productId, productOptionId, and valueId. Each row is one choice for an option — for example, One Year or Two Year for an Extended Warranty — with its SKU extension. - **[ccdl\_product\_product\_option](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_product_product_option.htm&release=264.0.0&type=5)** Junction table linking B2C Commerce products to the product options available on them, keyed by productId and productOptionId. Each row associates one product with one option defined in ccdl\_product\_option. - **[ccdl\_sales\_order](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_sales_order.htm&release=264.0.0&type=5)** Order-header table for placed B2C Commerce orders, keyed by documentNo and siteId. Each row holds one order's grand totals, subtotals, shipping, and tax in the tendered currency. - **[ccdl\_sales\_order\_customer](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_sales_order_customer.htm&release=264.0.0&type=5)** Contains customer details associated with B2C Commerce sales orders. Each record captures customer profile, default address, and billing address information at the time of order placement. - **[ccdl\_sales\_order\_product](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_sales_order_product.htm&release=264.0.0&type=5)** Order line-item table for placed B2C Commerce orders, keyed by documentNo, position, and siteId. Each row is one product line with its SKU, quantity, base and discounted pricing, and tax. - **[ccdl\_sales\_order\_product\_option\_value](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_sales_order_product_option_value.htm&release=264.0.0&type=5)** Contains product option values for line items in B2C Commerce sales orders. Each record represents a selected option value for a product in an order. - **[ccdl\_site](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_ccdl_site.htm&release=264.0.0&type=5)** Contains site configuration and settings. Each record represents a B2C Commerce storefront site with its currency, locale, catalog, and customer list assignments. # B2C Commerce Promotion Best Practices These practices help your promotions run smoothly and as intended. ## Planning and Testing We recommend that you plan and test all promotions before setting them live. Planning - Define seasonal campaigns. - Set a schedule with start and end dates and times. - Create an overall theme. - Develop a list of required creative assets. - Finalize the promotions offered. - What promotion types? Order, product, or shipping? - Which products or categories? - Which customer groups are you targeting? - Who are your marketing sources, such as affiliates or emails? - What is the promotion schedule? - Where on the site will promotion messaging show, such as homepage, category pages, checkout? - Complete a merchandising promotions calendar. - Define a playbook for the season's campaigns and promotions. - Include all promotion details. Testing Develop and use simple test plans that consider all variations of your promotions. Make sure that: - Qualifiers work as intended. - Descriptions appear as intended. - Discount rules apply only when conditions are met. - B2C Commerce removes a discount if you remove the qualifying condition. Test your promotions in the Staging environment using the Storefront Toolkit. Use the toolkit to specify the dates. Make sure that the promotion works correctly in Production after data replication occurs. - Have the creator and requester test the promotions. - Test promotions before they go into Production. - Maintain a main list of coupon, promotion, and source code assignments. ## Messaging in the Storefront To minimize shopper queries, show a message in the storefront that identifies promotion restrictions, limitations, exclusions, or conditions. For example: - While supplies last - One discount per order - Following brands not eligible for this promotion - In stock-items only - Only on products over $500 ## Education and Documentation The developer must provide the marketing or merchandising team with a clear understanding of how promotions are implemented within their storefront. ## Implement and Document the Promotion Workflow Develop a workflow for the build, review, and release of online promotions. Identify clear roles and responsibilities related to online promotions within your organization. - Who can add content assets into the system? - How are requests for online promotions made? - Who builds promotions? - Who manages promotions after they go live? - What signatures are required, at which steps? - What are the specific timelines and deadlines? # B2C Commerce Promotion Compatibility Use compatibility rules to control the application of promotions. Compatibility rules prevent a shopper from qualifying for every possible promotion. Use the rank and exclusivity system attributes to control your promotion compatibility. For example, your site has a global 10% product promotion for everyone and a special 20% product promotion for registered shoppers. To prevent registered shoppers from qualifying for both discounts, add CLASS exclusivity to the promotions. ## Rank Define which promotions take precedence. For example, you have a series of promotion ranks with 10 = highest and 100 = lowest. Use the Business Manager promotion editing page to set the (optional) rank of a promotion. By default, a promotion has no rank. - A promotion without a defined rank ranks lower than promotions with a defined rank. - The rank system applies promotions in the order of their rank (highest to lowest). To ensure predictable results, the system also sorts promotions with the same rank using the default sorting mechanism (see [Promotion Processing,](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_processing.htm&release=264.0.0&type=5 "When processing promotions, B2C Commerce generates a list of active promotions based on parameters such as customer, source code, and coupon code products. This list isn't just for applying promotions to a basket. It also to present potential promotions to shoppers, such as on a product details page.") the Default sorting section). - To customize the rank values, edit the rank attribute of the Promotion system object. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The rank settings are configurable system objects. Only Salesforce admins can access to these objects. ## Exclusivity Use the exclusivity attribute to specify if promotions are mutually exclusive, either in general or relative to a promotion's class. This setting is mandatory but can be changed at any time. | Exclusivity | Definition | | --- | --- | | NO | Can be combined with any promotion (default) | | CLASS | Can’t be combined with a promotion of the same class | | GLOBAL | Can’t be combined with any promotion | ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Global exclusive promotion can only be combined using the combinability configuration. Promotion with global exclusivity, when combined, have higher precedence over other promotions when applying promotions in the basket. See Salesforce B2C Commerce [prioritization rules](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_priority_rules.htm&release=264.0.0&type=5 "Promotion priority rules exist to prevent unpredictable or undesirable effects when multiple promotions are applicable for a basket. These rules are hardcoded but you can adjust certain promotion attributes, such as exclusivity and rank, to manipulate promotions application. B2C Commerce doesn't evaluate all sequences of promotions. The sequencing resulting from prioritization doesn't always provide the best value to shoppers.") to determine which apply. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Prevent products from requalifying for class exclusive promotions. This option prevents a product that has already qualified for a higher-ranking promotion from qualifying for your current promotion. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If a product promotion is class-exclusive, no further promotions can apply to the discounted products. Other promotions can still apply to other products in the order. The following table lists the promotion classes, the compatibility choices, and their effects on a cart or shipment: | Promotion class | Compatibility | Result | | --- | --- | --- | | Product | Global | Not combined with any other promotion in a given order | |   | Class | Not combined with any other product promotion for a specific product in a given order | | Order | Global | Not combined with any other promotion in a given order | |   | Class | Not combined with any other order promotion in a given order | | Shipping | Global | Not combined with any other promotion in a given order | |   | Class | Not combined with any other shipping promotion in a given shipment | Mutually Exclusive and Combinable Promotions To further control exclusivity, set promotions to be mutually exclusive or combinable. If two promotions are mutually exclusive, then they can’t combine, even if their general exclusivity rules allows it. If two promotions are combinable, then they can combine, even if their general exclusivity rules don’t allow it. These settings can override global and class exclusivity. Set a single promotion or entire promotion groups as mutually exclusive or combinable. To create an exclusivity group, enter a name for the group in the Exclusivity Group field of each promotion you want included For example, you have a holiday product promotion, BOGOSchoolSupplies that offers buy one backpack, get a free lunch box.
Exclusivity Mutually Exclusive Promotions Combinable Promotions Result

NO

10%OffFoodStorage

None

BOGOSchoolSupplies can't combine with 10%OffFoodStorage, even though the exclusivity lets it combine with product promotions

CLASS

FreeShipping

$25OffChildrensProducts

BOGOSchoolSupplies can't combine with FreeShipping, even though the exclusivity lets it combines with non-product promotions

BOGOSchoolSupplies can combine with $25OffChildrensProducts, even though the exclusivity prevents combination with other product promotions

GLOBAL

None

10%OffOrder

$5OffKidSupplies

BOGOSchoolSupplies can combine with both promotions, even though the exclusivity prevents combinations with all promotion classes
Group promotions in exclusivity groups, which makes setting exclusivity settings easier to manage. For example, you add 10%OffOrder and $5OffKidSupplies to the exclusivity group, SpringPromo, on the individual promotions pages. Put SpringPromo in the Combinable Promotions field on the BOGOSchoolSupplies promotion page. Both promotions in the SpringPromo exclusivity group combinable with BOGOSchoolSupplies. Exclusivity Handling for Buy X/Get Y Promotions B2C Commerce doesn't count products twice when a qualifying product in one promotion is used as a discounted product in another promotion. For class-exclusive Buy X/Get Y promotions, the system prevents further discounts on the discounted and the qualifying products. For example, you configure two promotions for a back-to-school campaign. | Promotion | Qualifying product | Discounted product | | --- | --- | --- | | Buy three pairs of khakis, get 50% off a polo shirt | khakis | Polo shirt | | Buy one pair of kid's sneakers and get 20% off a pair of khakis | kid's sneakers | Khakis | You set both promotions to Exclusive to stop the product promotions from combining. The promotion with 50% is prioritized above the 20% offer (see [promotion priority rules](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_priority_rules.htm&release=264.0.0&type=5 "Promotion priority rules exist to prevent unpredictable or undesirable effects when multiple promotions are applicable for a basket. These rules are hardcoded but you can adjust certain promotion attributes, such as exclusivity and rank, to manipulate promotions application. B2C Commerce doesn't evaluate all sequences of promotions. The sequencing resulting from prioritization doesn't always provide the best value to shoppers.")). The first promotion applies and the second doesn't because B2C Commerce prevents both the qualifying and discounted products from receiving further discounts. Bonus Product and Choice of Bonus Product Promotions For Bonus Product discounts, the exclusivity parameter only works for promotions with qualifying products. Exclusivity applies to the qualifying product, not the bonus product. For example, you configure some more promotions for your back-to-school campaign. | Promotion | Qualifying product | Discounted product | Discount | Exclusivity | | --- | --- | --- | --- | --- | | Buy one polo shirt and get a free pair of sneakers | Polo shirt | Polo shirt | Free pair of sneakers | Class | | Polo shirts 30% off | Polo shirt | Polo shirt | 30% off polo shirts | Class | Because bonus product promotions consider the qualifying product to also be the discounted product, the second promotion doesn't apply. ## Examples Two Promotions Set to Global-Exclusive, One with a Rank Two promotions are global-exclusive, one with a rank. All other promotions are non-exclusive. | Name | Promotion | Class | Rank | Exclusivity | | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off cashmere sweaters | Product | 60 | No | | PROMO\_P2 | $2 off cashmere sweaters | Product | 0 | Global | | PROMO\_P3 | $1 off cashmere sweaters | Product | 0 | No | | PROMO\_P4 | 2.99 product fixed price for all jeans | Product | 30 | No | | PROMO\_O1 | 15% off order | Order | 70 | No | | PROMO\_O2 | 20% off order | Order | 65 | Global | | PROMO\_O3 | $5 off order | Order | 0 | No | The applied discounts for this basket are as follows:
ProductNo discount
Order20% off order
The following discounts apply: | Item | Net price | Discount | | --- | --- | --- | | Pale blue cashmere sweater | $100 | None | | Wide leg jeans | $25 | None | | Total | $125 | $25 | One Global-Exclusive Promotion and One Class-Exclusive Promotion One promotion is global-exclusive and one is class-exclusive. All other promotions are non-exclusive. | Name | Promotion | Class | Rank | Exclusivity | | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off cashmere sweaters | Product | 60 | No | | PROMO\_P2 | $2 off cashmere sweaters | Product | 0 | Class | | PROMO\_P3 | $1 off cashmere sweaters | Product | 0 | Global | | PROMO\_P4 | $2.99 product fixed price for all jeans | Product | 30 | No | | PROMO\_O1 | 15% off order | Order | 70 | No | | PROMO\_O2 | 20% off order | Order | 65 | No | | PROMO\_O3 | $5 off order | Order | 0 | No | The applied discounts for this basket are as follows:
Product$1 off on sweater
OrderNo discount
The following discounts apply: | Item | Net price | Discount | | --- | --- | --- | | Pale blue cashmere sweater | $100 | $1 | | Wide leg jeans | $25 | None | | Total | $125 | None | Two Promotions Set to Global-Exclusive, Both with Same Rank Two promotions are set to global-exclusive, both with the same rank. All other promotions are non-exclusive. | Name | Promotion | Class | Rank | Exclusivity | | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off cashmere sweaters | Product | 60 | No | | PROMO\_P2 | $2 off cashmere sweaters | Product | 0 | Global | | PROMO\_P3 | $1 off cashmere sweaters | Product | 0 | No | | PROMO\_P4 | $2.99 product fixed price for all jeans | Product | 30 | No | | PROMO\_O1 | 15% off order | Order | 70 | No | | PROMO\_O2 | 20% off order | Order | 65 | Global | | PROMO\_O3 | $5 off order | Order | 0 | No | The applied discounts for this basket are as follows:
Product$2 off on sweater
OrderNo discount
The following discounts apply: | Item | Net price | Discount | | --- | --- | --- | | Pale blue cashmere sweater | $100 | $2 | | Wide leg jeans | $25 | None | | Total | $125 | None | Multiple Class-Exclusive Promotions There are four class-exclusive promotions. All other promotions are non-exclusive. | Name | Promotion | Class | Rank | Exclusivity | | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off cashmere sweaters | Product | 60 | No | | PROMO\_P2 | $2 off cashmere sweaters | Product | 0 | Class | | PROMO\_P3 | $1 off cashmere sweaters | Product | 0 | Class | | PROMO\_P4 | $2.99 product fixed price for all jeans | Product | 30 | No | | PROMO\_O1 | 15% off order | Order | 70 | Class | | PROMO\_O2 | 20% off order | Order | 65 | No | | PROMO\_O3 | $5 off order | Order | 0 | Class | The applied discounts for this basket are as follows:
Product$2 off on sweater
Order15% off order
The following discounts apply: | Item | Net price | Discount | | --- | --- | --- | | Pale blue cashmere sweater | $100 | $2 | | Wide leg jeans | $25 | None | | Total | $125 | $18.75 | ## All Class-Exclusive Product Promotions Every product promotion is class-exclusive. While they’re all evaluated and applied, there’s only one discount per product. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When evaluating two or more price in price book promotions, a price book lookup is not required because a best price discount is not evaluated. | Name | Promotion | Class | Rank | Exclusivity | Item limit | | --- | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off all products | Product | 60 | Class | 1 | | PROMO\_P2 | $2 off all products | Product | 40 | Class | 2 | | PROMO\_P3 | $1 off cashmere sweaters | Product | 15 | Class |   | | PROMO\_P4 | $2.99 product fixed price for all jeans | Product | 30 | Class |   | The following discounts apply: | In cart | Price | Discount | | --- | --- | --- | | Cotton sweater | $50 | 10% off all products | | Low rise Jeans | $40 | $2 off all product | | Polo shirt | $30 | $2 off all product | | Denim jacket | $20 | $2.99 product fixed price | ## Class-Exclusive and Non-Exclusive Promotions Two promotions are class-exclusive and two are non-exclusive. The class-exclusive promotions aren’t applicable. Therefore, all non-exclusive promotions apply. | Name | Promotion | Class | Rank | Exclusivity | | --- | --- | --- | --- | --- | | PROMO\_P1 | 10% off all red shirts | Product | 60 | Class | | PROMO\_P2 | $2 off all red shirts | Product | 40 | Class | | PROMO\_P3 | $1 off all shirts | Product | 15 | No | | PROMO\_P4 | $2.99 product fixed price for all green shirts | Product | 30 | No | The following discounts apply: | In cart | Price | Discount | | --- | --- | --- | | Green shirt | $2.99 | Fixed price and $1 off all shirts | | Yellow shirt | $40 | $1 off all shirts | #### See Also - [Configure Promotion Preferences for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_promotion_preferences.htm&release=264.0.0&type=5 "Configure many of the promotion settings as site preferences, giving you much flexibility in how your promotions are handled. These settings include Buy X/Get Y promotion behavior, discount precision, and how the tax basis is calculated for line items with discounts.") - [Assign a Price Book or Promotion to a Specific Store in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_assigning_a_pricebook_or_promotion_specific.htm&release=264.0.0&type=5 "With Store-Specific Pricing and Promotions, select a price book for each of your stores, up to 2,000. The assignments framework lets merchants and developers set qualifiers, such as a store that activates certain experiences, such as a promotion. You can also assign a promotion to a specific store. This feature is only supported via XML import. To use a site assignment, a developer must first edit the assignments XML to include a store assignment. Currently only stores can be listed as assignments.") - [Promotion Schedules in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_schedules.htm&release=264.0.0&type=5 "Schedule campaigns, A/B tests, promotions, and content slots in B2C Commerce. A scheduled experience (promotion or content slot) has to coincide with a container (campaign or A/B test), or it can't run.") - [Tiered Discounts in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_tiered_discounts.htm&release=264.0.0&type=5 "Tier discounts so that the discount amount increases as the shopper buys more products or spends more money. Configure tiered discounts in a promotion with multiple threshold levels for conditional parameters, where the discount varies by threshold and can't be combined.") - [Maximum Application for B2C Commerce Promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_maximum_application_for_promotions.htm&release=264.0.0&type=5 "Limit how many times a promotion can apply per order using the maximum application limit.") - [Specify Who Qualifies for an Experience in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_add_a_qualifier_to_an_experience.htm&release=264.0.0&type=5 "Specify who qualifies for an experience and how the promotion is redeemed using qualifiers. A qualifier can be a customer group, a coupon, or a source code. Add a qualifier to a promotion in two ways: assign the qualifier to a campaign, which affects all included promotions, or assign the qualifier to a specific promotion.") - [Qualifying and Discounted Products in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_qualifying_and_discounted_products.htm&release=264.0.0&type=5 "Define promotions that specify qualifying products, the products shoppers buy and how much to be eligible for a discount. Also specify which products are discounted.") - [Promotion Restrictions to Identical Products](https://help.salesforce.com/s/articleView?id=cc.b2c_restricting_promotions_to_identical_products.htm&release=264.0.0&type=5 "The restrictions setting limits product selection to identical products. When you set restrictions for a B2C Commerce product promotion rule, you configure a single product promotion that can apply to multiple products.") - [Qualify or Disqualify Promotions Based on Active Price Book](https://help.salesforce.com/s/articleView?id=cc.b2c_qualify_disqualify_promotions_based_on_active_price_book.htm&release=264.0.0&type=5 "Include or exclude B2C Commerce products from promotions using the price book condition.") # B2C Commerce Promotion Considerations Keep certain considerations in mind as you implement promotions in your storefront application. ## Requirements Phase - Review the SiteGenesis wireframe document with your developer and discuss the standard campaign and promotion implementation. - Identify the different types of promotions, such as conditions, discount types, and qualifiers, required for the solution. For each promotion type, note visualization requirements, including messaging requirements (marketing and legal), format (text, HTML, images, other), and message location in your storefront. Collect a sampling of current and desired promotions. - Capture promotion compatibility requirements. - Capture explicit retail math requirements related to promotions calculation and application, and how this information must be communicated to order management and other systems. - Identify promotions population, such as import or manual, during development and when the site is live. - If you plan to create promotions manually, identify: - Who is responsible for creating them - If there’s a review process and who reviews - Who tests the promotions and how - Who replicates promotion data, how, and when - Who generates coupons (if applicable) - If you plan to import promotions, define the import process. If possible, implement it as a job within Salesforce B2C Commerce to take advantage of the scheduling and notification functionality built into the system. ## Design Phase - Include promotional messaging in wireframe customization and development. - Provide for promotional messaging in multiple places within the storefront: - Homepage - Cart or Checkout pages - Category pages (Grid) - Product Detail pages or Quick view (if applicable) - Identify coupon error handling logic and messaging. ## Build Phase Build code to support your promotions requirements. ## Development/Test Phase - Create users with permissions that are in line with merchant-defined business processes. - Create an initial set of test promotions. Include promotion types planned for use in the future, not just the promotions that go live initially. - Use a test plan to make sure that all end-to-end use cases are reviewed. - Test the import process (if applicable). - **[B2C Commerce Promotion Best Practices](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_best_practices.htm&release=264.0.0&type=5)** These practices help your promotions run smoothly and as intended. - **[B2C Commerce Promotion Troubleshooting](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_troubleshooting.htm&release=264.0.0&type=5)** If you have issues with a promotion, follow our basic troubleshooting tips to determine if you have the right specifications in place. - **[Analytics and Reporting for Promotions in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_and_reporting_for_promotions.htm&release=264.0.0&type=5)** Salesforce B2C Commerce reports on promotions via analytics reports, the debug logger, and system logs. # B2C Commerce Promotion Priority Rules Promotion priority rules exist to prevent unpredictable or undesirable effects when multiple promotions are applicable for a basket. These rules are hardcoded but you can adjust certain promotion attributes, such as exclusivity and rank, to manipulate promotions application. B2C Commerce doesn't evaluate all sequences of promotions. The sequencing resulting from prioritization doesn't always provide the best value to shoppers. ## External B2C Commerce applies promotions entered programmatically through APIs, that aren't represented by promotions in the system, before promotions entered through Business Manager. ## Default Priority Order Promotions are categorized by exclusivity. The exclusivity categories are processed in the following order: 1. Global Exclusive 2. Class Exclusive Product 3. Non-Exclusive Product 4. Class Exclusive Order 5. Non-Exclusive Order ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Order promotions are calculated based on merchandise total. After order promotions apply, order-level discounts are prorated across all products in the order. 6. Class Exclusive Shipping 7. Non-Exclusive Shipping Within each category, promotions are prioritized in the following order: 1. Promotions part of AB tests (starting with the lowest rank) 2. Promotions part of campaigns (starting with the lowest rank) ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Rank is an optional, numeric attribute that you can specify to determine application priority. Ranked promotions are calculated before unranked promotions. If two promotions have a rank, the promotion with the lowest rank is calculated first. 3. By discount type 4. By discount amount 5. Alphabetically by ID ## Discount Type and Value In general, promotions are sorted by discount type in the following order: 1. Fixed price 2. Total fixed price 3. Free 4. Price book price 5. Amount-off 6. Percent-off 7. Bonus-product 8. Choice of bonus products 9. Free product-shipping 10. Fixed price product-shipping If there are multiple promotions of the same discount type, they’re sorted so that promotions providing the best value to the shopper are evaluated first. Promotions can be tiered and offer multiple discounts. When B2C Commerce prioritizes two promotions by discount, it pre-evaluates the discount tiers of each and determines which tier, if any, apply for each. For example, a promotion had two tiers, buy 3 or more of product PXget $5 off and Buy 5 or more of product X and get 30% off. A basket has four of product X. The lower discount tier ($5 off) is the pre-evaluated discount, so the discount type is amount-off. After this pre-evaluation process, each promotion is associated with zero or one discounts. Promotions are then sorted by discount type according to the following sequence.Simple discounts apply in the following order: fixed, amount-off, percent-off. If two promotions have the same pre-evaluated discount type, the promotion that offers the shopper the best value is prioritized first. For example, a promotion offering 20% off takes priority over a promotion offering 10% off. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If there are multiple fixed-price (or total fixed price or free) promotions, the order of application is irrelevant because fixed-price promotions don't stack. B2C Commerce has special logic so that if multiple fixed-price promotions qualify, only the best value promotion applies. ## Maximum Application Setting a maximum application affects the order that product promotions apply and when the discount calculation occurs. When a promotion with a maximum application applies, the most expensive product is discounted first, followed by the second most expensive, until the maximum application limit is reached. For example, you have two promotions. - Promotion 1 - Buy three shirts and get a free silk tie - maximum application 2 - Promotion 2 - Buy three shirts and get 20% off - maximum application 1 The customer buys six shirts: two of Shirt A costing $100 each, two of Shirt B costing $75 each, and two of Shirt C costing $50 each. According to promotion priority rules, percent off applies first, followed by bonus - so Promotion 2 applies first. It discounts the most expensive shirts to give the shopper the best deal. ``` 3 shirts (2 at $100 and 1 at $75) for 20% off, with one application. $275 - $55 (discount) = $220 ``` If exclusivity is None, per Promotion 1, the customer also receives two silk ties. If exclusivity is Class or Global, Promotion 1 doesn't apply. Percent off contrasts with buy x get y discount, where if the same products are eligible as qualifying and conditional products, the promotion sorts the products based on price. The promotion uses the most expensive products to satisfy the condition. The discount applies to the next product in the list that is of equal or lesser value to the conditional products, depending on the site promotion preference setting. See [Buy X Get Y Promotions.](https://help.salesforce.com/s/articleView?id=cc.b2c_buy_x_get_y_promotions.htm&release=264.0.0&type=5 "Buy X/Get Y promotions among the most standard promotion types.") ## Example In this example, a merchant has ranked promotions as follows: | Promotion Name | Description | Rank | | --- | --- | --- | | Prod1 | 10% off product | 60 | | Prod2 | $2 off product | 0 | | Prod3 | $1 off product | 0 | | Prod4 | $2.99 product fixed price | 30 | | Ord1 | 15% off order | 70 | | Ord2 | 20% off order | 65 | | Ord3 | $5 off order | 0 | The basket with applied discounts shows the discounts applied in the following order: 1. Product: 1. Prod4: $2.99 product fixed price 2. Prod1: 10% off product 3. Prod2: $2 off product 4. Prod3: $1 off product 2. Order 1. Ord2: 20% off order 2. Ord1: 15% off order 3. Ord3: $5 off order # B2C Commerce Promotion Troubleshooting If you have issues with a promotion, follow our basic troubleshooting tips to determine if you have the right specifications in place. To jump between your rules and your cart, open the storefront in one browser window and Business Manager in another. To test the promotion correctly, confirm that: - The campaign that the promotion belongs to is enabled and valid for the current date. - The promotion is enabled and valid for the current date. - You qualify for the promotion by: - Belonging to a target customer group OR - Providing a valid coupon associated with the promotion OR - Providing a valid source code associated with the promotion AND that source code is assigned to the promotion and is enabled. - For a product promotion, you: - Selected products that match the qualifying products rules, in the appropriate quantity or amount (if applicable). - Selected products that are eligible for the discount (if applicable). - For an order promotion, you have merchandise in your cart that exceeds the merchandise threshold specified after product discounts apply. Gift certificates don’t count towards the merchandise total. - For a shipping promotion, confirm that you have: - Merchandise in your cart that exceeds the merchandise threshold specified after product and order level discounts have been applied. Gift certificates don't count towards the merchandise total. - Provided location information so shipping can be calculated. - Selected a shipping method that is eligible for the discount. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Shipping promotions are evaluated against the merchandise total of the shipment, not the merchandise total of the cart. ## Notes - If you're base testing on a customer group other than Everyone, confirm that the customer login you’re using is a member of a targeted group. - If you're testing with a single-use coupon, create the coupon on the same instance you're using for testing. - If you’re testing with a source code, look up the source code group in the promotion qualifier list. To confirm that the value that you’re using is valid for the selected source code, enter the string in the source code test match box. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Online Marketing** | **Source Codes** | **Codes**. - If you're testing compatibility and ranking settings, check how the rules function to see the desired results. # B2C Commerce Reports & Dashboards Navigation B2C Commerce collates Reports and Dashboard data in related datasets. The datasets include: Sales, Products, Promotions, Traffic Technical, and Real-Time. To access a dashboard, click the corresponding tab. You use the dashboard tabs to navigate around the dashboards and use the other dashboard settings to modify the dataset views. # B2C Commerce Security Guide To help protect your sites from security threats, follow our security best practices as you set up, administer, and develop your Salesforce B2C Commerce environments. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Salesforce provides the topics in the B2C Commerce Security Guide on an information-only basis. This document is not legal advice and its use creates no attorney-client relationship. Salesforce urges its customers and prospective customers to consult with their own counsel to familiarize themselves with the security requirements that govern their specific situations. To the extent the guide outlines Salesforce's current product offerings, those are as of the date of issue of this document only, and are subject to change without notice. Customers are responsible for making their own independent assessment of the information in this document and any use of Salesforce’s products or services, subject to the terms of customer's agreement with Salesforce. This documentation does not modify any agreement between Salesforce and its customers. - **[B2C Commerce Security Model](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_security_model.htm&release=264.0.0&type=5)** Salesforce B2C Commerce security is a partnership between Salesforce and our B2C Commerce customers. As always, Trust is our #1 value at Salesforce. We’re committed to delivering the highest standard in system availability, performance, and security. - **[General Security Best Practices in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_general_security_best_practices.htm&release=264.0.0&type=5)** At Salesforce, we understand that the confidentiality, integrity, and availability of your data is vital to your business. We want you to implement maximum protection for your sites against security threats and recommend using the following core best practices as you set up your Salesforce B2C Commerce environments. - **[Security Best Practices for Administrators in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_security_best_practices_for_administrators.htm&release=264.0.0&type=5)** You can use Business Manager to secure your site and ensure a safe online shopping environment for your customers. Doing so also secures Business Manager and prevents attackers from removing the security controls you previously configured. - **[Security Best Practices for Developers in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_security_best_practices_for_developers.htm&release=264.0.0&type=5)** As a B2C Commerce developer, use these security best practices to develop secure storefronts. # B2C Commerce Security Model Salesforce B2C Commerce security is a partnership between Salesforce and our B2C Commerce customers. As always, Trust is our #1 value at Salesforce. We’re committed to delivering the highest standard in system availability, performance, and security. - **[Shared Responsibility Model](https://help.salesforce.com/s/articleView?id=cc.b2c_shared_responsibility_model.htm&release=264.0.0&type=5)** B2C Commerce sites and platforms are attractive cyber attack targets. Cyber attackers look for locations where they can try to exfiltrate sensitive data, such as credit cards, personally identifiable information (PII), and credentials. The ordering workflow also offers an attractive attack surface for cybercriminals to try to enrich themselves. They can create fake orders, adjust coupons and promotions, and deny service to legitimate customers. - **[Security Managed by Salesforce](https://help.salesforce.com/s/articleView?id=cc.b2c_security_managed_by_salesforce.htm&release=264.0.0&type=5)** Salesforce ensures that security is a focus of B2C Commerce development and provides secure development and platform-level security. - **[Security Managed by Customer](https://help.salesforce.com/s/articleView?id=cc.b2c_security_managed_by_customer.htm&release=264.0.0&type=5)** Salesforce provides a variety of configurable security controls that authorized administrators can use to secure their instances on the Salesforce B2C Commerce platform. Customers can use additional controls to further customize their security footprint. # B2C Commerce Sites and Storefronts In B2C Commerce, a site is the application and associated code that runs a storefront. A storefront is the user's online experience. A site can have multiple storefronts with different URLs for different brands, locales (with currency and tax differences), or multiple channels. If you’re referring to a specific URL, B2C Commerce uses the term storefront. ## Site Architecture Scenarios When designing your site, your architect must consider the following: - The geographical relationship between storefronts and the teams that maintain them - Data shared between sites, such as product data, tax and payment information, user roles and permissions, promotions, or application code - Whether the storefront must be localized for different market locales or restructured for them - Data that remains separately controlled due to corporate structure or legal requirements - Whether customer, basket, or transaction data carries over from one storefront to the next Example: An apparel retailer lets customers shop simultaneously at both their adult and children's sites. But a retailer with two different customer bases, such as a book publisher for religious books and fantasy fiction, can prevent crossover. ## One Site, One Storefront The simplest scenario is one site and one storefront that it supports. ## One Site, Multiple Storefronts If you have many storefronts and a single team maintaining them, manage them more easily as a single site, even if the products are different for each site. Similarly, to share baskets between storefronts, the storefronts must be part of a single site. If you’re deploying many localized sites with similar branding and products, it's faster and easier to manage new storefronts as an extension of an existing site. ## Multiple Sites, Multiple Storefronts You can have multiple sites, each of which supports multiple storefronts. You can also choose to share site data, such as customer data, between sites. ## Site Definition A live site is defined as a listing in the Manage Sites screen on the merchant's production instance of Business Manager with a status set to Online, not including those sites with other statuses or sites that 's been deleted. # B2C Commerce Tools If you have the correct permissions assigned to you, you can access the B2C Commerce tools. To access B2C Commerce tools, click App Launcher or press Command+k (macOS) or Ctrl+k (Windows), and move between the tools. - Business Manager--Configure storefronts in real time. Categorize, price, search, display, navigate, and promote merchandise. - Control Center--Gives your IT staff operational control over your site, such as starting instances, and managing users. - Account Manager--Lets your IT staff create user accounts on B2C Commerce, grant and revoke user access to B2C Commerce instances. #### See Also - [Account Manager for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_overview.htm&language=en_US) - [Control Center](https://help.salesforce.com/s/articleView?id=cc.b2c_cc.htm&language=en_US) - [B2C Commerce Business Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_new_business_manager_ui.htm&language=en_US) # B2C Commerce Video Tutorials Watch instructional videos and step-by-step tutorials for B2C Commerce Business Manager. Learn how to rebuild search indexes, assign products to categories, create promotions and discounts, add products to the catalog, localize content in Page Designer, build dynamic customer groups, set visibility rules, manage content assets, use granular replication, and create Business Manager roles. These video tutorials walk you through common merchandising and administration tasks in B2C Commerce Business Manager. Each tutorial pairs a short video with a list of what you'll learn and links to related help topics, so you can watch, follow along, and read more about tasks like rebuilding search indexes, creating promotions, managing your product catalog, and configuring Page Designer.
Watch Learn To READ ABOUT IT

Rebuild Search Indexes title screen

Rebuild Search Indexes

  • Build an index manually
  • Set up scheduled automatic indexes
  • Configure incremental indexing

Assign Products to Categories title screen

Assign Products to Categories

  • Assign multiple products to a category
  • Set up a categorization rule
Assign Products to a Category

Localize Content in Page Designer title screen

Localize Content in Page Designer

  • Localize components on a Page Designer page
  • Configure localization fallback hierarcy
Manage Localization for a Page Designer Page

Add a Discount to a Promotion title screen

Add a Discount to a Promotion

  • Create a promotion
  • Add a discount to a promotion

Add a Product to the B2C Commerce Catalog title screen

Add a Product to the B2C Comerce Catalog

  • Add a product
  • Assign images to the product
  • Add a price for the product
  • Add an inventory record for the product

Create a Dynamic Customer Group in B2C Commerce title screen

Create a Dynamic Customer Group in B2C Commerce

  • Create a dynamic customer group in B2C Commerce
  • Update membership in the customer group based on rules
Create a Dynamic Customer Group in B2C Commerce

Create Visibility Rules for Components title screen

Create Visibility Rules for Components

  • Specify which components appear in the B2C Commerce storefront
  • Use Page Designer to manage visibility rules
  • Target content based on customer group, date, or locale
Set Component Visibility by Customer Group, Schedule, or Locale

Manage Content Assets in B2C Commerce title screen

Manage Content Assets in B2C Commerce

  • Update content assets in B2C Commerce
  • Manage assets such as banners and promotional text
  • Deliver targeted shopping experiences
Manage Content Assets in B2C Commerce

Use Granular Replication title screen

Use Granular Replication

  • Use granular data replication
  • Push quick, targeted updates to products, prices, and other content assets
  • Publish individual records to production
Granular Data Replication

Create a Role in Business Manager title screen

Create a Role in Business Manager

  • Create a B2C Commerce role
  • Assign Business Manager module permissions
  • Set functional, WebDAV, and locale permisssions
Create a Role in B2C Commerce

Create a Custom B2C Business Manager App title screen

Create a Custom B2C Business Manager App

  • Create a Business Manager app using a template or manually
  • Group modules you use the most in the left navigation
  • Organize the app to help you work efficiently
Create a Custom B2C Business Manager App
# B2C Commerce with Agentforce Marketing Connect B2C Commerce to your Salesforce org to use shopper consents and notifications powered by Agentforce Marketing, Data 360, and Personalization. Add consent requests to your B2C Commerce storefront to collect email addresses and build your Agentforce Marketing audience. Automate abandoned cart notifications via email, SMS, or WhatsApp. You can also create post-order marketing notifications with personalized recommendations that trigger when a shopper completes a purchase. - **[Prerequisites for B2C Commerce with Agentforce Marketing](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_setup_prereq.htm&release=264.0.0&type=5)** Before you can use B2C Commerce with Agentforce Marketing, configure the required Salesforce apps and features. - **[Set Up Shopper Consents for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_setup_consents.htm&release=264.0.0&type=5)** Add consent requests to your site to capture shopper emails and grow your marketing campaigns. Consent requests consume Data 360 credits. Contact your account executive to learn more about credit usage. - **[Set Up Shopper Notifications for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_setup_notifications.htm&release=264.0.0&type=5)** Send shoppers notifications, such as reminders for abandoned carts or post-order marketing notifications. Notifications require Salesforce Flow, Agentforce Marketing, and Data 360. Data 360 credits are consumed for each notification sent. For information about credit usage, contact your account executive. You can also enable Personalization to customize your marketing communications to specific shopper needs and preferences. #### See Also - [Set Up Shopper Consents for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_setup_consents.htm&release=264.0.0&type=5 "Add consent requests to your site to capture shopper emails and grow your marketing campaigns. Consent requests consume Data 360 credits. Contact your account executive to learn more about credit usage.") - [Set Up Shopper Notifications for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_setup_notifications.htm&release=264.0.0&type=5 "Send shoppers notifications, such as reminders for abandoned carts or post-order marketing notifications. Notifications require Salesforce Flow, Agentforce Marketing, and Data 360. Data 360 credits are consumed for each notification sent. For information about credit usage, contact your account executive. You can also enable Personalization to customize your marketing communications to specific shopper needs and preferences.") # B2C Shopper Agent | Cart Subagent The Cart subagent manages the full cart lifecycle. This subagent adds products and variants, views the cart summary, updates lines, and applies promotion and coupon codes.
Subagent Name Subagent Handles Actions
cart

Manages requests, such as:

  • Add the black one in size 9
  • Change the quantity to 2
  • Remove the sandals
  • Apply code SUMMER20
  • What's in my cart?
  • GetB2CUserAccessToken—authenticates the shopper session (guest or logged-in) before API calls.
  • AddItemToCart—searches the catalog, supports conversational context, facets, refinements, and custom properties.
  • AddCart
  • EditCart
  • ViewCart
  • ApplyCouponToBasket
  • GetB2CProductDetails—full details for a single product ID. Resolves any variants before adding an item to the cart.
Response component: cart. Pulls the standard product components. To customize it: - `cart_tool_calling_guidance`—cart-scoped tool guidance. The default rule enforces that the subagent adds only variant-level IDs. It also determines whether the agent asks the shopper to pick a variant when the shopper doesn't specify one. - `enable/disable`—controls use of the Cart subagent. If your storefront handles cart functions elsewhere, comment out the Cart subagent to remove the route. You can restore the Cart instructions. - SFRA or SCAPI—set `useSfraApi` to `true` to route cart actions through SFRA. Set it to `false` to route through SCAPI. # B2C Shopper Agent | Order Confirmation The Order Confirmation subagent confirms that the shopper placed an order and shows the order details. It also recovers the cart after a payment fails or a payment method cancellation.
Subagent Name Subagent Handles Actions
order_confirmation
  • Post-checkout confirmation. Example: "Your order confirmation number is 12345."
  • Helpful recovery of a failed purchase. Example: "Your payment didn't go through, but your cart is still available."
  • GetB2CUserAccessToken—authenticates the shopper session before API calls.
  • GetB2COrderConfirmationDetails—includes order summary information.
  • ViewCart—restores cart state on payment failure.
To customize it: - `order_tool_calling_guidance`—order-scoped action guidance. This action is empty by default. Add rules to handle orders and payment recovery. - `Enable/disable`—controls whether the subagent is active. # B2C Shopper Agent | Product Expert Handles all product-related requests, such as browsing, searching, recommendations, comparisons, and product questions. It searches the catalog and looks up detailed product information as needed.
Subagent Name Subagent Handles Actions
product_expert
  • Guided discovery—helps shoppers find the right product through natural conversation. It can narrow results based on use case, budget, or preference. Example, "Show me waterproof hiking boots under $150."
  • Product comparisons—compares two or more products and highlights key differences. It compares specifications, features, price, ratings, and trade-offs so shoppers make decisions with confidence. Example, "Compare these two running shoes on cushioning, weight, and price."
  • Multi-item kit builds—assemble complete sets, outfits, or routines by finding each component together. For example, a full poolside look or a starter kit.
  • Cross-selling opportunities—surfaces relevant complementary products alongside the main item to increase basket size and round out the purchase.
  • Answers to product questions—responds to specific feature questions, for example, "Which of these two laptops is better?" or "Do these shoes run true to size?"
  • GetB2CUserAccessToken—authenticates the shopper session (guest or logged-in) before API calls.
  • CommerceProductSearch—searches the catalog, and supports conversational context, facets, refinements, and custom properties.
  • GetB2CProductDetails—full details for a single product ID, including specifications, variants, pricing, inventory. The agent uses this information before rendering a product tile or comparison.
Response components: product\_carousel, product\_tile, product\_comparison, suggestions, tools. To customize this agent: Product Expert drives the discovery experience so it exposes the widest set of tuning points. You can adjust this subagent without changing the underlying reasoning node: - Catalog context (`retailer_description`)—determines the search quality. Provide guidance on how to search the catalog. Include catalog structure, product and collection names, and category vocabulary. The more specific the information is, the more effective the search. - Brand voice (`retailer_voice`)—full tone specification: register, vocabulary, sentence length, what to say and an explicit never-say list, and how to shift tone by context. For example, a positive tone upon product discovery, or a neutral tone when the question is out of scope. - Tool-calling behavior (`tool_calling_guidance`)—rules for how and when to search. Run parallel searches for multi-item requests, expand weak keywords into synonym lists, and find natural cross-sell partners. It helps you recover from zero-result searches by refining the search. Each rule string can have a maximum of 255 characters. - Response formatting (`response_guidance`)—behavioral and formatting rules applied to every response. Specify how the response looks. You can instruct the subagent to include a carousel when mentioning products, bold product names, and make sure that the agent ends the conversation with a follow-up question. Optionally, specify whether to enforce language rules. Each rule string can have a maximum of 255 characters. - Search enrichment and source (`customProperties`)—show custom attributes like ratings or sale flags on result. Use of `configTemplate`, which identifies the search source. The configuration drives the results. Also, `id_col`, which holds the product ID. - Integration path—the Product Expert subagent communicates with your B2C Commerce instance to look up products and manage the cart. The integration path controls how it connects. Set the `useSfraApi` switch to `true` to route through SFRA controllers. Set it to `false` to call SCAPI directly. Select the option that suites your business logic. Specify the connections settings per session from the Messaging Session record. The settings include named credentials, apiVersion, siteId, orgId, locale, and currency. These same variable-driven levers apply to the Cart and Order Confirmation subagents, with the scoped variants `cart_tool_calling_guidance` and order\_tool\_calling\_guidance, per-subagent behavior. # B2C Shopper Agent | Site FAQ Subagent The Site FAQ subagent answers shopper questions about store policies, such as FAQs, shipping costs, return time frames, and refunds. It draws answers only from connected knowledge bases and returns a graceful response when it can't find a match.
Subagent Name Subagent Handles Actions
site_faq

Questions about your site, such as:

  • What's your return policy?
  • What is the cost to ship to Canada?
  • What does the warranty cover?
None
To customize this subagent: - Replace `__SITE_FAQ_CONTENT__` with your store's policy and FAQ content files. The subagent answers from these sources. Alternatively, connect the subagent to a knowledge base and use retrieval-augmented generation (RAG) to get answers. Use these actions to configure subagent behavior. knowledge section with these fields. - `rag_feature_config_id`—identifies the RAG feature configuration to use. - `citations_url`—base URL for source citations. - `citations_enabled`—turns source citations on or off. - Modify the instructions to adjust the tone of the information presented, and the formatting, such as bullets instead of prose. If the agent can't find an answer, you can configure the subagent's return message. # B2C Shopper Agent Language and Locale Support The B2C Shopper Agent supports English in these locales. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note For ​​B2C Commerce localization, the product recommendations subagent uses the store's default locale.
Language Locale Code
English English (Australia) en_AU
English (Canada) en_CA
English (India) en_IN
English (Ireland) en_IE
English (New Zealand) en_NZ
English (Singapore) en_SG
English (United Kingdom) en_UK
English (United States) en_US
# B2C Shopper Agent Large Language Model Support Understand supported large language models (LLMs) from multiple providers for embedded features, such as Prompt Builder, including Salesforce-managed models available out of the box. Learn how to bring your own model (BYOLLM) using AI Models (formerly Einstein Studio). ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Changing the model can affect your usage, see [Agentforce and Generative AI Usage and Billing](https://help.salesforce.com/s/articleView?id=ai.generative_ai_usage.htm&language=en_US).
Model Provider Model Family Version Usage Type Model Regions Notes
OpenAI and Azure OpenAI GPT-4.1 gpt-4.1-2025-04-14 Standard Prompts

OpenAI: United States

Azure OpenAI: Australia, Brazil, Canada, France, Germany, India, Italy, Japan, Singapore, Sweden, United Kingdom, United States

See Geo-Aware Routing for OpenAI and Azure OpenAI.
Vertex AI (Google) Gemini 3.5 Flash gemini-3.5-flash-2026-05-19 Basic Prompts India, Japan, Netherlands, Singapore, United States See Geo-Aware Routing for Gemini.
# B2C Shopper Agent Limitations Review these limits of the B2C Shopper Agent. - You can have up to 100 active agents and, within that 100, including one version of the default Agentforce agent. Active Einstein Bots count toward the limit of active agents. See [Activate or Deactivate your Agent](https://help.salesforce.com/s/articleView?id=ai.copilot_setup_activate_deactivate.htm&language=en_US). - You can have a single agent and create up to 20 versions of that agent, but only one version can be active at a time. If you’ve reached the limit, delete older versions before cloning new ones. - Incoming customer messages can't exceed the character limits of the messaging channel. If it does, the channel doesn't deliver the message, and there's no response. Different messaging channels have different character limits. - Agent responses are optimized only for the Agentforce Commerce Client. - The Agentforce Commerce Client, the agent's messaging service, closes the chat session after two hours of shopper inactivity, per Salesforce's platform limits ([Service Agent Limits](https://help.salesforce.com/s/articleView?id=ai.service_agent_considerations.htm&language=en_US)). This inactivity limit is fixed. If a shopper returns after two hours, the chat window shows the welcome message, with no memory of the earlier chat. The B2C Shopper Agent uses the Agentforce Service agent type. Review that agent type's limitations in [Considerations for Agentforce Service Agent](https://help.salesforce.com/s/articleView?id=ai.service_agent_considerations.htm&language=en_US). # B2C Shopper Agent Setup Considerations Before setting up a Shopper Agent for B2C Commerce, consider supported functionality, usage, limitations and allowances, limits, and other issues. - **[B2C Shopper Agent Language and Locale Support](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_language_locale_support.htm&release=264.0.0&type=5)** The B2C Shopper Agent supports English in these locales. - **[B2C Shopper Agent Large Language Model Support](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_llm_support.htm&release=264.0.0&type=5)** Understand supported large language models (LLMs) from multiple providers for embedded features, such as Prompt Builder, including Salesforce-managed models available out of the box. Learn how to bring your own model (BYOLLM) using AI Models (formerly Einstein Studio). - **[Einstein Trust Layer Service Support](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_trust_layer_support.htm&release=264.0.0&type=5)** The Shopper Agent for B2C Commerce supports these trust layer services. - **[Usage Types Consumed by the B2C Shopper Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_usage_types.htm&release=264.0.0&type=5)** The Shopper Agent uses generative AI and Data Cloud to ingest, store, and process data. You’re billed in these categories when you use the Shopper Agent. Before deployment, work with your Salesforce account team to confirm license availability and plan credit usage. - **[B2C Shopper Agent Limitations](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_limitations.htm&release=264.0.0&type=5)** Review these limits of the B2C Shopper Agent. - **[B2C Shopper Agent Subagent and Action Support](https://help.salesforce.com/s/articleView?id=cc.b2c_shopper_agent_subagent_action_support.htm&release=264.0.0&type=5)** The Shopper Agent can't use these subagents and actions available in Agentforce Builder. #### See Also - [What Are Agents?](https://help.salesforce.com/s/articleView?id=ai.copilot_overview.htm&language=en_US) # B2C Shopper Agent Subagent and Action Support The Shopper Agent can't use these subagents and actions available in Agentforce Builder. Unsupported subagents: - General CRM - Single Record Summary Unsupported agent actions: - Identify Object by Name - Identify Record by Name - Query Records - Query Records With Aggregate - Summarize Record - Draft or Revise Email - Update Record Fields - Extract Fields And Values From User Input # Best Practices for Active Merchandising Consider the following best practices when implementing active merchandising in B2C Commerce. - Only use active data attributes for their intended use. - Because inappropriate tagging, to collect different information than specified can violate privacy agreements, be careful when tagging multiple attributes. - Don't over-tag pages to try to collect additional information because it can negatively affect performance. - Supply data for all attributes if you use the feature. B2C Commerce uses some attributes to calculate other attributes, so failing to supply values for them can cause irregular sorting. # Best Practices for Import/Export in B2C Commerce We recommend that you follow established best practices for import and export. If possible, for non-catalog feeds, create import feeds containing only the differences between the current and previous feed. These feeds are referred to as delta feeds. Such feeds are smaller and quicker to import and are less vulnerable to network interruptions. To create a delta catalog feed, you can't include fields that replace the global import mode with a field-specific import mode. For example, it isn't possible to create a delta feed for a bundled product, because the bundled-products field always uses a REPLACE semantic. You can't roll back feeds. Therefore, it’s best practice to archive at least the last feed, so that you can reimport an older version if the new feed can't be validated. However, B2C Commerce doesn't automatically clean out archives, so you must clean out archived files. Contact customer support for a demonstration cartridge for cleaning out archived files. # Bind Component Attributes to Content Assets Bind a component attribute to a content asset attribute in B2C Commerce Page Designer so the component dynamically displays the content asset's data. An administrator must enable the **Enable Page Designer Data Binding** feature switch. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Global Preferences** | **Feature Switches**. Create the content asset you want to use before beginning. For more information, see [Create a Content Asset in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_content_asset.htm&release=264.0.0&type=5 "Create content assets that include text, images, and links via URLs. You can also import content assets from external sources. See Content Asset Types."). If the content asset is offline, Page Designer displays a warning that the content won't appear in the storefront. 1. From the Page Designer visual editor, select a component. The right pane opens, displaying the component's attributes. 2. In the right pane, click **Select Content Asset**. A content asset picker opens, displaying available content assets. 3. Search for or browse to the content asset you want to use. Filter content assets by name or ID. 4. Select the content asset, then click **Apply**. The content asset is now associated with the component. 5. (Optional) Bind a component attribute to a content asset attribute. 1. Click the data binding icon ![data binding icon.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/databinding.png) next to the component attribute. 2. Select the content asset attribute from the dropdown menu. The dropdown shows only attributes from the content asset's **Content** section that have a compatible type (text to text, string to string, or rich text to HTML) and contain content. 6. Click **Save** to save your changes. The component now displays content from the selected content asset. The bound attribute becomes read-only. - To select a different content asset, click **Change Selection**. - To remove the binding and enter content manually, click **Unassign Content Asset Attribute**. - To edit the content asset itself, click the content asset name (shown as a link) in the right pane. # Boost and Bury Rules for B2C Commerce Boost and bury rules influence product ranking in search keyword and category results while preserving standard relevance and sorting logic. Use boost and bury rules to promote seasonal or high-margin products, deemphasize products that you don't want to dominate results, and apply targeted merchandising logic for specific search terms or categories. Boost and bury rules add a merchandising layer on top of standard ranking. The rules adjust product scores before final sorting to promote or deprioritize strategic products without hard overrides. ## How Boost and Bury Rules Work The rule defines the products to target, the context in which the rule applies, and how strongly to adjust the ranking. A boost and bury rule has these components. - **Rule definition:** Specify the boost or bury behavior, the factor value, and if the rule is active. - A factor adjustment modifies the ranking, not absolute search position. A product must still be relevant to appear in the search results. Buried products are deprioritized but not removed from the search results. - **Targets:** Identify which products the rule impacts, using criteria like prodict IDs, attributes, or attribute combinations. Targets are evaluated independently of search terms and cached to avoid increasing query times. - **Qualifiers:** Define when the rule applies for a search term or category. Rules without qualifiers apply site-wide. ## Boost and Bury Rules and Sort Rules Boost and bury rules work with the existing sort rules, rather than replace them. When boost or bury rule is active, it influences ranking by modifying the values of the text\_relevance and category\_position sort attributes. All other sort attributes remain unchanged. This table describes how boost and bury rules influence the text\_relevance and category\_position sort attributes.
Sort Attribute How the Attribute is Adjusted
text_relevance

For search experiences:

  • Boosted products receive a higher relevance score.
  • Buried products receive a lower relevance score.
  • Sorting then proceeds normally by using the adjusted values.

This approach lets boosted products to compete fairly based on how relevant the products are to the search term.

category_position

For category experiences, the attribute is modified only when the shopper is viewing a category in these ways:

  • Direct navigation to a category page.
  • Category results reached via search.

If the shopper isn't in a category context, the category_position attribute isn't affected.

This approach prevents category merchandising rules from unintentionally impacting pure keyword searches.

Boosting products without a category position doesn’t push down products that have a category position. Products with a category position are sorted before products that don’t have a category position. A boost rule acts as a tie-breaker only between products that share position value.

## Supported Operators and Data Types You can use these date types: string, boolean, integer, number, date, and date-time. See [Supported Data Types for Search and Sorting Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_supported_data_types_for_search_and_sorting_rules.htm&type=5&language=en_US). Boost and bury rules support these operators: - Equals - Contains - Is defined - Is not defined - Does not equal - Starts with - Greater than - Less than If you're using an active data attribute, the rule can't include the `contains` and `start with` operators. ## Boost and Bury Rule Precedence If multiple rules apply to a product, the system selects one rule based on scope in this order of precedence. - Search term scope (most specific) - Category scope (subcategories don’t inherit rules from their parent categories) - Site-wide scope (least specific) If multiple rules of the same specificity match a product, the most recently created rule takes precedence. ## Condition Logic The ANY or ALL conditions affect the results of the targeted products. For example, both of these rules target the category Mens Shoes. The first rule boosts only men’s blue sneakers. The second rule boosts blue sneakers and slip-on sneakers. ![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_example.png) Example Target: Mens | Clothing | Shoes Rule Name: Boost Blue Sneakers ALL Conditions: Attribute: Refinement Color, Operator: Equals, Value: blue ![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_example.png) Example Target: Mens | Clothing | Shoes Rule Name: Boost Sneakers ANY Conditions: Attribute: Refinement Color, Operator: Equals, Value: blue Attribute: Refinement Type, Operator: Equals, Value: slip-on - **[Prepare Attributes for Boost and Bury Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_enable_boost_and_bury.htm&release=264.0.0&type=5)** Prepare your B2C site to create boost and bury rules in Visual Merchandising. - **[Create a Boost or Bury Rule](https://help.salesforce.com/s/articleView?id=cc.b2c_create_boost_and_bury_rules.htm&release=264.0.0&type=5)** Create a rule that boosts or buries matching products in your B2C Commerce storefront for a search term, a category, or site-wide context. - **[Import Boost and Bury Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_import_boost_and_bury_rules.htm&release=264.0.0&type=5)** Use search import and export to create, update, or replace boost and bury rules in bulk on your B2C Commerce storefront. #### See Also - [Visual Merchandising for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_visual_merchandising.htm&language=en_US) # Boost and Bury Rules in Agentic Commerce Search After Agentic Commerce Search for B2C Commerce determines initial results, boost and bury rules apply a targeted adjustment layer based on catalog attributes. Use them when AI-driven ranking alone doesn't reflect your business priorities. Use boost and bury rules to apply business priorities without changing the underlying search algorithm. For example, promote a brand or demote products with specific attributes. Apply boost and bury rules sparingly to preserve the quality of AI-driven results. Both rule types use Broad Rank Boost or Relative Position Boost. ## Broad Rank Boost and Bury Broad Rank Boost pulls products up from anywhere in the result set, even from position 500+, to make them visible. Bury mode pushes products down throughout the entire result set, including products that normally rank at the top. Configure the strength as a percentage in Broad Rank Boost Settings. ## Relative Position Boost and Bury Relative Position Boost nudges products higher or lower within the top 240 results based on their current position. It doesn't reach products ranked under position 240 or pull them into view. ## Selecting a Boost and Bury Mechanism Use this guidance to select the right boost and bury mechanism: - **Bring products ranked after position 240 into view**: Use Broad Rank Boost to find them, then apply Relative Position Boost to adjust placement. - **Adjust products in the top results**: Use Relative Position Boost for campaign priorities, brand spotlights, or minor visibility adjustments. - **Suppress clearance or out-of-season products sitewide**: Use Broad Rank Boost (Bury) as a Global Rule to demote matching products throughout the entire result set. - **Subtly demote visible products without removing them**: Use Relative Position Boost (Bury) to lower products within the visible top results. ![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_example.png) Example **Boost scenario:** A new brand ranks outside the top 240 results. Apply a Broad Rank Boost to bring the brand's products into the visible range. Then apply a Relative Position Boost to place featured products at the positions you want within the top results. **Bury scenario:** Create a Global Rule with Broad Rank Boost (Bury) to suppress clearance products across all results. The rule pushes them lower throughout the entire result set without removing them from the catalog. #### See Also - [Create a Merchandising Rule in Agentic Commerce Search](https://help.salesforce.com/s/articleView?id=cc.b2c_acs_create_rule.htm&release=264.0.0&type=5 "In Agentic Commerce Search for B2C Commerce, merchandising rules control product ranking, placement, and visibility for specific queries, categories, or catalog attributes. A rule can target a specific query or category, or apply globally across all searches.") # Browser Support B2C Commerce supports several different browsers. Desktop - Microsoft Edge: Supports latest stable browser version - Google Chrome: Supports latest stable browser version - Mozilla Firefox: Supports latest stable browser version - Apple Safari: Supports latest stable browser version # Browser-Based Local Data Storage in B2C Commerce B2C Commerce uses browser cookies and session storage objects to store and track information. Browser cookies and session storage object information can exist on machines with browsers running B2C Commerce merchant applications, or with browsers accessing websites that run on B2C Commerce. **Understanding Cookie Type Classifications** The tables in this topic classify cookies as either **Required** or **Functional**. These classifications describe **technical purpose and platform dependency only**. They are not intended to represent legal classifications or consent requirements under privacy regulations such as GDPR or ePrivacy. - **Required:** Cookies classified as Required are technically necessary for the operation, security, or integrity of the Salesforce B2C Commerce application or service. These cookies support essential functions such as session management, authentication, security controls, and infrastructure routing. They are created as part of normal platform operation and cannot be disabled without impacting core functionality. - **Functional:** Cookies classified as Functional support feature-level behavior and platform capabilities beyond core session and security functions. These cookies enable or control optional functionality such as analytics, personalization, preference handling, configuration signaling, or feature gating. Functional cookies **can be created by default** to support platform behavior or configuration, even when the associated feature is disabled or suppressed. Being labeled "Functional" does not guarantee that the cookie is created only after consent. The classification reflects technical purpose, while creation timing is driven by platform behavior. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The Required and Functional classifications do not map 1:1 to GDPR-defined cookie purposes (Strictly Necessary, Preferences, Statistics, Marketing). GDPR is an EU regulation, but its enforcement and interpretation vary by country. Merchants are responsible for determining which cookies require consent in their jurisdiction and for managing consent via a Consent Management Platform (CMP). Consult your legal advisors for guidance specific to your situation. When processing privacy requests from shoppers for account deletion or the Right to be Forgotten, merchants can inform or remind the shopper about the cookies set on B2C Commerce websites. Although these data objects are no longer used after their lifespans expire, they sometimes persist on a shopper’s browser. Depending on the scope of a shopper's request, a merchant reminds them that they can and, in some cases, delete all data objects from their own browsers if they wish to withdraw consent or completely delete all identifiable data from B2C Commerce. Instructions for deleting these objects manually depends on the browser type. Instruct shoppers to refer to the documentation for their browser. Consult your legal advisors when responding to privacy requests. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You might want to implement functionality on your storefront that allows shoppers to easily delete their own B2C Commerce cookies. For example, you could create a privacy information page with a button that deletes B2C Commerce cookies from the shopper's browser. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note In the following tables, an asterisk in an object name represents a random string appended to the name. For example, the dwac\_\* cookie can appear on a user’s computer as "dwac\_js894CJS92kD." **Shopper Applications** The following B2C Commerce shopper-facing applications use cookies that can exist on a shopper's computer: - Salesforce B2C Commerce Storefront - SiteGenesis - B2C Commerce Einstein **B2C Commerce Storefront** Used by B2C Commerce to operate a storefront.
Cookie Lifespan Cookie Type Description
dwanonymous_* 180 days Required Anonymous visitor identifier set by the B2C Commerce platform at the start of a storefront session. Identifies an unregistered shopper or a shopper who has not yet logged in, independent of the session. The * in the cookie name is a value unique to the site.
dwsid Current session Required Identifies the current browsing session.
sid Current session Required Identifies the current browsing session. The Salesforce Reference Architecture (SFRA) uses this to determine whether to display the cookie hint content asset. Only used by SFRA and by customizations.
dwsecuretoken_* Current session Required Used with dwsid to secure the session through HTTPS. The * in the cookie name is a value unique to the site.
dwcustomer_* 180 days Functional Identifies a registered shopper. Used only when the shopper selects Remember Me. (This is an optional website feature.) The * in the cookie name is a value unique to the site.
dw_dnt* Current session Required Controls client-side JavaScript for B2C Commerce tracking features (Analytics, Einstein, and ActiveData). B2C Commerce sets it with each page response, based on the value of the corresponding session attribute TrackingAllowed. The value of this cookie always matches that of the Einstein __cq_dnt cookie.
dwac_* Current session Functional Stores the following data for analytics purposes: Session ID, report suite name, shopper’s customer ID, source code group ID (encoded), currency mnemonic, and time zone. The * in the cookie name is a value unique to the site.
dwpersonalization_* 180 days Functional Tracks participation in A/B test groups for analytics purposes. If the shopper participated in a test, then the value is cleared when the shopper logs out. The * in the cookie name is a value unique to the site.
dwsourcecode_* Varies from 0-999 days Functional Stores the source code for campaign and affiliate tracking. You set the lifespan of this cookie for each source code in Business Manager. The * in the cookie name is a value unique to the site.
__anact Ephemeral Functional Transfers some Analytics-related data to the front end, such as data for no-hit searches.
dw_store 180 days Functional The store id for the session. This is used for the Store-Specific Pricing and Promotion feature. When a shopper enters a postal or zip code, it is used to locate the nearest store and store that in this cookie to drive pricing and promo experiences.
dw_effective_time Session Functional

The effective time for the session. This is used for the Shop the Future feature. When the shopper enters an effective date, for example, future order pick up, it is used to find the accurate pricing and promotions to display to the shopper.

The Shop the Future feature is not supported in Product List Pages.

_cfduid 30 days Required

Helps Cloudflare detect malicious visitors to customers' websites and minimize blocking of legitimate users. Can be used on customers' end user devices to identify individual clients behind a shared IP address and can apply security settings on a per-client basis. This is required to support Cloudflare's security features.

See Cloudflare's documentation for details on this third-party cookie.

**SiteGenesis** Used by SiteGenesis and available for use by sites based on SiteGenesis. Not used by SFRA.
Cookie Lifespan Cookie Type Description
dw_cookies_accepted Current session Required

When the merchant has enabled the cookie hint notice, it records that the shopper has acknowledged that cookies are being used.

See SiteGenesis Standards Compliance for more information.

dw_TLSWarning 30 days Required

Identifies whether the shopper's browser only supports outdated versions of Transport Layer Security (TLS). Set to true if the browser fails the compatibility check or if the check can't be completed.

See TLS Browser Detection for information on the compatibility check.

dw Current session Functional This cookie has been deprecated and is no longer used to collect data. It is in the process of being removed from the SiteGenesis codebase.
**Used by Einstein for AI functionality** The uuid (third-party) and \_\_cq\_uuid (first-party) cookies contain a randomly-generated user ID that exists on a shopper's browser and can be used during a visit to any B2C Commerce website, regardless of the merchant. These cookies are only set or accessed during a site visit if the \_\_cq\_dnt cookie, which tracks consent, is not set. The merchant is responsible for obtaining and tracking consent. Note: Once a value is set for these cookies, it remains until it expires or until the shopper deletes it from the browser. When a shopper visits a B2C Commerce merchant site where the \_\_cq\_dnt cookie is set, these cookies are simply ignored. If a shopper requests that a merchant delete their data, then all data associating that shopper with the cookie value is removed from the merchant's B2C Commerce instance. The cookies can remain on the shopper's browser, but that merchant can no longer connect them to that shopper. | Data Object | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | cqcid | Current session | Required | Hashed ID for an unregistered shopper. | | cquid | Current session | Required | Hashed ID for a known shopper. | | \_\_cq\_uuid | 13 months | Functional | First-party version of the third-party uuid cookie. Contains a randomly generated user ID. Used to collect information about the shopper's activities on the merchant's own website. This information is also used for analytics purposes, including by B2C Commerce Reports and Dashboards. | | \_\_cqact | Current session | Required | Holds the queue of browser activities until they are sent. | | \_\_cqviews | Current session | Required | If sessionStorage is not available, contains the most recently viewed recommendations until they are sent. | | \_\_cqsviews | Current session | Required | If sessionStorage is not available, contains the products in the most recent search results until they are sent. | | \_\_cqcviews | Current session | Required | If sessionStorage is not available, contains the products in the most recently viewed category page until they are sent. | | \_\_cq\_anchor | Current session | Required | If sessionStorage is not available, contains the anchor products for recommendations on a page. | | weird\_get\_top\_level\_domain | Current session | Required | Detects the root domain on the page. | | \_\_cq\_bc | 30 days | Functional | First-party version of the bc cookie. Contains activity history, such as the last 10 products viewed by the shopper. | | \_\_cq\_seg | 30 days | Functional | Contains inferred shopping propensity attributes and other segment attributes used in predictive sort. (First-party version) | | \_\_cq\_dnt | Current session | Required | Indicates that the browser has opted out of CC Einstein tracking for this site. B2C Commerce sets it with each page response based on the value of the corresponding session attribute **TrackingAllowed**. The value of this cookie always matches that of the Storefront dw\_dnt\* cookie. | | cq | Current session | Functional | (Session storage object) Tests whether sessionStorage is available. | | cq.anchor | Current session | Functional | (Session storage object) Contains anchor product IDs. | | cq.viewReco | Current session | Functional | (Session storage object) Contains the most recently viewed recommendations. | | cq.viewSearch | Current session | Functional | (Session storage object) Contains products from the most recent search results. | | cq.viewCategory | Current session | Functional | (Session storage object) Contains products from the most recently viewed category page. | | \_\_cq\_seg | 30 days | Functional | Contains inferred shopping propensity attributes. Third-party cookie set on .cquotient.com. | | uuid | 30 days | Functional | Third-party version of the first-party \_\_cq\_uuid cookie set on .cquotient.com. Contains a randomly generated user ID. Used to track data for analytics purposes, including B2C Commerce's own analytics as described in the Trust & Compliance documentation, such as B2C Commerce Reports and Dashboards. | | bc | 30 days | Functional | Contains activity history, such as the last 10 products viewed by the shopper. Third-party cookie set on .cquotient.com. | | \_\_cq\_recoUUID | Current session | Functional | Tracks the recommendation request so that a click can be attributed to it. | | \_\_cq\_banditPrediction | Current session | Functional | Tracks the contextual bandit response so that a click can be attributed to it. | **Merchant Applications** The following B2C Commerce merchant applications use cookies that can exist on a user's computer. No shopper data is involved. - Control Center - Account Manager - Log Center - Business Manager - Order Management - B2C Commerce Reports and Dashboards **Control Center** | Cookie | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | SESSION | Current session | Required | Identifies the current browsing session. | | XSRF-TOKEN | Current session | Required | Used to validate requests. This protects against cross-site request forgery (CSRF). | **Account Manager** | Cookie | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | JSESSIONID | Current session | Required | Identifies the current browsing session. | | dwAccountManager | Current session | Required | Authenticated session ID | | amlbcookie | Current session | Required | OpenAM-specific load-balancing cookie for Account Manager (not used). | | NGINX\_SESSION | Current session | Required | Load-balancing cookie for Account Manager | | XSRF-TOKEN | Current session | Required | CSRF protection token | **Log Center** | Cookie | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | JSESSIONID | Current session | Required | Identifies the current browsing session. | **Business Manager**
Cookie Lifespan Cookie Type Description
dwbmsid Current session Required Identifies the current browsing session when the Separate Business Manager Session Cookie feature is active.
_ga 720 days Required

Identifies the official Google Analytics cookie. As per Google documentation, this cookie distinguishes users. B2C Commerce sends the following data as part of this cookie:

  • user ID
  • page information
  • customer (merchant), such as Tory Burch
  • site
  • PSD, such as production, staging, development
  • page, such as page module
_gat 1 minute Required Identifies the official Google Analytics cookie. Per Google documentation, this cookie throttles the request rate. This is a temporary cookie with a life span of 1 minute and doesn't include any personal identifiable information.
pendo_identity 94 days Required Identifies the Pendo cookie that processes the Salesforce B2C Commerce data.
pendo.sess.jwt 36 hours Required Identifies the Pendo cookie that processes the Salesforce B2C Commerce data.
**Order Management** | Cookie | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | .BF397AUTH | Current session | Required | Stores authentication token. | | ASP.NET\_SessionId | 15 minutes when true; 30 minutes when false | Required | Identifies the authenticated session ID. | | AWSELB | Current session | Required | (For AWS users) Identifies the load-balancer session. | | RETAILCENTER | Permanent | Required | Identifies the store when a user selects the store in Retail Center. The value is specific to the computer. | | AWSELBCORS | Current session | Required | (For AWS users) Uses session for session stickness. | | MscState | Current session | Required | Identifies the session cookie for the sdk and website. The cookie saves the cart data in Customer Service Center, the identity of how users are logged in, and the cultural locale information for the logged in user. | | \_\_dwocXtkn | Current session | Required | AntiCSRF validation token | | CSC.minstate | Current session | Required | Identifies the Customer Service Center's session state. | **B2C Commerce Reports and Dashboards** | Cookie | Lifespan | Cookie Type | Description | | --- | --- | --- | --- | | connect.sid | 1 hour | Required | Identifies the current browsing session. | | XSRF-TOKEN | 1 year | Required | Validates requests. Protects against CSRF. | | \_pendo\_accountid\* | Varies | Functional | Processes data for Pendo analytics. Also used by Einstein and Business Manager. | | \_pendo\_meta\* | Varies | Functional | Processes data for Pendo analytics. Also used by Einstein and Business Manager. | | \_pendo\_visitorid\* | Varies | Functional | Processes data for Pendo analytics. Also used by Einstein and Business Manager. | # Bucketing Search Refinements in B2C Commerce Use the bucket display name as a refinement option. Use this option when the actual product value matches one of the values that are pre-defined as a comma-separated list. Define buckets of refinement values and provide a label for each bucket, which is eventually presented when drilling down on that attribute. Testing Tips Refresh the index when you: - Use bucketing and the value lost changes. - Update the library. When the refresh is complete, make check that all changes are made correctly. Refresh after each library update. Localization To use localized bucket labels, supply a localized label for the bucket values for attribute refinements. # Build Your Site Structure When building your B2C Commerce site, the order that you collect and generate the underlying product, content, and promotional qualifier information in matters. In general, create your catalog, product and pricing information first, and then create a marketing program to promote your products. - Create the catalog and category structure, which determine site navigation. - Create the product information. - Import or create product details, including: - Product details - Products - Product options - Variation attributes - Product sets - Bundles - Product attributes - Category assignments - Images - Inventory - Import or create the site content. - Text - Images - Links - Templates - Create the price books and assign prices to products. - Create a marketing program. - Create promotional elements. - Qualifiers - Source codes and Source code groups - Customer groups - Coupons - Content slot configurations - Product - Category - Content Asset - HTML - Search sorting rules - Create promotions. - Promotion class: product, order, shipping - Compatibility: Exclusivity - Discounts - Create campaigns that contain: - Schedules - Customer groups - Source codes - Coupons - Experiences - Slot configurations: assign: - Slot context - Schedule - Customer groups - Rank - Promotions: assign: - Schedule - Customer groups - Source codes - Coupons - Rank - Sorting rules - Categories - Create A/B tests to test promotional elements that contain: - Customer groups - Experiences - Slot configurations: assign: - Slot context - Rank - Promotions: assign: - Rank - Sorting rules: assign: - Categories # Bulk Migration or Creation of Account Manager Users An open source tool, Salesforce Commerce Cloud (SFCC)-CI CLI (https://github.com/SalesforceCommerceCloud/sfcc-ci) provides user management bulk actions in B2C Commerce Business Manager and Account Manager. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) The CLI makes it easier to consolidate users from multiple Business Manager instances to one Account Manager instance. While not automated, this CLI alleviates the heavy lifting. See [Command Line Interface](https://github.com/SalesforceCommerceCloud/sfcc-ci). #### See Also - [Provisioning Users in Account Manager](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_provisioning_users.htm&release=264.0.0&type=5 "The current version of single sign-on (SSO) doesn’t yet support deletion of user accounts between B2C Commerce Account Manager and Salesforce Identity. An Account Manager admin creates a profile and assigns access for each user to applications like Business Manager or Control Center.") - [Partners and Single Sign-On to Salesforce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_partners_and_sso.htm&release=264.0.0&type=5 "Your company security policies drive partner login through your IDP (Identity Provider). Some IDPs offer guest logins that don’t require a license. Alternatively, your partners can log into B2C Commerce apps with their existing Account Manager credentials.") - [Account Manager Workflow](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_workflow.htm&release=264.0.0&type=5 "Learn how data flows through the configurations when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") - [Configurations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configurations.htm&release=264.0.0&type=5 "Complete SSO configuration.") # Business Manager Email Configurator Use the optional email settings to define your own SMTP server for B2C Commerce customer and platform email delivery. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note For information about SPF and DKIM authentication requirements for Google and Yahoo, See [Support for DKIM Authentication](https://help.salesforce.com/s/articleView?id=cc.b2c_support_for_dkim_authentication.htm&release=264.0.0&type=5 "Salesforce B2C Commerce provides an out-of-the-box solution on our first-party Point of Deployment (POD) that customers can use for their email requirements. This service provides support for DKIM and SPF authentication. DKIM is an email authentication protocol that adds a cryptographic digital signature to outgoing emails. With DKIM, receivers can verify that the domain owner authorized the email and that it wasn’t altered in transit. DKIM helps reduce spam and phishing emails."). When you configure this option, your customer email uses the SMTP server that you set up in the configurator. If you don’t set a custom configuration, your customer and platform email continue to use the default SMTP server that Salesforce provides. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you check use this custom email configuration but don’t complete the configuration setup, customer and platform email don’t work. Set the configuration to use the server for customer and platform email or customer email only. When you set the configurator for customer email only, the platform notification email uses the default SMTP server. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Make sure the SMTP server supports STARTTLS. - **[Support for DomainKeys Identified Mail (DKIM) Authentication](https://help.salesforce.com/s/articleView?id=cc.b2c_support_for_dkim_authentication.htm&release=264.0.0&type=5)** Salesforce B2C Commerce provides an out-of-the-box solution on our first-party Point of Deployment (POD) that customers can use for their email requirements. This service provides support for DKIM and SPF authentication. DKIM is an email authentication protocol that adds a cryptographic digital signature to outgoing emails. With DKIM, receivers can verify that the domain owner authorized the email and that it wasn’t altered in transit. DKIM helps reduce spam and phishing emails. - **[Configure Business Manager Email Settings](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_business_manager_email_settings.htm&release=264.0.0&type=5)** To define your own SMTP server for B2C Commerce customer and platform email delivery, configure email settings. # Business Manager Import and Export Privileges in B2C Commerce Business Manager provides many levels of system privileges, and with that comes many separate importing and exporting modules. However, the functionality presented in the Business Manager is similar for each module. Give a user permission for: - Site Import/Export, which includes all site information. - Import/Export for Operations information, such as job schedules. - Import/Export of site information, such as products and content. - WebDAV access to log files and import/export directories on the server - WebDAV access to custom cartridges. Request access to an FTP port from B2C Commerce Support if you want to use the FTPClient scripts. Make sure that users have the appropriate permissions to run the file transfer and import/export jobs. To set permissions, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then navigate to **Organization** | **Roles and Permissions**. # Business Manager Module Data Replication in B2C Commerce The tables in this section map the data managed in Business Manager modules to data replication tasks. - **[Merchant Tools Data Replication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_merchant_tools_data_replication.htm&release=264.0.0&type=5)** These tables map Business Manager Merchant Tools modules to data replication tasks. - **[Administration Data Replication in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_administration_data_replication.htm&release=264.0.0&type=5)** These tables map Business Manager Administration modules to data replication tasks. # Business Manager Network Access in B2C Commerce To limit network access to Business Manager, configure security controls to restrict access to specific IP addresses or ranges. The intent of setting these network access restrictions is to lock out attackers who obtained valid credentials through illegitimate means. To enable this functionality, you can specify a range of allowlisted IP addresses allowed to access Business Manager and a range of blocklisted IP addresses not allowed to access Business Manager. If an IP address is blocklisted and allowlisted, it’s denied access. # Buy Now and Pay Later Payment Services for B2C Commerce The buy now, pay later payment option for B2C Commerce makes it convenient for shoppers to purchase items in all price ranges. Salesforce Payments offers Buy Now, Pay Later payment through Klarna and AfterPay. - **[Buy Now Pay Later with Afterpay for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_buy_now_pay_later_with_afterpay.htm&release=264.0.0&type=5)** Afterpay is available in Salesforce Payments through your Stripe Merchant account as a Checkout payment method. With Afterpay, shoppers make payment in interest-free installments. This feature is available for B2C Commerce. - **[Buy Now Pay Later with Klarna for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_buy_now_pay_later_with_klarna.htm&release=264.0.0&type=5)** Klarna is available as a Checkout payment method. With Klarna, shoppers can spread the cost of their order over three or four interest-free payments. To review the countries where Klara is available, see the Stripe documentation. This feature is available for B2C Commerce. # Buy Now and Pay Now Checkout Methods for B2C Commerce Salesforce Payments has two express checkout experiences: Pay Now and Buy Now. Pay Now requires a current shopper basket while Buy Now ignores the current basket. Both Pay Now and Buy Now are included in your site when you use `plugin_commercepayments` with a compatible Salesforce Reference Architecture (SFRA) version. You can add either or both because they’re independent of one another. If you customize the checkout methods for your site, each one has its own requirements. With Buy Now, the shopper sees a button to buy a specific product. Clicking the button prepares a basket that contains only that product. It completes checkout using the browser payment app appropriate for the shopper’s device and browser, such as Apple Pay or Google Pay. With Pay Now, the shopper sees a button to complete checkout using a browser payment app for whatever is in their basket. ## Buy Now The `plugin_commercepayments` cartridge adds a Buy Now express checkout button to the product details page. See the following templates: - `product/productDetails` includes - `product/components/addToCartProduct` includes - `product/components/addToCartButtonExtension` includes - `_commercepayments/components/product/buyNowButtons` All but the buyNowButton template is part of the SFRA `app_storefront_base` cartridge. The `plugin_commercepayments` cartridge contains `buyNowButtons` and overrides `addToCartButtonExtension` to include it. If you aren’t using the latest version of SFRA, adjust your `addToCartProduct` or equivalent to include `buyNowButtons`. The `buyNowButtons` template depends on data in the view model. If the data isn’t present, the button doesn’t work as expected. The `addToCartButtonExtension` template sets a page variable named `buynowproduct` to the product model object for products bought through express checkout. If you include `buyNowButtons` directly, you must first set a compatible object at `buynowproduct`. The Product-Show controller adds the data to the view model. The SFRA base controller adds some information about product inventory and availability and uses it to determine if the product can be purchased. If the product can’t be ordered the Buy Now button is hidden. The `plugin_commercepayments` cartridge also appends code to this controller to add a `dw.extensions.payments.SalesforcePaymentRequest` object containing configuration and other information necessary to inject express checkout code. Review the template, controllers, and API documentation for more details. Because Buy Now doesn’t require an existing shopper basket, and ignores one if it exists, all the data supplied to the browser payment app to complete checkout must be calculated independently of a basket. If your product details page is cached, the data is cached as well. The data must match the product price and other site configurations, such as for taxes, shipping, and promotions. When the data matches, the resulting basket matches what the shopper sees in the payment app. The shopper completes the purchase without further interaction with the B2C Digital platform or your custom code, so the amounts must be correct. The `plugin_commercepayments`cartridge provides the `paymentHelpers` script function getBuyNowData to calculate the data for a product model object. It in turn uses the `checkoutHelpers` script function `calculateBuyNowData` to calculate the data for a specific SKU, price, quantity, and options. These functions can work for your site out of the box. To support your site needs, you can customize specific products, prices, shipping methods, promotions, and tax calculations. If your product details page is cached, make sure that the output of your custom calculations can also be cached. Anytime the shopper changes something that affects the total line items, or other data to be shown in the browser payment app, update the Buy Now button. The aim is to make sure that when the shopper uses the button the payment app shows data matching the resulting basket. The `plugin_commercepayments` cartridge recalculates the data in code appended to the `Product-Variation` controller. It includes the data in the response, and updates the Buy Now button using a Salesforce Payments client-side JS API. SFRA calls that controller for changes to the variation attributes and for changes to the quantity, product options, and so on. Call this controller or follow a similar pattern to update use cases like this on your site. ## Pay Now The `plugin_commercepayments` cartridge adds Pay Now express checkout buttons in three places. - In the mini cart below the Checkout button - On the cart page below the Checkout button - At the top of the checkout page above the Customer, Shipping, and Payment Method cards The buttons are implemented using these templates. - `checkout/cart/miniCart` includes - `_commercepayments/cart/checkoutButtons` includes - `_commercepayments/components/product/paymentRequestButtons` - `cart/cart` includes - `_commercepayments/cart/checkoutButtons` includes - `_commercepayments/components/product/paymentRequestButtons` - `_commercepayments/checkout/checkout` includes - `_commercepayments/components/product/paymentRequestButtons` The `miniCart` template is part of the SFRA base and renders in an AJAX controller response. The `cart` template is also part of the SFRA base and is the cart page. The `plugin_commercepayments` cartridge overrides the SFRA base `checkoutButtons` template used in both and includes `paymentRequestButtons`. The `plugin_commercepayments` cartridge also overrides the entire SFRA base checkout template, and includes `paymentRequestButtons` directly. The `buyNowButtons` template depends on the property `paymentRequestData` in the view model. The `plugin_commercepayments` cartridge provides a `paymentHelpers` script function `createPaymentRequestData` to calculate it. Because it’s possible that multiple Pay Now buttons can appear on the same browser page, each call returns data for a unique button. If you reuse the same `paymentRequestData` to create multiple buttons, they can fail to work as expected. The `createPaymentRequestData` function uses the current shopper basket to calculate the data to show in the browser payment app for a Pay Now button. Call this function after modifying the basket and recalculating it using your site basket calculation script that applies promotions, computes shipping and tax, and updates totals. If you call the function before then, the data might not reflect the resulting state of the shopper basket. The cart and checkout pages aren’t often cached. If your site caches those pages in any way, be sure that the data is always updated when the basket changes. The `plugin_commercepayments` cartridge recalculates the data when the basket is changed on a page with a Pay Now button. The data includes quantity and line item changes in the mini cart or cart, changing the shipping method on the cart or checkout pages, applying a coupon, and so on. In each case code is appended to a controller to add the recalculated data to the response. Event handlers on the client side update the Pay Now button using the same Salesforce Payments client-side JS API as for Buy Now. Follow a similar pattern to update for other use cases on your site. # Buy Now Pay Later with Afterpay for B2C Commerce Afterpay is available in Salesforce Payments through your Stripe Merchant account as a Checkout payment method. With Afterpay, shoppers make payment in interest-free installments. This feature is available for B2C Commerce. Shoppers can choose to make three monthly payments or four bi-weekly payments. Afterpay is interest-free for shoppers and doesn’t require a credit check during the sign-up process. Afterpay sets initial spending limits for new customers. Spending limits for shoppers can increase as they use Afterpay. Salesforce Payments offers Afterpay through your Stripe Merchant account. When Afterpay is active on your storefront, the product detail page and checkout cart list Afterpay as a payment option. The option includes the pay-in-3 payment amount, the pay-in-4 payment amount, and a link to information about Afterpay. When a shopper selects to pay with Afterpay, they’re redirected to the Afterpay authorization page. After authorizing the payment, the shopper returns to your storefront order confirmation page. To activate Afterpay for your Salesforce Reference Architecture (SFRA) storefront, see [Activate a Payment Method for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_activate_payment_method.htm&release=264.0.0&type=5 "Activate the payment methods you want to offer shoppers in your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site. Offer Checkout, Express Checkout, or both."). Afterpay is supported in Australia, Canada, France, New Zealand, the United Kingdom, and the United States. These merchant categories are prohibited from using Afterpay. - Alcohol - Digital games and apps - Donations - Electronics - Flash sales - Pre-orders - Travel # Buy Now Pay Later with Klarna for B2C Commerce Klarna is available as a Checkout payment method. With Klarna, shoppers can spread the cost of their order over three or four interest-free payments. To review the countries where Klara is available, see the Stripe documentation. This feature is available for B2C Commerce. To activate Klarna for your Salesforce Reference Architecture (SFRA) storefront, see [Activate a Payment Method for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_activate_payment_method.htm&release=264.0.0&type=5 "Activate the payment methods you want to offer shoppers in your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site. Offer Checkout, Express Checkout, or both."). When shoppers select Klarna for payment, they’re redirected to Klarna to complete their cart checkout. In the Klarna window, the shopper reviews and agrees to the payment terms. If the shopper chooses to complete the purchase, Klarna authenticates the shopper’s identity and account. The shopper completes the purchase and returns to your site where the transaction details appear. These merchant categories are prohibited from using Klarna. - Charities - Political organizations, parties, or initiatives # Buy X and Y Get Z Promotion in B2C Commerce A Buy X and Y Get Z product promotion awards a shopper a free product if their cart contains more than one different qualifying product. With this promotion type, the same item can't be both qualifying and discounted and can't count multiple times towards the qualifying condition. For example: buy 1 red item and 1 pair of shoes to get a free widget. If the shopper buys a pair of red shoes, they don't get a free widget even though they bought a product that satisfies the two qualifying groups. A pair of shoes is one product (SKU). The customer must buy two products to qualify, but only a portion of the discounted product combination must be present. This promotion always uses the most expensive products as the qualifying products. # Buy X for Total Promotion in B2C Commerce Use the Buy X for Total promotion type for products with the same retail value or different prices. For products with the same retail value, an example is Buy any two gifts that cost $5 each for only $8 (save $2). For products with different values, an example is Product A is $6, product B is $5 and product C is $5.50. The shopper can buy any two items for $8 to save $2 to $4. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Separate qualifying and discounted products aren’t supported. Tiering is supported for discounted products, not qualifying products. ## Discount Processing Salesforce B2C Commerce prorates the savings across multiple products and distributes them evenly across all discounted products. - For product discounts, the price adjustments display beneath product line items, representing a negative amount calculated for the specific discount. - For order discounts, the price adjustment is the amount of the order discount, prorated based on individual units, features, and other quantity fields. The actual discount is the difference between the original price and the price defined by the promotion. - For a standard fixed-price discount, the fixed price applies per product item. For example, the product unit price is $10 and the fixed-price discount amount is $8. The price adjustment is the $2 difference between the two prices. - For a Buy X for Total fixed-price promotion with multiple prices, B2C Commerce calculates the savings based on multiple products. It then distributes the savings evenly across all discounted products. If the non-discounted price of the total group of items is less than the discounted price, the price doesn't raise to the discounted price. ## Example You' run the promotion Buy 3 shirts for $22. The shopper's cart has: | Shirt color | Number ordered | Unit price | | --- | --- | --- | | Red | 2 | $13 | | Blue | 2 | $12 | The price adjustments are as follows: | Shirt color | Number ordered | Unit price | Adjusted price | Discount per item | | --- | --- | --- | --- | --- | | Red | 2 | $13 | $10.95 | $5.47 | | Blue | 1 | $12 | $5.05 | $5.05 | Here's a breakdown of the discount calculation: 1. Discount fixed-price: $22 2. Applicable discounted products: 2 x Red Shirt, 1 x Blue Shirt 3. Total price applicable discounted products: 2 x $13 + 1 x $12 = $38 4. Total savings: $38 - $22 = $16 5. % savings: 16/38 = 0.421 (that is, 42.1%) 6. Price adjustment per red shirt item: $13 \* 0.421 = -$5.47 7. Price adjustment per blue shirt item: $12 \* 0.421 = -$5.05 The promotion applied on two red shirts, but only one blue shirt, because the red shirt is more expensive and discounting it gives the better deal. ## Tiering Example A tiered Buy X for Total Fixed-Price promotion differs from other tiered promotion types. Usually, only the highest applicable tier applies. For example, Buy 2 or more, get them for $10 each. Buy 4 or more, get them for $9 each. For Buy X for Total fixed-price promotions, all tiers can apply, depending on the number of items in the cart. For example, a merchant offers a promotion: Buy 2 shirts for $20, 3 shirts for $22, with no application limit. The basket contains five discounted products. | Shirt color | Number ordered | Unit price | | --- | --- | --- | | Red | 3 | $14 | | Blue | 2 | $12 | The three red shirts qualify for the second tier. The remaining two blue shirts qualify for the first tier. | Shirt color | Number ordered | Promotion | List price | Adjusted price | Discount | | --- | --- | --- | --- | --- | --- | | Red | 3 | 3 for $22 | $42 | $22 | $20 | | Blue | 2 | 2 for $20 | $24 | $20 | $4 | # Buy X/Get Y Promotions in B2C Commerce Buy X/Get Y promotions among the most standard promotion types. In a Buy X/Get Y promotion, qualifying products aren't eligible for the discount. If the same products are eligible as both qualifying and conditional products, the most expensive products satisfy the condition and the next product of equal or lesser value receives the discount. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note For class-exclusive Buy X/Get Y product promotions, the discounted and the qualifying products can't receive further discounts. To control the discount application, use site preferences. Determine which products receive the discount and whether eligible products can have a higher value than the qualifying product. ## Tiered Buy X / Get Y Promotions To create tiers for a Buy X/Get Y promotion, the promotion requires the exact number of discounted products to apply. The total cart quantity is used to calculate discount eligibility. For example, a shopper has four items in their cart, three of which qualify for a Buy 3/Get 2 free discount. The remaining product isn't sufficient to qualify for the discount because the discount requires two free products. If a shopper has multiple products in their cart that qualify for a Buy X/Get Y discount, B2C Commerce considers the highest quantity Buy X/Get Y promotion on eligible product groups first. When the highest Buy X/Get Y promotion applies first, it maximizes the value for the shopper, without awarding extra Buy X/Get Y discounts. If the cart quantity is eligible for more than one Buy X/Get Y tiered promotion threshold, B2C Commerce only applies the most advantageous promotion. For example, a shopper's cart contains six products. The cart applies the Buy 3/Get 2 free promotion and not the Buy 2/Get 1 free promotion because the first is a better deal for the shopper. The products that are considered for one Buy X/Get Y promotion can't be considered for another Buy X/Get Y promotion in the same cart within the same tier. However, they can be considered for other promotions, including another Buy X/Get Y. For example, a cart contains four products. B2C Commerce applies the Buy 2/Get 1 free promotion to the fourth product, after applying the Buy 3/Get 2 free promotion to the first three products. ## Example There are two promotions for the same product: Buy 3/Get 2 free and Buy 2/Get 2 free. A cart contains four products. The best discount is Buy 2/Get 2 free, because it results in four free products (applied twice). Buy 3/Get 2 Free only results in two free products. The results depend on the value of the setting: Promotion requires the exact number of discounted products to apply. When the setting is enabled, the second discount doesn't apply because the discount requires three qualifying products and two free products. # Cache Settings Object Import and Export in B2C Commerce Use the cache settings object to manage static cache time to live, cache enablement, and page cache partitions. Cache settings are often replicated instead of imported, because a full page cache invalidation is required before they take effect. The cache settings import always uses a replace semantic. The replace semantic deletes any partition definitions not included in the import. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note After import, the cache for all partitions is invalidated. | Object Information | Details | | --- | --- | | Schema file | cache-settings.xsd | | Granularity | Page cache partition configurations, static cache time to live value per instance, and whether the page cache is enabled per instance. | | Business Manager import and export location | **site** | **Administration** | **Site Development** | **Site Import & Export** | | Pipelets | N/A | This table describes cache-settings.xsd schema elements, and provides considerations when creating values for these elements.
Element Description Example
Settings Sets static cache time to live and page cache enablement flags.
    <settings>
        <development>
            <static-cache-ttl>86400</static-cache-ttl>
            <page-cache-enabled>true</page-cache-enabled>
        </development>
        <staging>
            <static-cache-ttl>0</static-cache-ttl>
            <page-cache-enabled>false</page-cache-enabled>
        </staging>
        <production>
            <static-cache-ttl>86400</static-cache-ttl>
            <page-cache-enabled>true</page-cache-enabled>
        </production>
    </settings>
Page-Cache-Partitions

Specifies the configuration of page cache partitions.

Note
Note You can specify a maximum of 10 pipelines.
    <page-cache-partitions>
        <page-cache-partition partition-id="partition0">
            <name>partition0</name>
            <pipelines>
                <pipeline>Account-Show</pipeline>
                <pipeline>TestPipeline-Start</pipeline>
                <pipeline>Pipeline3-Start</pipeline>
                <pipeline>Pipeline4-Start</pipeline>
                <pipeline>Pipeline5-Start</pipeline>
                <pipeline>Pipeline6-Start</pipeline>
                <pipeline>Pipeline7-Start</pipeline>
                <pipeline>Pipeline8-Start</pipeline>
                <pipeline>Pipeline9-Start</pipeline>
                <pipeline>Pipeline10-Start</pipeline>
            </pipelines>
        </page-cache-partition>
    </page-cache-partitions>
# Caching with A/B Testing for B2C Commerce Salesforce B2C Commerce provides different page caching configurations. If you apply personalized prices in an A/B test via promotions, use the personalization parameter `` in the iscache tag of the corresponding templates. Using this parameter make sure that the personalized pages cache properly. We recommend, as a best practice, that you cache whenever possible. Uncached catalog, product, or search pages - whether A/B testing pages or regular pages - aren’t recommended because they degrade performance. For example, use the following in your template if you apply personalized prices in an A/B test via promotions: ```markup ``` By definition, the control group must contain no customization. If you introduce a custom experience for a control group, the pipeline/template containing the customization is no longer cacheable. # Call a Pipeline Start Node with a Source Code from a URL for B2C Commerce To start a process at a B2C Commerce storefront, call a pipeline start node from a URL. If a source code is valid, this URL navigates the customer to one of two destinations. A valid source code must be enabled. This feature applies to B2C Commerce. 1. From SourceCodeRedirect-Start: - If the customer arrives at the storefront before the source code expires, the product page opens. The source code selects a price book. - If the customer arrives at the storefront after the source code expired, the category page opens. 2. To redirect from the URL, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Online Marketing** | **Source Code Groups**. 3. Click **Find** to view the list of source code groups. 4. Open the selected source code group, and click the **Codes** tab. 5. On the Codes tab, enter SpringSale into the Source-Code Specification field, and click **Add**. 6. On the Redirects tab, select **Active: Product**. 7. Using the browse button, locate and select the product page you want to show. 8. Select **Inactive: Category**. 9. Click the category page you want to show then click **Apply**. 10. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Online Marketing** | **Source Code Groups**. 1. To find the source code, click **Find**, or enter a source code name. 2. Click a source code group name. 3. On the Price Books tab, enter or browse to the price book you want to use. Click **Add**. 11. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Site Preferences** | **Source-Codes**, enter src into the URL Parameter Name control. Click **Apply**. 12. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **SEO** | **Aliases**, enter www.yourstore.com and click **Save**. 13. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Online Marketing** | **Source-Code Groups** | **General**. 1. Find the source code you want to edit. 2. To open the code, click the source code's name. 3. Define its start and end dates. 4. Click **Apply**. # Campaigns and Promotions in B2C Commerce In the Business Manager Online Marketing module, create campaigns and A/B tests that act as wrappers, containing experiences that include promotions, content slots, and sorting rules. Slot configurations and sorting rules, however, don't require assignment to campaigns or A/B tests to take effect. Slot configurations can be scheduled outside the context of an A/B test. A default sorting rule can be set for a category in a storefront catalog outside the context of a campaign or A/B test. Use campaigns to define a schedule for multiple experiences and to define qualifiers, such as coupons, for multiple promotions or sorting rules. When an experience is assigned to a campaign, its schedule and qualifiers can only refine those of the containing campaign. A campaign is defined in the context of a site and isn’t shared among sites. A campaign can be enabled or disabled. A disabled campaign is inactive and not available to consumers. Enabled promotions contained within a disabled campaign are also inactive. Extend campaigns with custom attributes to meet your specific business requirements. A promotion contains a rule that defines the type of promotion, conditions, and discounts, and can be extended with custom attributes to support your business requirements. If you delete a product, category, or shipping method that is associated with a promotion, that promotion (and its rule) isn't deleted. In B2C Commerce, there are three promotion classes, or ways to define a promotion discount, product, order, and shipping. B2C Commerce [processes promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_processing.htm&release=264.0.0&type=5 "When processing promotions, B2C Commerce generates a list of active promotions based on parameters such as customer, source code, and coupon code products. This list isn't just for applying promotions to a basket. It also to present potential promotions to shoppers, such as on a product details page.") in a specific priority order at specific times during the order process. Available [promotions analytics and reports](https://help.salesforce.com/s/articleView?id=cc.b2c_analytics_and_reporting_for_promotions.htm&release=264.0.0&type=5 "Salesforce B2C Commerce reports on promotions via analytics reports, the debug logger, and system logs.") include processing reports, conversion reports, and system logs. You can also customize promotions using B2C Commerce development tools. - **[Revert to the Legacy Campaigns User Interface](https://help.salesforce.com/s/articleView?id=cc.b2c_revert_campaign_ui.htm&release=264.0.0&type=5)** Beginning with B2C Commerce 26.7, a refreshed Campaigns UI is on by default. To revert to the legacy Campaigns UI, deselect **Enable New Campaigns Screen**. - **[Additional Resources for B2C Commerce Campaigns and Promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_campaigns_promotions_resources.htm&release=264.0.0&type=5)** We've prepared some resources to help you optimize your experiences with campaigns and promotions in B2C Commerce. - **[Create Campaigns and Promotions in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_campaigns_and_promotions.htm&release=264.0.0&type=5)** To create a complete marketing and promotional campaign, start by setting an overall goal and then break down the tasks involved. - **[Create a Campaign in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_campaign.htm&release=264.0.0&type=5)** A campaign acts as a wrapper for your promotions and qualifiers. When you create a campaign, define a schedule and qualifiers for an entire group of promotions or slot configurations. - **[Create a Promotion in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_promotion.htm&release=264.0.0&type=5)** To create product, shipping, and order promotions, the overall steps are the same, but with different rule specifications. - **[Create a Product Promotion Rule in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_product_promotion_rules.htm&release=264.0.0&type=5)** Product promotion rules apply to standard products, variation products, product bundles, and product options. - **[Controlling Promotions in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_controlling_promotions.htm&release=264.0.0&type=5)** In Salesforce B2C Commerce, control how promotions apply. - **[How Customers Qualify for Promotions for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_qualifiers.htm&release=264.0.0&type=5)** In B2C Commerce, there are three ways a customer can qualify for a promotion. - **[Promotions and Taxation for B2C Commerce Promotions](https://help.salesforce.com/s/articleView?id=cc.b2c_promotions_and_taxation.htm&release=264.0.0&type=5)** When creating promotions, consider the effects of tax calculations. - **[B2C Commerce Promotion Considerations](https://help.salesforce.com/s/articleView?id=cc.b2c_promotion_considerations.htm&release=264.0.0&type=5)** Keep certain considerations in mind as you implement promotions in your storefront application. # Cancel Orders You can cancel an order that is in New, Open, or Completed Status. You can't cancel a failed order. To cancel an order associated with active post-processing objects, such as shipping orders, returns, or appeasements, you must cancel them. If you use B2C Commerce Order Management, then after an order is sent to Order Management, manage it there. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** **Ordering** | **Orders.**. 2. Locate the order you want to cancel. - Use the search function. - To view a list of all orders, click **Find**. 3. Select the order. 4. On the **General** tab, change the **Status** to **Canceled**. Reopen a canceled order. If the On Order feature is enabled, canceling an order also voids its booked inventory transactions. However, the turnover can be updated incorrectly. It depends on factors such as how long after order creation the cancellation occurred and any intervening inventory imports. # Capturing Offline Orders and Inventory Reconciliation During Omnichannel Inventory service interruptions, Continuous Order Capture queues B2C Commerce orders to maintain business continuity. The system accepts orders based on the last known inventory data. To avoid overselling, B2C Commerce automatically decrements the Available-To-Order (ATO) value immediately after each order is created. The system marks these orders as Reservation Missing until Omnichannel Inventory recovers. After the connection is restored, the system automatically reconciles the inventory and creates reconciliation reports. ## Automatic Reconciliation After the Omnichannel Inventory connection for B2C Commerce is restored, a background job automatically reconciles inventory for orders in the Reservation Missing state. This job processes orders in batches. It typically takes 10–20 minutes for reconciliation to complete. Business Manager alerts automatically notify you of the current state and the reconciliation outcome. After the job attempts a reservation, if the attempt is successful, the job clears the Reservation Missing state with one of these reconciliation outcomes: - Completely Reserved: All items are reserved. - Partially Reserved: Only some items are reserved. - Nothing Reserved: No inventory is available for any items. - Omnichannel Inventory Remains offline: The service is still unavailable. The order remains in the Reservation Missing state and the system retries to change the state in the next cycle. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you’ve configured Salesforce Order Management, after the reservation attempts, orders are automatically pushed to Order Management, even if they’re flagged as oversold due to partial or failed reservations. These transactions also appear in the reconciliation reports in Business Manager. To monitor these orders, see [View Orders Captured During Omnichannel Inventory Downtime](https://help.salesforce.com/s/articleView?id=cc.oci_cocsomb2c.htm&release=264.0.0&type=5 "To monitor the progress after reconciliation, view and track the B2C Commerce Continuous Order Capture orders captured during the Omnichannel Inventory offline mode."). ## Reconciliation Reports The system generates reconciliations reports at \[SHARED\_DIR\_IMPEX\]/src/continuous\_order\_capture/ to help you audit offline activity: - Offline: All the orders captured during the outage. - Reserved: Orders with successfully secured inventory for all items. - Oversold: Orders with partial or failed reservation attempt. Here’s the directory structure: ``` continuous_order_capture/ ├── work/ # Temporary work files (transient) │ ├── offline___.json │ ├── reserved___.json │ └── oversold___.json ├── _offline_.json # Daily merged offline orders ├── _reserved_.json# Daily merged reserved orders └── _oversold_.json# Daily merged oversold orders ``` The file naming convention is:
File Type Convention Examples
Work files for individual offline, reserved, and oversold orders {prefix}_{site}_{yyyyMMdd}_{HHmmss}_{orderNo}.json offline_MySite_20260202_120000_0000012345.json
reserved_MySite_20260202_120000_0000012345.json
oversold_MySite_20260202_120000_0000012345.json
Daily merged offline, reserved, and oversold files by site {yyyyMMdd}_{prefix}_{site}.json 20260202_offline_MySite.json
20260202_reserved_MySite.json
20260202_oversold_MySite.json
While B2C Commerce counts down Available-to-Order (ATO) based on the last known inventory data, other sales channels can also deplete stock managed in Omnichannel Inventory, potentially resulting in some overselling. Either cancel the orders that you aren’t able to fulfill or offer replacement items. If you’re able to fulfill the orders, use the Omnichannel Inventory REST APIs to manually update reservations. #### See Also - [Configure B2C Commerce Alerts in Business Manager and Slack](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_alerts_for_your_site.htm&language=en_US) - [Omnichannel Inventory Service](https://help.salesforce.com/s/articleView?id=commerce.inv_omnichannel_inventory_service.htm&language=en_US) - [B2C Commerce Continuous Order Capture for Omnichannel Inventory](https://help.salesforce.com/s/articleView?id=cc.oci_continuousordercapture.htm&release=264.0.0&type=5 "Turn on Continuous Order Capture to accept customer orders and maintain business continuity even if connectivity to Omnichannel Inventory is lost. When the service is unavailable, Continuous Order Capture automatically transitions to an offline mode and accepts transactions without immediate inventory reservations. By independently reconciling pending reservations and providing real-time recovery alerts, this feature protects your storefront from downtime while minimizing overselling risks.") # Cart Management Family DMO Mappings Cart Management interactions capture when B2C Commerce customers add products to their shopping cart (`cart-add`), remove products from their cart (`cart-remove`), or modify quantities and product options (`cart-update`). These interactions map to two DMOs: ShoppingCartEngagement for the cart-level event and ShoppingCartProductEngagement for individual product line items. All three interactions use the same DMO structure. The EngagementChannelActionId field stores the specific interaction type (`cart-add`, `cart-remove`, `cart-update`). These interactions use the Server2Server integration type. ## ShoppingCartEngagement DMO | Commerce Event Field | DMO Field | Required/Optional | Description | | --- | --- | --- | --- | | `currency` | `CurrencyId` | Optional | Currency of the cart, in 3-character ISO 4217 format | | `dateTime` | `CreatedDate` | Required | DateTime event occurred in ISO 8601 format | | `dateTime` | `Engagement​DateTm` | Required | Date and time of customer engagement | | `deviceId` | `IndividualId` | Required | Identifier of the device sending the event | | `eventId` | `Id` | Required | Unique identifier of the event that the client generates, commonly a universally unique identifier (UUID) | | `eventType` | `Engagement​TypeId` | Required | Set to "cart" | | `interactionName` | `EngagementChannel​ActionId` | Required | User interaction the event describes (cart-add, cart-remove, cart-update) | | `siteId` | `WebsiteId` | Required | Identifier for the client sending the event | | `sourceLocale` | `DeviceLocaleId` | Optional | Locale associated with the event | | `sourcePageId` | `PageId` | Optional | Identifier of the page on which the event occurred | | `sourceUrl​Referrer` | `ReferrerURL` | Optional | Referrer URL of the source page | | `webStoreId` | `WebStoreId` | Optional | Web store associated with the event | ## ShoppingCartProductEngagement DMO | Commerce Event Field | DMO Field | Required/Optional | Description | | --- | --- | --- | --- | | `adjustedTotal​ProductAmount` | `AdjustedTotal​ProductAmount` | Optional | Adjusted amount (that is, accounting for promotions) of the products for the entire line item (adjusted unit price \* quantity) | | `cartEventId` | `ShoppingCart​EngagementId` | Required | Event ID of the Cart event associated with this cartItem event | | `catalogObjectId` | `ProductId` | Optional | Unique identifier of the catalog object such as a product | | `dateTime` | `CreatedDate` | Required | DateTime event occurred in ISO 8601 format | | `dateTime` | `LastModified​Date` | Required | When the cart item was last modified | | `eventId` | `Id` | Required | Unique identifier of the event that the client generates, commonly a UUID | | `eventType` | `EngagementType` | Required | Type of engagement (cart item) | | `imageUrl` | `ProductImageURL` | Optional | URL of the image that is used when reporting on the product | | `lineItemId` | `ShoppingCart​ProductId` | Optional | Unique identifier of the line item for the cart | | `name` | `ShoppingCartProduct​ItemName` | Optional | Name of the product | | `price` | `ProductPrice` | Optional | List price of each item | | `quantity` | `ProductQuantity` | Optional | Absolute quantity of the line item, after the event, specified by lineItemId | | `totalProduct​Amount` | `ProductAmount` | Optional | Amount of the products for the entire line item (price book unit price \* quantity), not taking into account adjustments | # Catalog Design In B2C Commerce Business Manager, you can enter product data manually or you can import the data in an XML file and edit the data. Most customers import product data from their Product Information Management system or other system of record, and then enhance it in Business Manager. When designing your catalog, you can configure product data to include variations, descriptions, images, video, pricing, and inventory. The categories and subcategories in your catalog can function as the navigation for your storefront. Configure category navigation so that customers can easily locate products they want, and even find some they don't yet know they want. Define your catalog so that as customers traverse to a product, they see product recommendations, and promotional offers. It’s best practice to create two catalogs: the standard catalog and the storefront catalog. - The product catalog provides the same structure as an external system of record for your products. This catalog isn't assigned to a site. It owns the products you want to merchandise, and it mirrors the organization of your inventory, fulfillment, or product management systems. - The storefront catalog is where you create categories that appear on your storefront. Assign products to storefront categories to show them on the storefront. A storefront has one catalog: the storefront catalog. The category structure you create in a storefront catalog is used for your storefront navigation. Catalog Configuration In addition to configuring products in categories, further define your catalog to add functionality to your storefront. After you create your standard catalog, you complete the storefront catalog definition by creating categories, setting attributes, defining image paths, establishing definitions for search, and assigning page meta tag rules. Find these options under the tabs in Business Manager. Maintain and Deploy Catalogs You create and maintain catalogs on your staging instance, and then replicate them to the development instance for testing. After you test catalogs, you replicate them from the staging instance to the production instance. # Catalog Feed Integration with Google Syndicate your B2C Commerce product catalog to Google for product discovery, enabling shoppers to find your products in Google Shopping ads and free listings. The Google catalog feed integration gives B2C Commerce merchants the ability to share their product catalogs with Google. When shoppers search for products on Google, your products can appear in Google Shopping ads and free listings. Shoppers who select one of your products go straight to your storefront's product detail page (PDP) to complete their purchase. ## How the Product Feed Is Generated and Uploaded for Google The integration uses Commerce Cloud's scheduled job infrastructure to generate a canonical product feed from your catalog currently assigned to the site you are in, informed by merchant mapping of catalog attributes to Google's feed requirements. B2C Commerce uploads the feed to Google's infrastructure using a Secure File Transfer Protocol (SFTP) connection, which is then consumed by Google to enrich the discovery experience in Google Shopping. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important You retrieve your SFTP credentials from Google Merchant Center, and then enter them in Business Manager when you connect to Google. To configure the feed integration in Business Manager, you: - [Configure General Settings (SFTP credentials and price/image overrides)](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_general_settings.htm&release=264.0.0&type=5 "On the General Settings tab, enter the SFTP credentials that Google Merchant Center provides to connect your store. Optionally, set global overrides for the price and image columns that apply to every row in your feed.") - [Connect to Google](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_connect.htm&release=264.0.0&type=5 "Configure the SFTP connection between B2C Commerce and your channel partner (OpenAI or Google) to allow product feed uploads.") - [Map B2C Commerce product attributes to Google feed fields](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_mapping.htm&release=264.0.0&type=5 "Configure how B2C Commerce product attributes map to Google feed fields using the field mapping interface.") - [Override default mappings with custom attributes](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_custom_attributes.htm&release=264.0.0&type=5 "Map custom product attributes to product feed fields when the default B2C Commerce standard attributes don't meet your needs.") - [Configure product filter rules to control which products sync to Google](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_product_filter.htm&release=264.0.0&type=5 "Product filter rules control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. Configure include and exclude rules to broaden or narrow the default ruleset based on how your catalog is organized.") - [Preview the product feed and verify field mappings before turning on the daily sync](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_preview.htm&release=264.0.0&type=5 "Open the Product Feed Preview to verify your field mappings, identify B2C Commerce products with missing required fields, and download a sample CSV before turning on the daily feed sync.") - [Turn on or turn off the daily feed sync](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_enable.htm&release=264.0.0&type=5 "Turn on the daily sync to start generating and uploading your B2C Commerce product feed to Google. Before you turn on the daily sync, rigorously review the default field mappings and make any overrides.") You can configure field mappings, product filter rules, and the feed preview on any non-production instance—development, staging, or sandbox—or on production. The SFTP connection and the daily feed sync run only on production instances. ## Managing Products in Google The product feed sent to Google reflects the products that match your configured product filter rules. By default, the rules match products that are online and searchable, but you can adjust them to fit how your catalog is organized. Manage which products appear in Google in two ways: - **Adjust the filter rules**: To change the criteria that decide which products are included, configure include and exclude rules in the Product Filter section. See [Product Filter Rules for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_product_filter.htm&release=264.0.0&type=5 "Product filter rules control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. Configure include and exclude rules to broaden or narrow the default ruleset based on how your catalog is organized."). - **Update product data**: To add, remove, or update individual products under the current rules, manage products in the Products and Catalogs section of Business Manager. For example, with the default rules, set a product to offline or not searchable to remove it from the feed. B2C Commerce automatically excludes master products, variation groups, and product sets from the feed, exporting only individual variant products (SKUs) and standalone products. Variants inherit attribute data from their variation group or master product. Google treats the latest feed as the source of truth. Changes take effect after the next daily feed sync. ## Tracking Google Traffic When shoppers click through from Google to your storefront, the referral includes attribution data. Use the Traffic Dashboard in Reports & Dashboards to view Google as a referrer source and measure traffic from this channel. ## Benefits of the Product Feed for Google The Google catalog feed integration offers these benefits: - **Increased visibility**: Your products gain increased relevance in the discovery experience through Google Shopping ads and free listings. - **Increased merchant control**: The Google catalog feed integration provides accurate product data from the merchant directly, rather than from any public website that may be inaccurate, biased, or outdated. - **New traffic channel**: Drive qualified, high-intent traffic from Google to your storefront. - **Smart defaults**: Default field mappings reduce configuration time and maximize compliance with Google's product feed requirements, while allowing customization. - **Flexible mapping**: Map both standard and custom product attributes to ensure the proper data from your catalog is being sent. ## Product Feed Limitations for Google The following limitations apply to the Google catalog feed integration: - The integration is available for US sites only. - Sites must have `en_US` configured as a locale and `USD` configured as a currency. These don't need to be the site defaults. - Google redirects shoppers to the merchant's PDP for checkout. Shoppers can't complete checkout directly in Google. ## Set Up the Product Feed for Google First complete the [common product feed setup](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_setup.htm&release=264.0.0&type=5 "Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ."): prerequisites, Einstein configuration, channel partner connection, URL patterns, custom attributes, product filter rules, and feed preview. Then configure these Google-specific settings and turn on the feed: - **[Configure Product Feed General Settings for Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_general_settings.htm&release=264.0.0&type=5)** On the General Settings tab, enter the SFTP credentials that Google Merchant Center provides to connect your store. Optionally, set global overrides for the price and image columns that apply to every row in your feed. - **[Map Product Fields for Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_mapping.htm&release=264.0.0&type=5)** Configure how B2C Commerce product attributes map to Google feed fields using the field mapping interface. - **[Turn On the Product Feed for Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_enable.htm&release=264.0.0&type=5)** Turn on the daily sync to start generating and uploading your B2C Commerce product feed to Google. Before you turn on the daily sync, rigorously review the default field mappings and make any overrides. #### See Also - [Common Product Feed Setup](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_setup.htm&release=264.0.0&type=5 "Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ.") # Catalog Feed Integration with OpenAI Syndicate your B2C Commerce product catalog to OpenAI's ChatGPT for product discovery, enabling shoppers to find and browse your products through conversational AI. The OpenAI catalog feed integration gives B2C Commerce merchants the ability to share their product catalogs with ChatGPT. When shoppers ask ChatGPT for product recommendations, ChatGPT can access your product feed and recommend products from your catalog. Shoppers who select a recommended product go straight to your storefront's product detail page (PDP) to complete their purchase. ## How the Product Feed Is Generated and Uploaded for OpenAI The integration uses Commerce Cloud's scheduled job infrastructure to generate a canonical product feed from your catalog currently assigned to the site you are in, informed by merchant mapping of catalog attributes to OpenAI's feed requirements. B2C Commerce uploads the feed to OpenAI's infrastructure using a Secure File Transfer Protocol (SFTP) connection, which is then consumed by OpenAI to enrich the discovery experience in ChatGPT. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important OpenAI onboards your merchant account and provides your SFTP credentials. You enter these credentials in Business Manager when you connect to OpenAI. To configure the feed integration in Business Manager, you: - [Configure General Settings (SFTP credentials and seller information)](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_general_settings.htm&release=264.0.0&type=5 "On the General Settings tab, enter your SFTP credentials and the seller information that OpenAI requires to list your B2C Commerce products. Optionally, set global overrides for the price and image columns that apply to every row in your feed.") - [Connect to OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_connect.htm&release=264.0.0&type=5 "Configure the SFTP connection between B2C Commerce and your channel partner (OpenAI or Google) to allow product feed uploads.") - [Map B2C Commerce product attributes to OpenAI feed fields](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_mapping.htm&release=264.0.0&type=5 "Configure how B2C Commerce product attributes map to OpenAI feed fields using the field mapping interface.") - [Override default mappings with custom attributes](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_custom_attributes.htm&release=264.0.0&type=5 "Map custom product attributes to product feed fields when the default B2C Commerce standard attributes don't meet your needs.") - [Configure product filter rules to control which products sync to ChatGPT](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_product_filter.htm&release=264.0.0&type=5 "Product filter rules control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. Configure include and exclude rules to broaden or narrow the default ruleset based on how your catalog is organized.") - [Preview the product feed and verify field mappings before turning on the daily sync](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_preview.htm&release=264.0.0&type=5 "Open the Product Feed Preview to verify your field mappings, identify B2C Commerce products with missing required fields, and download a sample CSV before turning on the daily feed sync.") - [Turn on or turn off the daily feed sync](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_enable.htm&release=264.0.0&type=5 "Turn on the daily sync to start generating and uploading your B2C Commerce product feed to OpenAI. Before you turn on the daily sync, rigorously review the default field mappings and make any overrides.") You can configure field mappings, product filter rules, and the feed preview on any non-production instance—development, staging, or sandbox—or on production. The SFTP connection and the daily feed sync run only on production instances. ## Managing Products in ChatGPT The product feed sent to ChatGPT reflects the products that match your configured product filter rules. By default, the rules match products that are online and searchable, but you can adjust them to fit how your catalog is organized. Manage which products appear in ChatGPT in two ways: - **Adjust the filter rules**: To change the criteria that decide which products are included, configure include and exclude rules in the Product Filter section. See [Configure Product Filter Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_product_filter.htm&release=264.0.0&type=5 "Product filter rules control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. Configure include and exclude rules to broaden or narrow the default ruleset based on how your catalog is organized."). - **Update product data**: To add, remove, or update individual products under the current rules, manage products in the Products and Catalogs section of Business Manager. For example, with the default rules, set a product to offline or not searchable to remove it from the feed. B2C Commerce automatically excludes master products, variation groups, and product sets from the feed, exporting only individual variant products (SKUs) and standalone products. Variants inherit attribute data from their variation group or master product. OpenAI treats the latest feed as the source of truth. Changes take effect after the next daily feed sync. ## Tracking ChatGPT Traffic When shoppers click through from ChatGPT to your storefront, the referral includes attribution data. Use the Traffic Dashboard in Reports & Dashboards to view ChatGPT as a referrer source and measure traffic from this channel. ChatGPT automatically adds `utm_source=chatgpt.com` to every link from your feed, so you can identify ChatGPT referrals in your analytics. ChatGPT doesn't add a `utm_medium` value, so Salesforce recommends adding `utm_medium=feed` to the product url field in Field Mapping to distinguish traffic that comes from your product feed from other ChatGPT referrals. For example: `https://www.example.com/product/${id}?utm_medium=feed`. To configure the product URL, see [Map Product Fields for OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_mapping.htm&release=264.0.0&type=5 "Configure how B2C Commerce product attributes map to OpenAI feed fields using the field mapping interface."). If you use PWA Kit or a headless storefront, see [Configure URL Patterns for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_pwa_urls.htm&release=264.0.0&type=5 "If you use PWA Kit or a headless B2C Commerce storefront, override the product URL field in Field Mapping with a URL pattern so the product feed contains the correct product detail page URL for each product."). ## Benefits of the Product Feed for OpenAI The OpenAI catalog feed integration offers these benefits: - **Increased visibility**: Your products gain increased relevance in the discovery experience through ChatGPT's conversational interface. - **Increased merchant control**: Compared to the current way products are discovered in ChatGPT, the OpenAI catalog feed integration provides more accurate product data from the merchant directly, rather than from any public website that may be inaccurate, biased, or outdated. - **New traffic channel**: Drive qualified, high-intent traffic from ChatGPT to your storefront. - **Smart defaults**: Default field mappings reduce configuration time and maximize compliance with OpenAI's product feed requirements, while allowing customization. - **Flexible mapping**: Map both standard and custom product attributes to ensure the proper data from your catalog is being sent. ## Product Feed Limitations for OpenAI The following limitations apply to the OpenAI catalog feed integration: - Sites must have `en_US` configured as a locale and `USD` configured as a currency. These don't need to be the site defaults. - OpenAI redirects shoppers to the merchant's PDP for checkout. Shoppers can't complete checkout directly in ChatGPT. ## Set Up the Product Feed for OpenAI First complete the [common product feed setup](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_setup.htm&release=264.0.0&type=5 "Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ."): prerequisites, Einstein configuration, channel partner connection, URL patterns, custom attributes, product filter rules, and feed preview. Then configure these OpenAI-specific settings and turn on the feed: - **[Configure Product Feed General Settings for OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_general_settings.htm&release=264.0.0&type=5)** On the General Settings tab, enter your SFTP credentials and the seller information that OpenAI requires to list your B2C Commerce products. Optionally, set global overrides for the price and image columns that apply to every row in your feed. - **[Map Product Fields for OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_mapping.htm&release=264.0.0&type=5)** Configure how B2C Commerce product attributes map to OpenAI feed fields using the field mapping interface. - **[Turn On the Product Feed for OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_enable.htm&release=264.0.0&type=5)** Turn on the daily sync to start generating and uploading your B2C Commerce product feed to OpenAI. Before you turn on the daily sync, rigorously review the default field mappings and make any overrides. #### See Also - [Common Product Feed Setup](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_setup.htm&release=264.0.0&type=5 "Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ.") # Catalog Object Import/Export in B2C Commerce Import an entire catalog at once; the import operation includes the catalog and any categories and products within the catalog. Export works similarly; you export the entire catalog at once. Catalog import/export is designed so that: - You can import a storefront catalog independently of the product catalog. - A storefront catalog category can reference the products to appear in that category. - Imports of other storefront catalogs don't affect the already established product/category assignments. - Product update imports of the product catalog don't affect the assignments into the storefront catalogs. - The catalog import semantic is adjusted so that product and storefront catalogs are self-contained data units, isolated from each other, allowing you to import them without deleting each other's data structures. ## Business Manager Import/Export Location Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Products and Catalogs** | **Import & Export** ## Catalog Import Import a catalog from a [CSV](https://help.salesforce.com/s/articleView?id=cc.b2c_csv_file.htm&release=264.0.0&type=5 "B2C Commerce Business Manager supports importing and exporting your catalogs in XML and CSV format. For an easier to read and edit version, export as a CSV file.") or XML file type. You can only upload a CSV file in MERGE mode and Specify which catalog you're uploading before continuing the import process. Importing catalog data into development and production environments results in errors if the same catalog exists in staging. We recommend replicating catalog data from staging. The catalog import is implemented as a two-pass import. 1. In the first pass, objects are created, updated, and deleted. 2. In the second pass, relationships between objects are established. The import process allows the category and product elements to appear in any order in the feed. During import, you don’t have exposure to the two passes. The default transaction mode commits changes after each object import. If the import is aborted between the first and second pass, the created or updated object can be left behind. In this situation, relationships aren’t created for the object. To eliminate leaving objects behind, include all entities corresponding to a catalog in a single XML file. New products imported in MERGE and REPLACE modes default to _offline_ status if this status isn't specified in the import file. - For existing products imported in UPDATE, MERGE, and REPLACE modes, the online/offline status doesn't change unless the status is specified in the import file. - For import files that specify the online/offline status for every product, this change has no effect on the existing behavior of the catalog import. The import schema `catalog.xsd` requires that a element must declare a child element. The specified value must be nonempty and it must not contain leading or trailing whitespace. ## Catalog Export Export data on selected products from Business Manager or through a custom pipeline. During catalog export, B2C Commerce automatically trims leading and trailing whitespace and removes any previously saved newline characters in a product image path. Export a catalog as an XML or a [CSV](https://help.salesforce.com/s/articleView?id=cc.b2c_export_a_catalog_as_csv.htm&release=264.0.0&type=5 "A CSV file provides B2C Commerce merchandisers with an easy to read and edit view of their exported catalogs."). Business Manager catalog export mode `Export Specific Products` only contains the list of selected products and the category assignments for those products. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Products and Catalogs** | **Import & Export** | **Catalog Export** | **catalog** | **product(s)**. You can use the standard product search functionality or the beta search functionality as described in [Simple Products Search](https://help.salesforce.com/s/articleView?id=cc.b2c_simple_search.htm&release=264.0.0&type=5 "Use the Simple Search to quickly find products in your B2C Commerce catalog."). ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce Support enables the beta search functionality. ## Page Meta Tags Import/Export Page meta tag rules and definitions are now imported and exported within a separate 'Page Meta Tags' section. See [Page Meta Tags](https://help.salesforce.com/s/articleView?id=cc.b2c_page_meta_tags.htm&release=264.0.0&type=5 "Page meta tags are used in HTML documents to provide structured data about a web page. Meta tags are snippets of text that don't appear on the page itself, but in the page’s code, describing a page’s content. Common tags are title, robots, description, and social tags such as open graph tags."). Only assignments are imported and exported within Catalog, Library, and Site ImPex. ## Pipelets ImportCatalog Imports the catalog data specified by ImportFile into the system in the specified mode. This pipelet has an import configuration that lets you delete the catalog before import. Use this technique as a high-performance way to empty a catalog, specifically if the objects in the catalog are unknown. Also delete custom attributes before import when using the UPDATE or MERGE mode. For more information, see [Removing Outdated Objects.](https://help.salesforce.com/s/articleView?id=cc.b2c_removing_outdated_objects.htm&release=264.0.0&type=5 "How you remove outdated objects depends on whether you enrich the data from your backend system with more attributes in Business Manager. It also depends on the type of business object you want to remove. B2C Commerce generally recommends creating feeds of objects to delete, imported using the DELETE mode, to safely remove all types of objects, regardless of whether they have enriched data or not.") You can only import custom product attribute definitions using the pipelet ImportCatalog. It isn't possible to import product object custom attribute definitions using Business Manager catalog import. To enable the import of custom product attribute definitions, set the ImportCatalog pipelet ImportConfiguration parameter to `ImportAttributeDefinitions = true.` If this parameter isn't provided in the ImportConfiguration or if it's set to `false,` product attribute definitions aren’t imported. If you provide product attribute definitions in the catalog import file, but the `ImportAttributeDefinitions = false` or not provided or the file is imported in Business Manager, then a data error is logged. In this case, the product-attribute-definitions element is ignored during import for the UPDATE, MERGE, and REPLACE import modes. ExportCatalog When the `ExportCatalog` pipelet parameter `ExportCategoryAssignments=True,` and you specify a `Products` iterator, the export file contains only the category assignments for the list of exported products or categories assignments. When the `Products` iterator isn't specified, all category assignments are exported. _Granularity:_ passed categories, products of passed categories, category assignments of passed categories, all recommendations in catalog, all shared product options in catalog). ## Schema Elements This section describes the elements in the catalog.xsd and considerations when creating values for them. Element: Category Consider some element-specific details when importing a category element. - Category elements can appear in any order in the feed. - Specify DELETE mode at the category element level, overwriting the import process mode, for example, _._ - A catalog's root category isn't deleted with DELETE mode. Nor is it deleted with the REPLACE mode. However, it’s updated with the REPLACE mode. - Deleting a category deletes the category's category assignments (not the products within the category), category links (incoming and outgoing), and all subcategories. - The root category's display name and description is also set as the catalog's display name and description. - Some category subelements have a special semantic or set of defaults, if not provided in the feed. The following table provides details. Attributes: online-from and online-to Some situations require that the _online-from_ and _online-to_ category attributes values be reset during a catalog import process. For example, XML validation fails if you submit these elements in XML with an empty value (for example, ``). Reset the _online-from_ and _online-to_ category attributes during a catalog import process. To reset these attributes values during a catalog import process, the import file must conform to the following XML format example: ```markup ``` Add the following to your catalog import file: ```markup xsi:noNamespaceSchemaLocation="catalog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ``` For example: ```markup ``` When using UPDATE Mode: Understanding the behavior of UPDATE mode is important for customers who can produce catalog delta files to update their catalogs. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note To remove obsolete data during catalog import, use REPLACE mode. - If you import a category that is the target of a category link without the category that is the link's source, the link isn't removed. - If you import a category with child categories without its children, the children aren’t removed.
Subelement Comments
display-name If element omitted: attribute not altered
description If element omitted: attribute not altered
online-flag

If element omitted during create: defaults to false

If element omitted during update: attribute not altered

parent If element omitted: DATAWARNING in log, defaults to "root"
position If element omitted: attribute not altered
thumbnail If element omitted: attribute not altered
image If element omitted: attribute not altered
template If element omitted: attribute not altered
sitemap-included-flag If element omitted: attribute not altered
sitemap-changefrequency If element omitted: attribute not altered
sitemap-priority If element omitted: attribute not altered
page-attributes

If element omitted: attributes not altered

Element provided: MERGE semantic for each attribute and locale

custom-attributes

If element omitted: attributes not altered

Element provided: MERGE semantic for each attribute and locale

category-links

If element omitted: category links not altered

Element provided: REPLACE semantic on outgoing category links

Order of appearance of category-link elements defines sort order

attribute-groups

If element omitted: groups not altered

Element provided: REPLACE semantic

Order of appearance of attribute-groups defines sort order

Order of appearance of attributes defines sort order

refinement-definitions

If element omitted: refinements not altered

Element provided: REPLACE semantic

Order of appearance of refinement-definition elements defines sort order

Element: Product Consider some element-specific details when importing the product element. - Product elements can appear in any order in the feed. - Specify DELETE mode at the product element level, overwriting the import process mode, for example: _._ - The following product types are mutually exclusive: bundle, product set, and base product. Therefore, the following elements are mutually exclusive: bundled-products, product-set-products, and variations. - You can't specify variations of the following product types: bundle, product set, or base product. - Exactly one base product owns each product variation and variation group. Change this ownership from one base product to another in a single import process. - If you import a variation product without its base product, the product remains a variation. - If you import a base product without its variation products, the products specified in the section remain related to the base product. Other variation products unlink from the base product and become normal products. - If you import a product set without its parent product-set, it remains a member of the set. - If you import a bundled product without its bundle, it remains a member of the bundle. - If you import a product that is the target of a product link without the link's source product, the link isn't removed. - Deleting a bundle doesn't delete the bundled products. - Deleting a base product also deletes the variation products. Resetting product Attributes In some cases, you might want to remove values for product attributes during import in merge mode. Reset the following attributes during catalog import: - online-from - online-to - search-rank - search-placement - sitemap-included-flag - sitemap-changefrequency - sitemap-priority XML format example: ```markup ``` Add the following: ```markup xsi:noNamespaceSchemaLocation="catalog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ``` to the root element of your import file, so that it looks like the following: ```markup ``` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Make sure the catalog element fits on a single line in the XML file. Special processing for Subelements Some product subelements have a special semantic or set of defaults, if not provided in the feed. The following table provides details.
Subelement Comments
ean If element omitted: attribute not altered
upc If element omitted: attribute not altered
unit

If element omitted during create: defaults to empty string

If element omitted during update: attribute not altered

min-order-quantity

If element omitted during create: defaults to 1

If element omitted during update: attribute not altered

step-quantity

If element omitted during create: defaults to 1

If element omitted during update: attribute not altered

display-name If element omitted: attribute not altered
short-description If element omitted: attribute not altered
long-description If element omitted: attribute not altered
online-flag

If element omitted during create: defaults to true

If element omitted during update: attribute not altered

online-from If element omitted: attribute not altered
online-to If element omitted: attribute not altered
available-flag

If element omitted during create: defaults to true

If element omitted during update: attribute not altered

searchable-flag

If element omitted during create: defaults to true

If element omitted during update: attribute not altered

image If element omitted: attribute not altered
thumbnail If element omitted: attribute not altered
template If element omitted: attribute not altered
tax-class-id If element omitted: attribute not altered
brand If element omitted: attribute not altered
manufacturer-name If element omitted: attribute not altered
manufacturer-sku If element omitted: attribute not altered
search-placement If element omitted: attribute not altered
search-rank If element omitted: attribute not altered
sitemap-included-flag If element omitted: attribute not altered
sitemap-changefrequency If element omitted: attribute not altered
sitemap-priority If element omitted: attribute not altered
page-attributes

If element omitted: attributes not altered

Element provided: MERGE semantic for each attribute and locale

custom-attributes

If element omitted: attributes not altered

Element provided: MERGE semantic for each attribute and locale

The values for the custom attribute don't merge.

Merge creates the object if it doesn't exist and then modifies an existing object. Object attributes not provided in the feed are left untouched.

When a custom-attribute value is in the XML file, the product gains that value but the other values that were selected before are no longer selected. The Import merge mode imports the attributes and not the value itself. For some values (for example, variation attribute values) a specific merge-mode is available; but not for the custom attributes to which you’re referencing.

bundled-products

If element omitted: relationships not altered

Element provided: REPLACE semantic

Order of appearance of bundled-product elements defines sort order.

product-set-products

If element omitted: relationships not altered

Element provided: REPLACE semantic

Order of appearance of product-set-product elements defines sort order

options

If element omitted: options not altered

Element provided: REPLACE semantic on all private and shared options (delete/create private options, unbind/bind shared options)

Order of appearance of option and shared-option elements defines sort order

variations

Element variations omitted: attributes and relationships not altered

Element attributes omitted: attributes not altered

Order of appearance of attribute elements defines sort order

Element variants omitted: relationships not altered

merge-mode attribute determines whether variations are added, removed, or replaced, regardless of MERGE semantic.

if merge-mode attribute isn't provided, the importer uses the REPLACE semantic by default. This behavior is the legacy behavior for the element.

product-links

If element omitted: product links not altered

Element provided: REPLACE semantic on outgoing product links

Order of appearance of product-link elements defines sort order

classification-category If element omitted: relationship not altered
Site-Specific Attributes The `` import/export elements ``, ``, ``, ``, ``, ``, ``, ``, ``, and `` elements support an optional _site-id_ that indicates the attribute value is site-specific. To specify a site-specific value, use a human-readable site ID. For example: ```markup false ``` Element: Images Catalog import supports a `merge-mode` attribute for the section. This attribute has two possible values: - `merge`: the default. - `replace`: use if you intend to erase all stored image information for a product and then reimport. Use this value, for example, if you changed the variation attributes that a base product uses to vary its images by. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note As with other cases where the `merge-mode` attribute is supported, it only makes sense to use it when the overall import mode is UPDATE or MERGE. Element: Category-Assignment The system preserves product-category assignments as part of catalog.xsd during import, allowing you to import categories with predefined product assignments in one step. This behavior is especially helpful in the case where you use a single (classification) catalog in conjunction with multiple, site-specific (navigation) catalogs. The `variation-configuration` element and the complex type `VariationConfiguration` allow the configuration of slicing for variation products at the category level. When you assign product position values for a category in Business Manager, each product’s position value appears as a sequential number. When products are imported/exported, their `position` element of `category-assignment` is assigned a value of `auto`. To resolve the common value and determine product position, the order in which it appears in the file determines each product’s actual position. For example, Business Manager assigns Product A position 1 and Product B position 2 for a category. During import, the value of the `position` elements for both products is set to `auto`. Because Product A is first in the file, Product A appears first and Product B appears second. Element: Product-Attribute-Definitions The product-attribute-definitions element is intended to support attribute definitions for the product object via a feed from a third-party or backend system. It isn't intended to allow the general import of attribute meta data via import. Product attribute definition metadata isn't supported for export. If the `product-attribute-definitions` element includes definitions for system attributes, the import file is invalid. You can only import attribute definitions via the ImportCatalog pipelet and can't import them via Business Manager import. Product attributes created by catalog import have the following default values: - order-required is set to `false` - searchable is set to `false` - externally-defined is set to `true` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You can change the values of these attributes in Business Manager. These attributes can have a significant impact on other parts of your storefront, notably your checkout processing. Because the catalog import is intended to let you create product attribute definitions from a backend system automatically, you’re prevented from accidentally causing problems with your storefront by the requirement that you explicitly change them separately. If the `product-attribute-definitions` element isn't defined in the import file, the import doesn't modify any existing product attribute definitions. The import processes the element identically for the MERGE, REPLACE, and UPDATE modes. If you define the `product-attribute-definitions` element in the import file, the import checks whether the attribute definition already exists in the database and does the following: - New attribute definitions are added and the externally-defined flag is set to `true` in the B2C Commerce database. - Existing attribute definitions that have the externally-defined flag set to true in the B2C Commerce database are updated, but not replaced. - Existing attribute definitions that have the externally-defined flag set to `false` in the B2C Commerce database are ignored during import and the system logs a data error. - The import skips invalid attribute definitions. If there’s an existing attribute with the same ID and the `externally-defined-flag` set to true, the import removes it. The import also removes any configured values for the attribute from the B2C Commerce database. - If an attribute definition has the externally-defined flag set to true in the B2C Commerce database, and if the attribute isn’t present in the import feed, the attribute is removed. The import also removes any configured values for the attribute from the B2C Commerce database. B2C Commerce removes any externally defined attributes not present in the import feed because backend systems are often unable to provide information about obsolete information. The automatic removal of obsolete attributes prevents the accumulation of large numbers of obsolete attributes in the database. For the import mode DELETE, the import ignores any `product-attribute-definitions` elements defined in the import file. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Importing an existing attribute definition with a new value type or a new localizable status is considered a new attribute definition and replaces the existing attribute definition with the same ID. Complex Type: AttributeDefinition The catalog.xsd complex type `AttributeDefinition` supports the `site-specific-flag` attribute. Attribute: System Site-specific values for system attributes are supported via catalog import and export. Attribute: Custom Site-specific values for custom attributes are supported via catalog import and export. ```markup false ``` Element: Variants Attribute: Merge-Mode The `merge-mode` attribute overrides the specified MERGE semantic for specific `variants` element in UPDATE, MERGE, and REPLACE modes. The attribute has these possible values: `add, merge, replace,` and `remove.` It’s unnecessary to use the attribute in REPLACE mode, because that mode automatically removes all variation products before replacing them with the variation products listed in the feed. To add and remove variations separately, place them in separate `variants` elements. Only use one variants element and mode per variations element and product. Example 1: add two new variations ```markup ... ``` Example 2: remove three variations ```markup ... ``` Example 3: replace the attribute values for the third variation ```markup ... ``` Sorting of variation products and variation attribute values on Import Control the sorting of variation products and variation attribute values during catalog import. This capability is useful if you must preserve the sort order of existing variation products and variation attribute values when importing. If you specify `merge` for the `merge-mode` attribute of the `variation-attribute-values` and `variants` elements, the importer: - Adds all new values specified in the import file to the end of the list, in the same order as specified in the import file. - Updates all existing values specified in the import file. This behavior means that the importer updates all attributes of the value, such as display name, if specified in the import file. The position of the existing values isn’t updated. The importer removes all existing values not specified in the import file. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Variation products aren’t removed, but are unlinked from the base product and become standalone products. If the `merge-mode` attribute isn't specified in the file, the importer completely replaces the list stored in the system with the values in the import file. The import uses the default `replace` semantic for lists of elements. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The handling of these elements is independent of the top-level import mode used for the catalog import. ## Import/Export for Recommendations in B2C Commerce Recommendations are imported as part of the catalog that owns them. A recommendation is represented as a top-level element of the catalog schema. The recommendation element is a sibling of the , and elements. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The following snippets are for illustration only. See the schema files for more details. ### Schema File (Catalog.xsd) The following snippet is from the catalog schema: ```markup ``` ### Example The following is the part of the catalog schema file that handles RecommendationTypes: ```markup Allowed string values are the 'int' values defined for the Recommendation.recommendationType attribute, and additionally the values 'cross-sell', 'up-sell', and 'other' for backward compatibility. ``` With RecommendationTypes, the import process expects a positive integer value to be passed in this field. Alternatively, the import process accepts the legacy values _cross-sell,_ _up-sell_ or _other,_ which are internally converted to one, two, or three respectively. If anything else is passed, the import process reports an error and doesn't import the recommendation. The import process doesn't validate the passed integer. If the value passed isn't equal to one of the configured attribute values, the import process creates the recommendation with the passed type anyway. Define a list of RecommendationTypes in the Business Manager. For example, define a new type 4=="down-sell" or 5=="upside down sell", which appear in the XML file, as shown in the following sample: ```markup ``` ### Sorting Recommendations are sorted in the context of the source object and type. Business Manager and the catalog import process handle this sorting. The import process positions recommendations in the same order as they appear in the catalog import file. An imported recommendation is: - Added to the bottom of the list of existing recommendations in REPLACE mode, and new recommendations in MERGE mode - Left at its current position for existing recommendations in MERGE mode # Catalog Scenarios Here are some common ways you can configure and use B2C Commerce catalogs to merchandise your products. ## Manage Products in a Single Catalog You manage all your products in a single catalog, and want the same catalog structure as your storefront. Solution Create one catalog. For example, Catalog A, with the same category definitions, product definitions, and internal classification of your standard catalog–this is the same structure as your inventory system. You associate Catalog A with your storefront, and the categories become the storefront's navigation structure. ![Catalog A with category definitions](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_catalogs_catalog_scenarios_1.svg) ## Manage Products in a Different Category Configuration You have one storefront, but you want to organize the products differently on your storefront than within your organization. Solution Create Catalog A with the same category definitions, product definitions, and internal classification of your standard catalog. Create Catalog B and define the categories. Assign the products that you defined in Catalog A to the categories in Catalog B. You then assign Catalog B to the storefront. Category B provides the structure for storefront navigation. ![Catalog A and Catalog B with different category definitions](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_catalogs_catalog_scenarios_2.svg) ## Share Products Among Multiple Storefronts You have products that you want to sell on two different storefronts, but you want to edit them in the same structure used by your inventory system. Solution Create Catalog A with the same category definitions, product definitions, and internal classification of your standard catalog. Don't assign Catalog A to a storefront. Create Catalog B with the features you want and the configuration of categories you want for navigation on Storefront 1, and then assign it to Storefront 1. Assign products owned by Catalog A to categories in Catalog B. Create Catalog C with the features you want and the configuration of categories you want for navigation on storefront 2, and then assign it to Storefront 2. Add product owned by Catalog A to categories in Catalog C. Only products included in a storefront catalog are visible on that site. For example, PN003 is visible only on Storefront C. In this scenario, some products sold on Storefront B are also available on Storefront C, and some aren’t. For example, the product PN004 is available for sale on Site B and Storefront Site C, as shown. Products can also be available for sale in multiple categories. For example, PN004 is available in the Video and the Sale categories in Storefront Site B. ![Share products across multiple storefronts](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_catalogs_catalog_scenarios_3.svg) ## Share Products Between Two Storefronts You have two storefronts, a stable storefront A and a sale storefront B, which changes monthly. Solution Create Catalog A, which contains all product definitions for both storefronts and the category definitions for Storefront A. Create Catalog B, which contains a few storefront-specific products and the categories for Storefront B. ![Share products between two storefronts](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_catalogs_catalog_scenarios_4.svg) # Catalog-Level Search Refinement Definitions Search refinement definitions determine the selections shown in the B2C Commerce storefront search refinement list. Search refinement definitions enable you to configure one or more attributes (including variation attributes such as `Color`) to be used as refinement options in the storefront. Use this bucketing feature to optionally define any number of buckets per refinement definition to group the actual refinement values. - By Category - Phones (2) - Televisions (8) - By Brand - Brand-A (3) - Brand-B (2) - By Price - $0 - $50 (3) - $50 - $100 (3) - $100 - $200 (1) - By Promotion - 25% Off Online Only (3) - Buy 1, Get 1 Free (2) ## Category Refinement Sorting Modes Example The following example shows the results of the three sorting modes using category refinement. Assume that the storefront catalog, with sorted subcategories is as follows:
Women's Apparel
Men's Apparel
Children's Apparel
The customer searches for shoes.
If the category refinement is... Then the sorted order is... The hit count is...
Sorted by Value Name (alphabetical) Children's apparel (56)
Men's apparel (12)
Women's apparel (235)
Sorted by Value Count Women's apparel (235)
Children's apparel (56)
Men's apparel (12)
Sorted by Category Position Same as the Storefront Catalog positions Women's apparel (235)
Men's apparel (12)
Children's apparel (56)
## Price Refinements Bucket definitions for price refinements capture the following information: - The currency code of the price bucket. - One localized bucket label per active locale. - Price threshold of the bucket. The localized bucket label can be used to render the price range independently of the actual numerical bounds (for example, `Inexpensive` as the label for price bucket <= $10). ## Promotion Refinements ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Business Manager administrators enable promotion refinements by clicking App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then selecting **Administration** | **Global Preferences** | **Feature Switches** | **Enable Promotion Refinment**. This promotion refinement type is managed as part of the configuration of a category. Promotion refinements don’t have explicitly managed buckets or values like price refinements do, and instead have values that are active at query time in the storefront. At query time, when the promotion refinement values are returned, the values consist of all promotion IDs that are: - active for the current customer (that is, returned by _PromotionMgr.getActiveCustomerPromotions()_) - marked as refineable - relevant for at least one product hit of the unrefined search results ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Promotion Refinements are limited to displaying 30 promotions within the refinement filter. ## Search Refinement Value Set The Value Set has two options. - **All Values of Category**: This setting lets shoppers see all refinements of a category. For example, to promote a broad set of color choices and to let shoppers know that the colors are offered, you show shoppers a fixed set of colors available in a category. - **Search Result values**: This setting lets shoppers see the remaining refinements after they selected the first refinement. For example, if a user refines the search category to a certain brand, several values for refinement Color disappear because the particular brand doesn’t feature products in certain colors. ## Search Refinement Buckets Search refinement buckets let you manage the value buckets (grouped attributes) to be used when refining searches by this attribute. The bucket display name is used as a refinement option whenever the actual product value matches one of the values that are pre-defined here as a comma-separated list. Merchandisers can define buckets of refinement values and provide a label for each bucket, which is eventually presented when drilling down on that attribute. For example, consider the following product search result and the corresponding refinement values if `Color` is defined as a refinement attribute: | Product | Color | Color | | --- | --- | --- | | P1 | Light Red | \+ Light Red (1) | | P2 | Lipstick Red | \+ Lipstick Red (1) | | P3 | Dark Red | \+ Dark Red (1) | | P4 | Dark Blue | \+ Dark Blue | | P5 | Navy Blue | \+ Navy Blue | The number of product options can easily become overwhelming for a user. Customers typically search for basic colors, such as red, green, or blue. The merchandiser must limit the refinement options to more general values (that is, the main colors). With this definition in place, the color drill-down links for the same product search result reads as follows: | Bucket | Values | Color | | --- | --- | --- | | Red | Light Red, Lipstick Red, Dark Red | \+ Red (3) | | Blue | Dark Blue, Navy Blue | \+ Blue (2) | ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you use bucketing and the value list changes, or you’ve updated the catalog, remember to rebuild the index, and view the buckets to make sure that all changes have been made correctly. Repeat this after every catalog update. ## Configure Catalog-Level Search Refinement Definitions To configure catalog-level search refinement definitions in B2C Commerce: 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Products and Catalogs** | **Catalogs** | **catalog** . Click the **Edit** link for the category (in this example, Communication). 2. Click **New** to define a new search refinement for the catalog. 3. Specify the name of the search refinement as it appears in the storefront list (for example, Brand). 4. Specify the refinement type: - Attribute refinement indicates that the refinement is based on a specific product attribute (for example, Brand appears as a list of brands). For the Attribute ID, click the **ellipsis** box to show the list of product attributes from which to choose. (Custom object attributes aren’t included here and can't be used for refining searches.) - Category refinement indicates that the refinement is at the category level and includes all subcategories (this shows a list of the subcategories). - Price refinement indicates that the refinement is at the price level (for example, you might have price refinements buckets defined as `$0 - $50`, `$50 - $100`, and `$100 - $200`. - Promotion refinement indicates that the refinement is based on specific promotions (for example, you might have a promotion going on that has certain products 25% off). 5. Specify the sorting mode, how search refinement will be sorted in the storefront list: - By Value Name (alphabetically) - By Value Count (number of values found for that attribute) - By Category Position (For category refinements only). This is the refinements' explicitly defined position within the parent category.) 6. Specify the sorting direction, whether the search refinements should be listed in ascending or descending order. 7. Click **Apply**. 8. \>If your developer has customized the template to enable setting the cutoff threshold, enter the `Cutoff Threshold`, if applicable. This is the number of refinement categories that should be listed before the rest are scrollable in the list box.The cutoff threshold depends on the type of refinement. For example, for price refinements there is no cutoff threshold, because you’re bucketing all search results into custom-defined price buckets. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important Before you can see the new search refinement options in the storefront, you must rebuild your search indexes (via the **Search** | **Search Indexes** module). ## Localize Catalog-Level Search Refinement Definitions To use localized bucket labels in B2C Commerce, supply a localized label for the bucket values for attribute refinements. 1. Define the refinement. | Field | Value | | --- | --- | | Name | Color | | Refinement Type | Attribute Refinement | | Attribute ID | A00373 | | Sorting Mode | Sort By Value Count | | Sorting Direction | Ascending | | Cutoff Threshold | 5 | 2. Define the bucket values: | Bucketed Values | Bucket Display | | --- | --- | | Red | Fire Engine Red | | Blue | Sky Blue | 3. Rebuild the product index. When a customer searches on Fire Engine Red, the bucket values appear: - By Category - Phones (2) - Televisions (8) - By Brand - Brand-A (3) - Brand-B (2) - By Price - $0 - $50 (3) - $50 - $100 (3) - $100 - $200 (1) - By Color - Silver (3) - Sky Blue (4) - Shiny Red (1) - Fire Engine Red (6) If the attribute used for the refinement is defined as localizable, the values provided in the bucket value list are as well. For localized refinement attributes, one value list is required per active locale (for example, Red = Dark Red and Rot = Dunkelrot). If the attribute used for refinement is non-localized, only one bucket value list is necessary. # Catalogs B2C Commerce stores your product data in a catalog. A catalog is a collection of the products that you sell, organized into different categories. - **[Catalog Design](https://help.salesforce.com/s/articleView?id=cc.b2c_catalog_design.htm&release=264.0.0&type=5)** In B2C Commerce Business Manager, you can enter product data manually or you can import the data in an XML file and edit the data. Most customers import product data from their Product Information Management system or other system of record, and then enhance it in Business Manager. - **[Manage Catalogs](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_catalogs.htm&release=264.0.0&type=5)** Use B2C Commerce Business Manager to create, and edit catalogs, and assign catalogs to sites. - **[Configure Batch Processes for B2C Commerce Catalogs](https://help.salesforce.com/s/articleView?id=cc.b2c_batch_processing_catalogs.htm&release=264.0.0&type=5)** To perform large-scale, one-time merchandising operations on many catalogs efficiently, without editing each catalog individually, use batch processing. For example, update or delete category attributes, copy categories, or delete categories. - **[Catalog Scenarios](https://help.salesforce.com/s/articleView?id=cc.b2c_catalog_scenarios.htm&release=264.0.0&type=5)** Here are some common ways you can configure and use B2C Commerce catalogs to merchandise your products. - **[Product Catalog CSV Files](https://help.salesforce.com/s/articleView?id=cc.b2c_csv_file.htm&release=264.0.0&type=5)** B2C Commerce Business Manager supports importing and exporting your catalogs in XML and CSV format. For an easier to read and edit version, export as a CSV file. - **[B2C Commerce and POS Catalog Unification](https://help.salesforce.com/s/articleView?id=cc.b2c_pos_catalog_unification.htm&release=264.0.0&type=5)** Use catalog unification to manage product data in B2C Commerce and automatically sync updates to Salesforce Point of Sale. # Categories and Products for B2C Commerce Assign products to more than one category within and across catalogs. For example, your product catalog has an electronics category with Cell Phones, Computers, and Televisions subcategories. In your storefront catalog, you assign the last year’s model televisions to two categories: Televisions, and Electronics Sale. In addition, you have a micro site storefront where you sell clearance items. In your micro storefront catalog, you can also assign last year’s television models to the Clearance Televisions category. #### See Also - [Assign Products to Categories (Video)](https://salesforce.vidyard.com/watch/1ZEcPZ5TPA7JRaUJzWDgdU) # Categories and Storefront Navigation for B2C Commerce With the proper settings, categories also provide your storefront navigation structure. For example, root categories configured for storefront navigation show on the top level in the navigation bar. Subcategories configured for navigation show when you click their parent category. The full navigation structure shows in the left side bar on the storefront window. You can also create categories that are part of your catalog but aren’t part of your storefront navigation. For example, you have a Tent Accessories category that you link to from the Tents category but isn’t part of your storefront menu navigation. If your storefront isn't based on SiteGenesis, you can use a similar mechanism to control whether the category appears in the storefront. Salesforce recommends that you use a category design strategy that helps your customers quickly find the products and services that they want. A well-designed category strategy also helps you effectively manage your products in Business Manager. # Categories for B2C Commerce You create and organize categories and subcategories to organize and group products in your catalog and on your storefront. For example, an outdoors outfitter site uses Boots, Climbing Gear, and Outerwear categories to organize products on their storefront. - **[Categories and Storefront Navigation for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_categories_and_storefront_navigation.htm&release=264.0.0&type=5)** With the proper settings, categories also provide your storefront navigation structure. - **[Categories and Products for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_categories_and_products.htm&release=264.0.0&type=5)** Assign products to more than one category within and across catalogs. - **[Categorization Rule Sets for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_dynamic_categories.htm&release=264.0.0&type=5)** Categorization rule sets automatically assign products to specific categories. To create a rule set, use attributes, operators, and values to define the conditions a product has to meet to be included in a particular category. - **[Create and Manage Categories for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_create_and_manage_categories.htm&release=264.0.0&type=5)** You use Business Manager to create categories and subcategories, and assign products to categories. # Categorization Rule Sets for B2C Commerce Categorization rule sets automatically assign products to specific categories. To create a rule set, use attributes, operators, and values to define the conditions a product has to meet to be included in a particular category. ## Operators Use operators as filter criteria to precisely assign products to categories. | Operator | Description | Example | | --- | --- | --- | | Equals | The field value must match the specified value exactly. This selects only products that have the exact color "Red." | Product Color equals "Red" | | Not Equals | The field value must not match the specified value. This selects products that don't have the color "Red." | Product Color not equals "Red" | | Contains | The field value must include the specified value (anywhere in the field). This selects products whose name contains the word "Phone". For example, Smartphone, Mobile Phone. | Product Name contains "Phone" | | Starts With | The field value must start with the specified value. This selects products whose name starts with "Smart". For example, Smartphone, Smart Watch. | Product Name starts with "Smart" | | Is Defined | The field must have a value. For example, it’s not empty or null. This selects products that have a description filled in. | Product Description defined | | Is Not Defined | The field must not have a value. For example, it’s empty or null. This selects products that don't have a description filled in. | Product Description isn't defined | | Is One Of | The field value must match one of the specified values. This selects products where the color is either "Red," "Blue," or "Green." | Product Color is one of "Red", "Blue", "Green" | | Not One Of | The field value must not match any of the specified values. This selects products where the color is neither "Red," "Blue," nor "Green." | Product Color isn't one of "Red", "Blue", "Green" | ## Rule Sets A rule set is a collection of categorization criteria that products must meet to be assigned to a category. These rules use standard attributes, which are predefined characteristics that you can apply across products. Not all standard attributes are available as options to create rule sets and define conditions for categorizing products. Run rule sets to either narrow or broaden the range of products assigned to a category. You configure rule set logic with the AND and OR operators. All conditions within a given rule set use AND by default. And all rule sets for a given category use OR by default. A rule set can have a maximum of five conditions, which use AND. A category can have a maximum of five rule sets that use OR. For example, you want to add all Brand-XYZ products with the word Retro in their product name to a Clearance category. And you want to add all Brand-XYZ products available online until 1/1/2019 to the same Clearance category. You need two rule sets to create this category. Rule Set 1 | Attribute | Operator | Value | | --- | --- | --- | | Brand | Equals | XYZ | | Product Name | Contains | Retro | OR Rule Set 2 | Attribute | Operator | Value | | --- | --- | --- | | Online to | Less than | 1/1/2019 | After you create and verify a rule set, run the rule set manually or have it run as a bulk job. For information on how to create a bulk job, see [Creating Jobs](https://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.dochelp/content/b2c_commerce/topics/jobs/b2c_creating_jobs.html?cp=0_5_14_5). To run the rule set as a bulk job, select Run in the Categorization Rules tab. New products that fit the criteria aren’t automatically assigned. Run the job again to update the category. Rule-based categorization is intended for users on non-production instances and has a processing limit of 100,000 products per category. A product can be assigned only one primary category and one classification category. In cases where multiple categorization rules are applicable with either checkboxes checked, the last categorization job executed determines the primary category and classification. Salesforce recommends that you run two `ExecuteCategorizationRules` jobs sequentially. The first job determines the category assignment, while the second job controls which category is set as primary or classification. #### See Also - [Assign Products to Categories (Video)](https://salesforce.vidyard.com/watch/1ZEcPZ5TPA7JRaUJzWDgdU) # Category and Folder Slots Contained in Locally Included Templates in B2C Commerce Salesforce B2C Commerce tools find and show slots that are directly referenced in the category rendering template Suppose that a merchant wants to use a _category landing page_ (which is assigned as the rendering template) for a specific category. The landing page contains an include file. The include file contains another category content slot that is relevant to the category. Unfortunately, this configuration doesn't work. The included slot isn't listed.. If the slot is moved to the landing page (not the include) it appears. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The same constraint is also true of folder configurations. If a folder rendering template contains an include file that contains a folder content slot, the included slot isn't listed in Business Manager. Landing page: `` Header include: `` Workaround The solution is to put the following code in the category rendering template: `` `` `` The header include contains the actual slot: `` # Category Attributes for B2C Commerce Modify the default category attributes, and create custom attributes that are appropriate for a category. For example, your primary category for dresses is Women's Dresses. You want a dress size chart to show with the dresses in the Women's Dresses category. To show the size chart, you define a custom category attribute for a dress size chart, and then assign it to the Women's Dresses category attributes. You define category attributes in the Category system object attributes definitions. You modify the category system object in the Business Manager Administration > Site Development > System Object Types > Category. The default category attributes include settings for SEO, Sitemap, Presentation, Search Ranking, and Customer attribute options. To customize a category Attribute option for your site, set, add to, or delete attributes from the category system object. # Category Linking for B2C Commerce Link categories to each other so items in one category can be identified as belonging to another category. For example, link an Accessories category to a Women's category. Use the link to identify certain products within the Women's category as Accessories, such as scarves, jewelry, belts, or shoes. # Category Name Exclusions Excluded category names aren't indexed as keywords for the product in B2C Commerce and aren't included in search phrase suggestions. This is useful for combination categories with subcategories with distinct products. For example, if your storefront has a kitchen and bath category and the customer searches for kitchen, you don't want bath items to be included in the search result because of the kitchen and bath category name that is inherited by all products in that catalog tree. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When referencing catalog or category names that contain commas, prefix the comma with a backslash. For example, Shampoo\\, Conditioner\\, and Body Wash. However, don't exclude categories if they contain products that aren't assigned to subcategories or additional categories that can be indexed. There can also be combination categories that you don't want to exclude, such as headphones and earbuds, where you want related products to appear. For example, if a customer searches for headphones, lower-cost earbuds can also appear in the search. ## Common Pitfalls Lack of Exact Name Matching: Category name exclusions require an exact match of the category display name. The feature doesn't make inferences and there's no inheritance down the category chain. Improper Formatting for Commas: For category names that contain commas (such as "Renew & Refresh, Skincare, Hair Care, and Body Care"), insert a backslash before each comma to "escape" it so the system reads the category name correctly. Incomplete Index Rebuilding: To apply a category name exclusion, rebuild the entire product index. This differs from updating synonyms or hyponyms, which only require rebuilding the synonym index. Category Path Behavior: The exclusion feature only prevents words from the specifically excluded category from being indexed against a product. If a product also exists in another similar, non-excluded category, it's still indexed and returned in those search results. # ccdl\_attribute\_definition Defines custom B2C Commerce attributes and their data types. Each record represents an attribute definition that can be assigned values for various entities. Default refresh frequency: **Daily**. Primary Key: (entity, id). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | entity | String | Entity type the attribute applies to (for example, "product", "customer\_profile") | | id | String | Unique attribute definition identifier (format: tenant\_entity\_attributeName) | | name | String | Name of the custom attribute | | type | String | Data type of the attribute value | # ccdl\_attribute\_value Contains attribute values for various B2C Commerce entities. This is a generalized table for storing custom attributes across different entity types. Default refresh frequency: **Daily**. Primary Key: (entity, entityId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | attributeDefinitionId | Text | Reference to attribute definition | | attributeName | Text | Name of the custom attribute | | entity | Text | Entity type | | entityId | Text | Entity identifier | | id | Text | Unique record identifier (format: tenant\_entity\_entityId\_attributeName) | | locale | Text | Locale for localized values | | value | Text | Attribute value | # ccdl\_customer\_profile Contains B2C Commerce customer profile information including contact details, preferences, and activity timestamps. Default refresh frequency: **Daily**. Primary Key: (universally unique identifier (UUID), customerListId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | birthday | Date | Customer's birth date | | companyName | String | Company name for B2B customers | | creationDate | DateTime | Timestamp when the customer profile was created | | customerListId | String | Customer list identifier | | customerNo | String | Customer number identifier | | email | Email | Customer's email address | | fax | String | Customer's fax number | | firstName | String | Customer's first name | | gender | Enum-Of-Int | Customer's gender | | jobTitle | String | Customer's job title | | lastLoginTime | DateTime | Timestamp of customer's last login | | lastModified | DateTime | Timestamp when the profile was last modified | | lastName | String | Customer's last name | | lastVisitTime | DateTime | Timestamp of customer's last site visit | | nextBirthday | Date | Customer's next upcoming birthday | | phoneBusiness | String | Customer's business phone number | | phoneHome | String | Customer's home phone number | | phoneMobile | String | Customer's mobile phone number | | preferredLocale | String | Customer's preferred locale setting | | salutation | String | Customer's salutation (for example, Mr., Mrs.) | | secondName | String | Customer's middle or second name | | suffix | String | Customer's name suffix | | taxID | String | Customer's tax identification number | | taxIDType | Enum-Of-String | Type of tax identifier | | title | String | Customer's title | | UUID | String | Unique customer identifier | # ccdl\_product Contains detailed information about B2C Commerce products and SKUs. Each record represents a product with its core attributes, identifiers, and metadata. Default refresh frequency: **Daily**. Primary Key: productId. This table contains the union of: - **Goods Products:** Hard goods that can be purchased. Goods products contain inventory records. B2C Commerce product types considered goods products include standard products, variation products, and options products. - **Master Products:** Containers for some types of products. Master products don't have inventory records. B2C Commerce product types considered master products include master variations and master variations with product options. - **Bundle Products:** Products that can be purchased as a group. Bundle products can contain independent inventory records for the bundle and the products that make up the bundle. B2C Commerce product types that represent bundle products include product bundles and product bundles with product options. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | brand | String | Brand name | | bundledProduct | Boolean | Whether product is part of a bundle | | createdDate | Date | Record creation timestamp | | ean | String | European Article Number | | longDescription | String | Detailed product description | | manufacturerName | String | Manufacturer name | | manufacturerSKU | String | Manufacturer's SKU | | mastered | Boolean | Whether product is a variant of a master | | masterProductId | String | Parent master product identifier for variants | | minOrderQuantityUnit | String | Unit for minimum order quantity | | minOrderQuantityValue | BigDecimal | Minimum order quantity value | | modifiedDate | Date | Last modification timestamp | | name | String | Product name | | optionProduct | Boolean | Whether product has configurable options | | productId | String | Unique product identifier | | productType | String | Type of product (for example, ITEM, MASTER, BUNDLE) | | shortDescription | String | Brief product description | | simpleProduct | Boolean | Whether this is a simple (non-variant) product | | sku | String | Stock keeping unit | | stepQuantityUnit | String | Unit for quantity step | | stepQuantityValue | BigDecimal | Quantity increment step value | | taxClassID | String | Tax classification identifier | | tenantId | String | Tenant identifier | | unit | String | Product unit | | unitMeasure | String | Unit of measure | | unitQuantityUnit | String | Unit for quantity | | unitQuantityValue | BigDecimal | Unit quantity value | | upc | String | Universal Product Code | | validFrom | Date | Product availability start date | | validTo | Date | Product availability end date | | version | String | Schema version identifier | # ccdl\_product\_catalog Stores information about B2C Commerce product catalogs. Each record represents a catalog container for categories and products. Default refresh frequency: **Daily**. Primary Key: catalogId. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | catalogId | Text | Unique catalog identifier | | createdDate | Date | Record creation timestamp | | displayName | Text | Display name of the catalog | | modifiedDate | Date | Last modification timestamp | | shortDescription | Text | Brief catalog description | | tenantId | Text | Tenant identifier | | version | Text | Schema version identifier | # ccdl\_product\_category Contains category hierarchy information within B2C Commerce catalogs. Each record represents a category with its parent relationship and metadata. Default refresh frequency: **Daily**. Primary Key: (catalogId, categoryId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | catalogId | Text | Parent catalog identifier | | categoryId | Text | Unique category identifier | | createdDate | Date | Record creation timestamp | | description | Text | Category description | | displayName | Text | Display name of the category | | modifiedDate | Date | Last modification timestamp | | name | Text | Category name | | parentCategoryId | Text | Parent category identifier for hierarchy | | rootCategory | Boolean | Whether this is a root category | | tenantId | Text | Tenant identifier | | validFrom | Date | Category availability start date | | validTo | Date | Category availability end date | | version | Text | Schema version identifier | # ccdl\_product\_category\_product Assignment table linking B2C Commerce products to catalog categories, keyed by catalogId, productCategoryId, and productId. Each row flags whether the assignment is the product's primary or classification category. Default refresh frequency: **Daily**. Primary Key: (catalogId, productCategoryId, productId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | catalogId | Text | Catalog identifier | | classification | Boolean | Whether this is the classification category | | primary | Boolean | Whether this is the primary category for the product | | productCategoryId | Text | Category identifier | | productId | Text | Product identifier | | tenantId | Text | Tenant identifier | | version | Text | Schema version identifier | # ccdl\_product\_image Stores B2C Commerce product image metadata and paths. Each record represents an image associated with a product. Default refresh frequency: **Daily**. Primary Key: (imagePath, productId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | altText | String | Alternative text for accessibility | | imagePath | String | Path to the image resource | | imageType | String | Type of image (for example, large, small) | | productId | String | Product identifier | | tenantId | String | Tenant identifier | | title | String | Image title | | version | String | Schema version identifier | # ccdl\_product\_option Definition table for B2C Commerce product options such as gift wrapping or warranties, keyed by productId and productOptionId. Each row carries the option's display name, description, default value, and whether it's shared across products. Default refresh frequency: **Daily**. Primary Key: (productId, productOptionId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | createdDate | Date | Record creation timestamp | | defaultProductOptionValue | Text | Default selected option value | | description | Text | Option description | | displayName | Text | Display name of the option | | lastModified | Date | Last modification timestamp | | productId | Text | Product identifier (null if shared option) | | productOptionId | Text | Unique option identifier | | shared | Boolean | Whether option is shared across products | | tenantId | Text | Tenant identifier | | version | Text | Schema version identifier | # ccdl\_product\_option\_value Selectable values for B2C Commerce product options, keyed by productId, productOptionId, and valueId. Each row is one choice for an option — for example, One Year or Two Year for an Extended Warranty — with its SKU extension. Default refresh frequency: **Daily**. Primary Key: (productId, productOptionId, valueId). For example, for an "Extended Warranty" product option, product option values can include "One Year", "Two Year", and so on. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | default | Boolean | Whether this is the default value | | productId | Text | Product identifier (null if shared) | | productOptionId | Text | Parent option identifier | | skuExtension | Text | SKU extension for this option value | | tenantId | Text | Tenant identifier | | value | Text | Display value | | valueId | Text | Unique value identifier | | version | Text | Schema version identifier | # ccdl\_product\_product\_option Junction table linking B2C Commerce products to the product options available on them, keyed by productId and productOptionId. Each row associates one product with one option defined in ccdl\_product\_option. Default refresh frequency: **Daily**. Primary Key: (productId, productOptionId). ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | productId | Text | Product identifier | | productOptionId | Text | Option identifier | | tenantId | Text | Tenant identifier | | version | Text | Schema version identifier | # ccdl\_sales\_order Order-header table for placed B2C Commerce orders, keyed by documentNo and siteId. Each row holds one order's grand totals, subtotals, shipping, and tax in the tendered currency. Default refresh frequency: **Hourly**. Primary Key: (documentNo, siteId). This table contains order headers of placed orders. All orders where visitor consent hasn't been given to track activities are excluded from this table. All monetary values are represented in the currency defined by the currencyCodeAlpha3 column, which represents the tendered currency for the sales order. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | businessType | String | Business type classification | | currencyCodeAlpha3 | String | ISO 4217 alpha-3 currency code of order | | customerNo | String | Identifier for registered user | | documentNo | String | Unique identifier for an order, scoped to site | | grandTotalGrossPrice | Double | Order total gross price (including tax) | | grandTotalNetPrice | Double | Order total net price (excluding tax) | | grandTotalTax | Double | Order total tax | | locale | String | Locale of the order | | orderChannel | String | Channel through which order was placed | | orderPlacedTimestamp | Date | Timestamp when the order was placed | | shippingAfterDiscountsGrossPrice | Double | Shipping gross price after discounts | | shippingAfterDiscountsNetPrice | Double | Shipping net price after discounts | | shippingAfterDiscountsTax | Double | Shipping tax after discounts | | shippingGrossPrice | Double | Shipping gross price (including tax) | | shippingNetPrice | Double | Shipping net price (excluding tax) | | shippingTax | Double | Shipping tax amount | | siteId | String | Unique site identifier within a B2C Commerce tenant | | subtotalAfterDiscountsGrossPrice | Double | Subtotal gross price after all discounts | | subtotalAfterDiscountsNetPrice | Double | Subtotal net price after all discounts | | subtotalAfterDiscountsTax | Double | Subtotal tax after all discounts | | subtotalAfterProductDiscountsGrossPrice | Double | Subtotal gross price after product discounts | | subtotalAfterProductDiscountsNetPrice | Double | Subtotal net price after product discounts | | subtotalGrossPrice | Double | Subtotal gross price (including tax) | | subtotalNetPrice | Double | Subtotal net price (excluding tax) | | subtotalTax | Double | Subtotal tax | | tenantId | String | Unique identifier for tenant in B2C Commerce | | version | String | Version of data stream (for example, "v1") | | visitId | String | Identifier for the visit/session | | visitorId | String | Identifier of the site visitor who placed the order | # ccdl\_sales\_order\_customer Contains customer details associated with B2C Commerce sales orders. Each record captures customer profile, default address, and billing address information at the time of order placement. Default refresh frequency: **Hourly**. Primary Key: (customerNo, visitorId). This table contains customer information from the headers of placed orders. All orders where visitor consent hasn't been given to track activities are excluded from this table. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | buyerEmail | String | Order confirmation email | | buyerName | String | Name of the buyer | | customerCredentialsLogin | String | Login name of the customer | | customerDefaultAddressAddress1 | String | Primary street address line | | customerDefaultAddressAddress2 | String | Secondary street address line | | customerDefaultAddressCity | String | City name | | customerDefaultAddressCompanyName | String | Company name in address | | customerDefaultAddressCountryCode | String | Country code | | customerDefaultAddressFirstName | String | First name in address | | customerDefaultAddressFullName | String | Full name in address | | customerDefaultAddressJobTitle | String | Job title in address | | customerDefaultAddressLastName | String | Last name in address | | customerDefaultAddressPhone | String | Phone number in address | | customerDefaultAddressPostalCode | String | Postal code or ZIP code | | customerDefaultAddressPostBox | String | Post office box | | customerDefaultAddressSalutation | String | Salutation in address | | customerDefaultAddressSecondName | String | Middle/second name in address | | customerDefaultAddressStateCode | String | State/province code | | customerDefaultAddressSuffix | String | Name suffix in address | | customerDefaultAddressSuite | String | Suite/apartment number | | customerDefaultAddressTitle | String | Title in address | | customerId | String | Unique customer identifier | | customerListId | String | Customer list identifier | | customerNo | String | Identifier for registered user | | customerNote | String | Notes associated with the customer | | customerPreferredLocale | String | Customer's preferred locale setting | | customerProfileBirthday | Date | Customer's birth date | | customerProfileCompanyName | String | Customer's company name | | customerProfileCreationDate | Date | Profile creation timestamp | | customerProfileEmail | String | Customer's email address | | customerProfileFAX | String | Customer's fax number | | customerProfileFirstName | String | Customer's first name | | customerProfileGender | String | Gender of customer | | customerProfileJobTitle | String | Customer's job title | | customerProfileLastLoginTime | Date | Timestamp of last login | | customerProfileLastName | String | Customer's last name | | customerProfileLastVisitTime | Date | Timestamp of last visit | | customerProfilePhoneHome | String | Customer's home phone | | customerProfilePhoneMobile | String | Customer's mobile phone | | customerProfileSalutation | String | Customer's salutation | | customerProfileSecondName | String | Customer's middle/second name | | customerProfileSuffix | String | Customer's name suffix | | customerProfileTitle | String | Customer's title | | invoiceToAddressAddress1 | String | Billing address line 1 | | invoiceToAddressAddress2 | String | Billing address line 2 | | invoiceToAddressCity | String | Billing address city | | invoiceToAddressCountryCode | String | Billing address country code | | invoiceToAddressFirstName | String | Billing address first name | | invoiceToAddressFullName | String | Billing address full name | | invoiceToAddressJobTitle | String | Billing address job title | | invoiceToAddressLastName | String | Billing address last name | | invoiceToAddressPhone | String | Billing address phone | | invoiceToAddressPostalCode | String | Billing address postal code | | invoiceToAddressPostBox | String | Billing address post box | | invoiceToAddressSalutation | String | Billing address salutation | | invoiceToAddressSecondName | String | Billing address second name | | invoiceToAddressStateCode | String | Billing address state code | | invoiceToAddressSuffix | String | Billing address name suffix | | invoiceToAddressSuite | String | Billing address suite | | invoiceToAddressTitle | String | Billing address title | | isAnonymous | Boolean | Whether the customer is anonymous/guest | | orderPlacedTimestamp | Date | Timestamp when the order was placed | | tenantId | String | Tenant identifier | | usid | String | Unique session identifier | | version | String | Version of data stream | | visitorId | String | Identifier of the site visitor who placed the order | # ccdl\_sales\_order\_product Order line-item table for placed B2C Commerce orders, keyed by documentNo, position, and siteId. Each row is one product line with its SKU, quantity, base and discounted pricing, and tax. Default refresh frequency: **Hourly**. Primary Key: (documentNo, position, siteId). This table contains order line items of placed orders. This table excludes all orders where visitor consent hasn't been given to track activities. All monetary values are represented in the currency defined by the currencyCodeAlpha3 column, which represents the tendered currency for the sales order product. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | adjustedPriceAfterOrderDiscount | Double | Adjusted price after order-level discounts | | basePrice | Double | Base price before adjustments | | categoryId | String | Category identifier for the product | | currencyCodeAlpha3 | String | ISO 4217 alpha-3 currency code | | documentNo | String | Unique identifier for an order, scoped to site | | grossPrice | Double | Gross price (including tax) | | grossPriceAfterDiscounts | Double | Gross price after all discounts | | isBonusProduct | Boolean | Whether this is a bonus/promotional product | | isGift | Boolean | Whether this item is marked as a gift | | netPrice | Double | Net price (excluding tax) | | netPriceAfterDiscounts | Double | Net price after all discounts | | orderPlacedTimestamp | Date | Timestamp when the customer placed the order | | position | Integer | Position of line item within the order | | productId | String | Product identifier | | quantityUnit | String | Unit of measure for quantity | | quantityValue | Double | Quantity of SKU ordered | | siteId | String | Site identifier | | sku | String | Stock keeping unit identifier | | tax | Double | Tax amount | | taxAfterDiscounts | Double | Tax amount after all discounts | | taxBasis | Double | Tax basis amount | | taxRate | Double | Tax rate applied | | tenantId | String | Tenant identifier | | version | String | Version of data stream | # ccdl\_sales\_order\_product\_option\_value Contains product option values for line items in B2C Commerce sales orders. Each record represents a selected option value for a product in an order. Default refresh frequency: **Hourly**. Primary Key: (documentNo, position, productOptionId). This table represents a linkage between an order line item (a sold product) and an option applied to that product. For any product line item in an order for which there's an associated option selection, there's a corresponding entry in this table. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | documentNo | String | Unique identifier for an order, scoped to site | | orderPlacedTimestamp | Date | Timestamp when the customer placed the order | | position | Integer | Position of line item within the order | | productId | String | Product identifier (null if shared) | | productOptionId | String | Identifier for the product option | | siteId | String | Site identifier | | tenantId | String | Tenant identifier | | valueId | String | Identifier for the selected option value | | version | String | Version of data stream | # ccdl\_site Contains site configuration and settings. Each record represents a B2C Commerce storefront site with its currency, locale, catalog, and customer list assignments. Default refresh frequency: **Hourly**. Primary Key: siteName. ## Column Reference | Column Name | Data Type | Description | | --- | --- | --- | | baseCurrency | String | Base currency code for the site | | catalogId | String | Associated product catalog identifier | | customerListId | String | Associated customer list identifier | | defaultLocale | String | Default locale setting (for example, "en\_US") | | siteCurrency | String | Display currency code for the site | | siteName | String | Unique site identifier | # Change Account Information in B2C Commerce Change your account information with Account Manager. You can't change your email address, but you can change other account values, such as your business phone number. Also, depending on the multi-factor authentication (MFA) verification method settings of your organization, you can register methods for verifying your identity when logging in to B2C Commerce applications. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Log into Account Manager. 2. Click **Account Details**. The Account Details page shows several fields whose values you can modify: First Name, Last Name, Business Phone, Mobile Phone, Home Phone, and Preferred Language. 3. After you change the field values, click **Update**. A message appears indicating that your account details are successfully updated. 4. Click **Continue**. # Change History Configure which B2C Commerce objects you want to track, and view the change history on staging and production instances. For each object, see when it was created, updated, or deleted. For each change, B2C Commerce generates a _change event,_ which indicates: - Who (user or job) performed the change - When the change occurred - What was the nature of the change (creation, deletion, or update) - Which specific object was changed After an object is changed, B2C Commerce stores a JSON representation of the object in its new state. If an object is deleted, B2C Commerce creates and stores a deletion notice indicating the deleted object's type, ID, and name (if available). Different types of objects are interrelated, so an object's change history often shows changes to related objects, not just changes to the object itself. For example, if a product was added to a category or was removed from a category, the product's change history includes the change event. B2C Commerce aggregates change events over time. As a consequence, changes aren’t immediately viewable. It can take up to 15 minutes for B2C Commerce to recognize changes and show them in the change history. View the change history for the following B2C Commerce objects. - Catalogs and categories - Content asset - Custom objects - Customer groups and lists - Job schedules - Library folders - Organizations - Price books - Products - Recommendations - Shared product options - Shared variation attributes - Sites - Source code groups - Store details - System object types History tabs aren’t available for the following object types: A/B tests, campaigns, coupons, promotions, search settings, slot configurations, and sorting rules. ## Change History Details When you’re viewing change history in Business Manager: Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Change History**. B2C Commerce summarizes changes based on the unique combinations of five variables: date, user, scope, object, and action. Each summary line shows information using the following format: ``` [date] [user] [scope /] object ] [ - action] ```
date day on which the summarized changes occurred.
user One of the following values: name of a user; name of a user followed by "(job)" if the user manually started a job; or name of a scheduled job shown in the format "job: job_name".
scope /

One of the following values, followed by the slash character. Scope is optional and appears only if the scope is ambiguous. For example, the scope is ambiguous if you select Product in the Object Type field and accept the default values for all of the other search fields. This causes B2C Commerce to return product changes occurring in multiple scopes, which are then added to the summary line to clarify the scope in which the change occurred. If the scope isn’t ambiguous—for example, if you select a value in the Scope field—it doesn't appear in the summary line:

  • "Catalog <catalog_ID>" (where catalog_ID is the ID of the catalog)
  • "Price Book <price_book_ID>" (where price_book_ID is the ID of the price book)
  • "Inventory List <inventory_list_ID>" (where inventory_list_ID is the ID of the inventory list)
  • "Library <library_ID>" (where library_ID is the ID of the library)
  • "Site <site_ID>" (where site_ID is the ID of the site)
  • "Organization <organization_ID>" (where organization_ID is the ID of the organization)
object object type followed by the ID of the object.
- action

A dash character followed by one of the following values: Creation, Deletion, Update, or one of the values in the Update Actions column.

The action is optional and appears only if the action is ambiguous. For example, the action is ambiguous if you select Product in the Object Type field and accept the defaults for all of the other search fields. This causes B2C Commerce to return product changes related to multiple actions, which are then added to the summary line to clarify the action for each change. If the action isn't ambiguous—for example, if you select a value in the Action field—it doesn't appear in the summary line.

If an object is deleted, B2C Commerce creates and stores a deletion notice indicating the deleted object's type, ID, and name (if available). # Change the B2C Commerce Dashboard Realm Currency With B2C Commerce Reports and Dashboards, you set the realm currency setting so that aggregated realm data for all your sites shows in the selected currency. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You have 60 days from your go live date to configure the settings. At the end of the 60-day period, the option to change currency setting is no longer available in your Reports & Dashboard instance. Changing the currency setting affects only the aggregated view of your sites. Individual sites continue to use the site currency set for them. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant tools** | **Analytics** | **Reports & Dashboards**. 2. Click the **Settings** icon. 3. Click the **Manage Realm** Tab. 4. Click the **Default currency** dropdown and select your currency. 5. Click **Save**. The page shows that the currency change is pending. Pending currency changes require 24 hours to take effect. 6. After 24 hours, return to the Manage Realm page to confirm the new setting and verify that there are no pending changes. The currency setting is now in effect, and all aggregated realm data for all your sites uses the selected currency. # Change the B2C Commerce Dashboard Timezone The default realm timezone setting for Reports & Dashboards is Greenwich Mean Time (GMT). You can change the timezone setting to one that better serves your business needs. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You have 60 days from your go live date to configure the settings. At the end of the 60-day period, the option to change the timezone setting will no longer be available in your Reports & Dashboard instance. To modify the timezone, you need Account Administrator credentials. Timezone setting can be for a specific region or a specific GMT timezone. When you change the timezone, B2C Commerce updates existing order data accordingly. For traffic data, the timezone only changes for reports generated after the timezone change. 1. Click **Settings** icon. 2. Click the **Manage Realm tab**. 3. Set the new Default timezone. 4. Click **Apply**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Report data processing can take up to 24 hours. # Change the User Interface Locale for Business Manager The Business Manager user interface for B2C Commerce supports multiple languages. 1. In Business Manager, select your profile in the top right of the page. 2. In the Preferences section, select a preferred locale for the UI and for the date. 3. Click **Apply**. # Change User Information in B2C Commerce Both users and administrators can edit user information in B2C Commerce. The available languages for the user interface are restricted to the languages allowed for the data locales, managed in the global preferences. Also, the organization has a preferred data and user interface locale, which is the fallback for the user, if selected in the global preferences. To manage user login and credential information, you must have permissions to the Users module. To manage roles and permissions, you must have permissions to the Roles & Permissions module. To assign roles to users, you must have permissions to both the Users module and the Roles & Permissions module. 1. Open a user's account. 1. For a non-administrative user, open Business Manager and click username at the top right of a Business Manager page. 2. For an administrator: click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Organization** | **Users** | **user**. 2. Search for the user. 3. Enable or disable the user. 4. Click **Change Password and Security Settings**. 5. For an administrative user: 1. Enter your password. 2. Click **Generate**. An email is sent to the user notifying them of the new password. 6. For the non-administrative user: 1. Click **Generate** or enter and reenter a new password. 2. Click **<< Back to Profile**. 3. Select a new security question and enter its answer to change these settings. 7. Click **Apply**. 8. Click **Change Email**. 1. Enter your password. 2. Enter the new email. 3. Click **Apply**. 9. Change preferences: - Preferred UI Locale: select the locale to appear in the Business Manager user interface for this user. - Preferred Data Locale: select the locale to use for data creation and editing for this user. This locale is also used in the storefront for this data. 10. Click **Apply**. 11. On the **Roles** tab. 1. Click **Assign**. 2. On the Select Roles page, select one or more user role IDs. 3. Click **Assign** or **Unassign**. 12. On the **Permissions** tab. 1. To find a permission, use the filter. 2. To export permissions, click **Export to CSV**. # Change Your Account Password in B2C Commerce You are required to change your password every 90 days. Define a new password even if your existing password expired. After a password has expired, you can attempt to log in six times to set a new password before your account is temporarily locked. After you successfully log in with an expired password, immediately reset your password. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note To improve security, if a user is logged in and resets their password, their session is automatically invalidated. To continue their session, the user must log in again. This procedure works only when your Account Manager account is not linked to a Salesforce Identity account. 1. Log into Account Manager. 2. Click **Password**. 3. In the **Current Password** field, reenter your current password. 4. In the **New Password** field, enter your new password. Minimum password requirements include: - Character length 7. Some organization require more - 1 alpha character - 1 upper case character - 1 digit character - 1 special character As you enter characters, the page gives you feedback about the security strength of your password. 5. In the **Confirm Password** field, reenter your new password. 6. Click **Change Password**. # Characters Allowed in URLs Encode most characters used in URLs. B2C Commerce automatically encodes special or reserved characters, or umlauts in URLs, but doesn't remove them. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note These characters are reserved and are removed if used as a standalone URL prefix: "h", "\_h", "n", "\_n". For example, the category URL "/h/womens is changed to /womens. If you use product or category names to construct your URLs, you can configure whether spaces in names are encoded with '%20' or replaced by another character, such as a hyphen. You can also configure whether all characters are converted to lower case and all URLs have a trailing slash. The characters allowed or disallowed in URLs applies to all B2C Commerce URLs, whether you are using the standard syntax, the search-friendly URL syntax, or the URL Rules URL syntax. ## B2C Commerce URL Encoding of Product or Content IDs The following characters are allowed in product or content IDs and are handled by search-friendly URL generation.
Character Description
- Minus
. Period
,

Comma - The comma can generally be used, except for the Product-ShowInCategory pipeline that requires two parameters, in which case category ID must not contain a comma.

Note
Note Salesforce recommends not using commas in object IDs to avoid possible problems with custom pipelines that require multiple parameters.
_ Underscore
# Number sign
< Less than
> More than
% Percent
$ Dollar Sign
: Colon
; Semicolon
= Equal sign
While it's possible to use other characters in product IDs, we generally recommend using alphanumeric characters in product and content IDs, because they can cause URLS to not be generated correctly. ## B2C Commerce URL Encoding of Marketing Text Characters Disallowed in SEO URLs: - `&` \- ampersand - ASCII control characters (ASCII code: 0x00-0x1F, 0xF7). For example, NULL, tab, or other invisible control characters are not allowed in SEO URLs. Character Encoding Rules: B2C Commerce supports UTF-8 and ISO-8859-1 encodings. All other encodings supported by Java virtual machines are expected to work, but are not officially supported. See [URL Syntax](https://help.salesforce.com/s/articleView?id=cc.b2c_url_syntax.htm&release=264.0.0&type=5 "Define how your storefront URLs look in Salesforce B2C Commerce via two types of URL syntax.") for information on specifying ISO or other encodings as part of a URL. B2C Commerce uses the following rules when encoding text in SEO URLs. - All visible special ASCII characters except disallowed characters. If a disallowed character is present, it's replaced by a space replacement character ('+' or %20). - Spaces at the beginning and the end of the marketing text are removed and multiple spaces compressed into one. - Standard UTF8 URL encoding applies, using a space substitute (%20, +) that you configure. - Forward slashes (`/`) are not encoded and stay in clear text in generated URLs. - The plus sign (`+`) is encoded according to the current system configuration for the space substitution character. ![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_example.png) Example These examples assume that the URLs use the default configuration and assume all encoded URLs are prefixed by the protocol and host name. The SEO Definition for all of the following URLs is: ``` ${name}/${productID} ``` | Name | ID | Encoded URL | | --- | --- | --- | | PRODUCTäNAME | ID+ID | PRODUCT%C3%A4NAME/ID%20ID | | PRODUCT NAME | ID&ID | PRODUCT%20NAME/ID%20ID | | PRODUCT&NAME | ID?ID | PRODUCT%20NAME/ID%3FID | | PRODUCT+NAME | ID ID | PRODUCT%20NAME/ID%20ID | | PRODUCT%NAME | ID/ID | PRODUCT%25NAME/ID/ID | | PRODUCT/NAME | ID%ID | PRODUCT/NAME/ID%25ID | | PRODUCT-NAME | ID-ID | PRODUCT-NAME/ID-ID | # Checklist for Active Merchandising To implement active data for a B2C Commerce site, tag the site for data collection and import other attribute values. This page lists the tasks in the order. Because analytics-driven merchandising involves the collection, import, analysis, and calculation of values for merchandising, you must complete all analytics-driven merchandising tasks before implementing personalization or searchandising. ## Preparation and Planning
Task Role ~Time

Present active merchandising slide set to the customer, emphasizing how it works for them, and the steps to get there.

Review this checklist.

Salesforce B2C Commerce: CRM/Merchandising

Customer: Developer and Merchant

2 hours
Assign roles for merchandising tasks to make sure that personnel have the appropriate permissions in Business Manager. Customer: Administrator, Developer, and Merchant 1 hour

Contact Salesforce Support to request active merchandising enablement.

Provide the following information in your request email:

  • Customer realm ID
  • Site name
  • Site location: EU or US
  • Projected page views per day for the site
  • Site currency
  • Base URL
  • Site time zone
  • Expected site go-live date
Customer: Developer

15 minutes to make the request

3 hours to 1 week for Salesforce to enable the feature

checkbox Read the active merchandising documentation thoroughly. Reading the documentation can speed the implementation and validation process. Customer: Developer 2 hours
## Data Collection Set Up and Configuration
Task Role ~Time
Develop a searchandising and personalization strategy for your site. Determine any custom attributes you want to create and use for sorting search results or creating customer group promotions. Customer: Merchant 1–3 hours
Assign roles for merchandising tasks. Customer: Merchant 15 minutes
Make sure that personnel have the appropriate permissions. Customer: Administrator 15 minutes

Add new tags to your Internet Store Markup Language (ISML) templates to collect data from your site. Use the SiteGenesis implementation of active merchandising as an example of tagging. Refer to the Reference Application implementation of active merchandising for information on what templates to tag for sites based on the older reference application.

Customer: Developer 30 minutes to 4 hours

Validate the Tagging Effort.

Customer: Developer 5 minutes

checkbox Review page tagging for accuracy using the Analytics Debugger.

B2C Commerce: CRM

Customer: Developer

2-hour meeting

Customer includes a file for the Cost and Newness metrics.

Creating Feeds.

Creating the Custom .csv Feed Files.

Importing the Custom .Csv Feed Files and rebuild the product search index. You can then immediately test rules based on imported feed data, as long as you also have active data available.

Warning: Active Data imports use REPLACE mode. Attributes not in the CSV file are permanently deleted. See the import topic for prerequisites and data loss warnings.

Customer: Developer and Administrator

Varies based on requirements (for the tasks, 15, 30, and 5 minutes, respectively)

Automate the feed import.

Create an import pipeline for active data feeds using the ImportActiveData pipelet.

Create a job to automate active data import.

Customer: Developer 30 minutes

(Optional) If your searchandising or personalization strategy requires it, create custom attributes for the ProductActiveData and CustomerActiveData objects.

Customer: Developer Depends on the number of attributes to be created, but if the number is under five, approximately 20 minutes.

Make tagging changes as required.

Customer: Developer 1 day
Update the Salesforce Support ticket to indicate that the active data collection is ready to go live. Customer: Developer  

Make tagging changes as required.

Customer: Developer 1 day
checkbox Update the Salesforce Support ticket to indicate that the active data collection is ready to go live. Customer: Developer  
## Searchandizing
Task Role ~Time

Provide searchandising strategy session and sorting rules training.

B2C Commerce: CRM

Customer: Merchant

1 day

Create Dynamic Attributes.

Customer: Merchant 15 minutes

Create Sorting Rules.

Customer: Merchant 15 minutes

Create Storefront Sorting Options.

Customer: Merchant 15 minutes

Configure a Category Default Sorting Rule.

Customer: Merchant 15 minutes

Set the Keyword Search Sorting Rule.

Customer: Merchant 15 minutes

(Migration from Previous Version Only) When implementing active merchandising in an existing site, you must also change all calls to the Search pipeline to use the new sorting rule ID parameter instead of sortBy parameters.

Customer: Developer 15 minutes

(New implementation only) Make sure any calls to the Search pipeline use the sorting rule ID parameter. See the Product and Search pipelines in the latest SiteGenesis Storefront Core cartridge.

Customer: Developer 15 minutes
When you've tuned your sorting rules to your satisfaction, stage them from your Staging instance to your Production instance. Customer: Administrator 15 minutes
After a minimum of 1 day, review the top selling product pages in Business Manager to test the data collection.

B2C Commerce: CRM

Customer: Merchant

15 minutes for the test results, 1-hour meeting to discuss results.
## Personalization
Task Role ~Time
checkbox Provide a personalized merchandising strategy session and readiness check. Check existing customer groups and content slots.

B2C Commerce: CRM/Merchandising

Customer: Developer

Varies

checkbox Provide personalized merchandising training that includes best practices for creating dynamic customer groups and slot configurations.

B2C Commerce: CRM/Merchandising

Customer: Merchant

1/2 day
checkbox Create or edit customer group definitions. Customer: Merchant 15 minutes
checkbox Create or edit content slots for personalized merchandising. Customer: Merchant 15 minutes

checkbox Define customer groups as part of slot configuration rules.

Customer: Merchant 15 minutes
## Troubleshooting
Task Role ~Time
checkbox Regularly monitor your daily active data feed and consult customer support if you experience any problems. Customer: Administrator 5 minutes

Configure Active Data

Customer: Developer or Merchant as desired
# Checkout Process Family Checkout Process interactions capture when B2C Commerce customers initiate checkout (`checkout-begin`), progress through checkout stages (`checkout-step`), provide contact information (`checkout-contact-info`, deprecated), create accounts during checkout (`checkout-user-register`), and submit final orders (`checkout-submit`). These interactions map to WebsiteEngagement DMO for checkout events, plus Individual, ContactPointEmail, ContactPointPhone, and ContactPointAddress DMOs for customer data capture. The five checkout interactions share one WebsiteEngagement DMO structure, where the EngagementChannelActionId field identifies which checkout step each record represents. Because checkout events originate from server-side order processing, they use the Server2Server integration type. ## WebsiteEngagement DMO | Commerce Event Field | DMO Field | Required/Optional | Description | | --- | --- | --- | --- | | `browserName` | `BrowserName` | Optional | Name of the browser used for the event | | `browserVersion` | `BrowserVersion​Number` | Optional | Version of the browser used for the event | | `dateTime` | `CreatedDate` | Required | DateTime event occurred in ISO 8601 format | | `dateTime` | `Engagement​DateTime` | Required | Date/time of checkout engagement | | `deviceId` | `IndividualId` | Required | Identifier of the device sending the event | | `deviceModel` | `DeviceModelName` | Optional | Model of the device used for the event | | `deviceVendor` | `DeviceVendor​Name` | Optional | Vendor such as manufacturer of the device used for the event | | `eventId` | `Id` | Required | Unique identifier of the event that the client generates, commonly a universally unique identifier (UUID) | | `eventStatus` | `EngagementChannel​ActionStatus` | Optional | Resulting status of the event, either success or failure | | `eventType` | `Engagement​TypeId` | Required | Type of checkout interaction | | `interactionName` | `EngagementChannel​ActionId` | Required | User interaction the event describes | | `osName` | `OSName` | Optional | Operating system name of the device used for the event | | `osVersion` | `OSModelName` | Optional | Operating system version of the device used for the event | | `screenHeight` | `ScreenHeight​PixelsQuantity` | Optional | Height of the screen on which the event occurred, in pixels | | `screenWidth` | `ScreenWidth​PixelsQuantity` | Optional | Width of the screen on which the event occurred, in pixels | | `siteId` | `WebsiteId` | Required | Identifier for the client sending the event | | `sourceLocale` | `DeviceLocaleId` | Optional | Locale associated with the event | | `sourcePageName` | `PageName` | Optional | Name of the page on which the event occurred | | `sourceUrl` | `PageURL` | Optional | URL of the page on which the event occurred | | `sourceUrl​Referrer` | `ReferrerURL` | Optional | Referrer URL of the source page | # Choice of Bonus Product Discount in B2C Commerce Offer your shoppers a choice of bonus product as a discount. For example, spend at least $1,000 on living room furniture and get your choice of three different types of televisions. B2C Commerce adds a bonus product to the shopping cart if the bonus product is online and orderable. The product is orderable if an inventory list is assigned to the site, it’s available to sell, or there isn't an inventory list assigned to site (availability isn't evaluated). See ProductAvailabilityModel.isOrderable() in the Salesforce B2C Commerce API documentation for more information. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important You can’t assign a bonus discount to a base product because a base product isn't orderable. To configure bonus products, define rules in Business Manager or use the list functionality to customize your application. Rule-based bonus product discounts let you use a category as a pool of potential bonus products instead of specific Product IDs. For example: - Rule-based: Spend $100 and get 1 product from discounted product rule - List-based: Spend $100 and get 1 product from this list of products: P123, P456, P789 If either discount applies for a basket, B2C Commerce adds a `BonusDiscountLineItem` to the cart, representing an entitlement to a bonus product. When the B2C Commerce Script API is called to select a bonus product (for example, using `AddBonusProductToBasket`), B2C Commerce validates the product against the configured rule. It rejects the product unless it satisfies the promotion product rule. B2C Commerce identifies bonus products that are improperly associated with `BonusDiscountLineItem` and don't satisfy the configured product rule. B2C Commerce removes the product from the cart. This table describes some differences between the two discounts.
Feature Rule-based List-based
Tiered promotions Tiered promotions can't include rule-based bonus choice discounts. Tiered promotions can include list-based choices, where each tier has a free or defined price bonus product.
Precalculation

Precalculation for rule-based bonus choice discounts isn't possible.

To prevent an invalid promotion from blocking valid promotions from applying, B2C Commerce precalculates whether bonus products are available online. If not, the promotion acts disabled and doesn't add an entitlement to the cart even though the basket qualifies for it. This behavior lets product promotions blocked by exclusivity rules properly apply.
BonusChoiceDiscount class Represented Represented
Application customization Not required Required
## Rule-Based Configure a choice of bonus product rule as you would any rule-based [product](https://help.salesforce.com/s/articleView?id=cc.b2c_product_promotions.htm&release=264.0.0&type=5 "Define product promotions for specific products, groups of products or brands, or amounts of products purchased.") or [order](https://help.salesforce.com/s/articleView?id=cc.b2c_order_promotions.htm&release=264.0.0&type=5 "Use Salesforce B2C Commerce to configure order promotions for percentage discounts, fixed price discounts, and free shipping. Offer a bonus product or a choice of bonus products, and tier order discounts.") promotion. When using this discount type, the product results set can be large. The SiteGenesis application shows a window with at most 10 products per page. The SiteGenesis application implements this feature via the promotion ID `RuleBasedChoiceOfBonusProduct`. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When you enable global product exclusions, and the rule-based discount search results contain excluded products, the area where rule-based products appear is blank. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Rebuild the product index after creating this discount type. ## List-Based Configure the discount and change your storefront application. If you only configure it in Business Manager, no discount appears in the storefront. When this discount applies in the storefront, a placeholder is added to the cart containing the discount information. The shopper can add free products to the basket. [Add extra workflow](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-promotions-for-developers.html#bonus-discount-promotions) to your code to notify a shopper that they’re entitled to the bonus products and let them select the products. This discount lets shoppers: - Select items from a bonus product list - Check out without selecting a bonus product - Configure options of option bonus products - Configure variations if the bonus product is a base product - Buy a specific product and optionally buy a bonus gift for a price - Spend a specific dollar amount of qualifying merchandise and choose bonus gifts for a configured price from a set of choices The promotion doesn’t apply if every bonus product is offline, no longer assigned to the storefront catalog, out of stock, or no longer exists. If the bonus promotion previously blocked another product promotion because of exclusivity and rank, the previously hidden promotion applies instead. This process is similar to that of other bonus discounts. Promotion Classes and Types In Business Manager, select up to 50 bonus products to associate with the choice of bonus products (list) discount. The relatively low limit is because of performance considerations. Configure the order in which the products appear. Bonus products must be online and assigned to the storefront catalog. Configure up to 10 bonus items for the shopper to select from. The promotion isn't intended to let shoppers select several products, each with a different price. If your goal is to apply promotions to many products at the same time, consider using other promotion types. ## Product Types | Product type | Details | | --- | --- | | Variation | Include a base product or a subset of its variation products in a Choice of Bonus Product promotion. If the base product is in the list, the shopper can select any of its variation products. If the discount allows multiple bonus products, the shopper can select multiple variation products. To change the selection, the shopper removes the selected product and selects different variation products. If specific variation products are listed, the shopper can only choose from those. In this case, each appears as a separate choice with no way to change variation attribute values. | | Option | The shopper can select any option on the bonus selection page. To change option selections, shoppers can remove the selected product and add it again with different options. | | Bundle | Bundled products don't count toward max bonus items, because a bundle only counts as one item. If the bundle contains base products, the shopper must select variations before adding the bundle to cart. In this case, all variation products of the base product are selectable. If the bundle contains option products, the shopper must select options before adding the bundle to cart. To change option selections, shoppers can remove the selected product and add it again with different options. | ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You can't use product sets for this discount. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The configured promotion-specific price of a variation group included in a Choice of Bonus Product discount doesn’t affect the promotion evaluation. # Choice-of-Bonus-Product Discount FAQ in B2C Commerce The APIs described in the topic, Implementing a Choice-of-Bonus-Product Discount, are all that you need to implement this discount in your storefront. Use the following to address some common questions. Q: What if the shopper or basket no longer qualifies for a choice-of-bonus-product discount? A: If the shopper no longer qualifies for the discount when Salesforce B2C Commerce applies discounts, it removes the `BonusDiscountLineItem` and associated selected products. This is similar to how other bonus products are handled and promotions in general. Q: What if there aren't enough bonus items available? Or what if the bonus products become unavailable while already in the basket or during checkout? A: When checking out, the application pipeline or script logic validates that there’s enough available-to-sell of each item in the basket to place the order. SiteGenesis shows unavailable products on the bonus selection page but prevents their selection. These products aren't filtered out by `BonusDiscountLineItem.getBonusProducts()).` SiteGenesis also shows a message to the shopper on the bonus select page and cart page if a previously selected bonus product has become unavailable. The shopper can’t check out until they remove the product. If all bonus products become unavailable during checkout, the promotion doesn't apply in the shopper's cart. See the answer to the previous question. Q: What if the number of bonus items in the basket exceeds the configured maximum number of bonus items? A: Code your application pipeline or script logic to prevent this. The API itself doesn't actually enforce that the number of bonus items selected doesn't exceed the number allowed by the discount. For example, custom code can simply call setQuantity() on a bonus ProductLineItem and increase the number of selected items beyond the maximum. If you configure your logic properly, this situation can only occur when the merchant decreases the quantity after a shopper receives the bonus discount. In SiteGenesis, the `ValidateCartForCheckout.ds` script checks for this case and prevents the shopper from placing the order if it happens. Q: What if a bonus product is no longer assigned to a bonus discount, is offline, not assigned to site, or deleted? A: B2C Commerce excludes these products from the list returned by `BonusDiscountLineItem.getBonusProducts()`; they don't appear on a bonus selection page. Q: What if a bonus product in the basket is no longer assigned to a bonus discount, is offline, not assigned to site, or deleted? A: This scenario can only occur if the merchant changes the bonus promotion or products assigned to the bonus promotion after the bonus promotion has been applied. When B2C Commerce applies discounts and a cart with an associated `ProductLineitem` has a product that is no longer available, B2C Commerce automatically removes the product. Q: What if the shopper doesn't select any bonus products or selects fewer bonus items than allowed? A: You can't force a shopper to accept free items. The storefront provides messages to the shopper on the cart page, but doesn't prevent checkout. The order ends up containing a `BonusDiscountLineItem` with no selected products. Q: What if I want to show the bonus product's original price in the cart to indicate the savings to the shopper? A: B2C Commerce sets the price of bonus product line items to $0.00 in the cart. The SiteGenesis script `CalculateCart.ds` adjusts the price of each bonus `ProductLineItem` to its price-book price. Then the script adjusts the price of its bonus `PriceAdjustment` to indicate the savings. The logic is as follows: ``` if(productLineItem.bonusProductLineItem && product != null) { var price : Money = product.priceModel.price; productLineItem.setPriceValue(price.valueOrNull); var quantity : Quantity = productLineItem.quantity; // we assume that a bonus line item has only one price adjustment var adjustments : Collection = productLineItem.priceAdjustments; if(!adjustments.isEmpty()) { var adjustment : PriceAdjustment = adjustments.iterator().next(); var adjustmentPrice : Money = price.multiply(quantity.value).multiply(-1.0); adjustment.setPriceValue(adjustmentPrice.valueOrNull); } } ``` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note This code is in an `else if` section. The code works the same for bonus product line items, regardless of whether the triggering discount was a standard bonus discount or the choice-of-bonus-product discount. Q: How does B2C Commerce handle coupons with this discount? A: When a promotion is coupon-based, B2C Commerce generates a `PriceAdjustment` and associates it with the triggering `CouponLineItem.` The API provides methods `CouponLineItem.getPriceAdjustments()` and `PriceAdjustment.getCouponLineItem()` to navigate this relationship. A coupon in the cart isn't marked as APPLIED unless it actually results in the generation of a `PriceAdjustment.` When a choice of bonus product discount is coupon-based, B2C Commerce doesn't associate the `BonusDiscountLineItem` with the `CouponLineItem` that triggered the promotion. For example, there’s no `CouponLineItem.getBonusDiscountLineItems() method`. The coupon remains unapplied until the shopper selects bonus products. When the shopper selects bonus products, B2C Commerce: 1. Generates a `PriceAdjustment` on each bonus product line item. 2. Associates these adjustments with the triggering `CouponLineItem.` 3. Marks the coupon as APPLIED. Q: How do I modify my application to remove a discount from the cart? What are the ramifications? A: The API provides a method to remove a BonusDiscountLineItem from the cart. However, even if you write custom code to remove a `BonusDiscountLineItem` from the cart, the next time a discount applies, the bonus discount is re-created. For example, a choice-of-bonus-product discount blocks another promotion from applying due to exclusivity or rank. By design, there’s no way to remove the bonus promotion to let the blocked promotion apply. # Choose Which Attributes Appear in the Category Grid View By default, products in the B2C Commerce grid view show the product's ID, name, status, and the product attributes catalog, and type. You can modify which product attributes appear on the product tiles. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Global Preferences** | **Products**. You can also select **Merchant Tools** | **site** | **Products and Catalogs** | **Products** and click the **Product Preferences** link. 2. Under Category Product Grid View, select the system and custom attributes you want to appear. Add up to two product tile attributes. Attribute values render based on their type. The grid view can't show these product attribute types: Image, HTML, Set of Numbers, Set of Strings, Set of Integers, Enum of Strings, Enum of Integers and Password. Attribute values are rendered based on their type, using the following rules. 3. Click **Apply**. # Classification vs. Primary Category When assigning a product to a category, the primary and classification categories are used to determine what information appears for the product in the B2C Commerce storefront. The classification and primary categories are also used in SEO to determine the URL and the sitemap attributes used for the product. - Classification category–In the storefront catalog, the classification category determines what attributes appear for the product. In the catalog that owns the product. You manage product in this category. - Primary category–The category where the consumer searches for the product. This category is in the storefront catalog, and sets which attributes are used to define the product. Each product has one classification category and primary category. However, products can be assigned to other categories. If the categories are in the storefront catalog, the products are available for sale in those categories. ## Breadcrumbs on the Product Detail Page The primary category you select for an item determines the breadcrumb for the search result of the product or content detail page. If no primary category is set for a product, the classification is used to determine the category links. This breadcrumb remains the same, no matter what category you view the product in. For example, if a customer searches for a man's boot, you want the breadcrumb for the result to point to a narrow category such as men’s boots. You don’t want the breadcrumbs to point to a broad category, such as shoes, or one that isn't applicable, such as women's shoes. The classification you select determines the attributes shown for the result. If no classification value is set, the attribute value is taken from the primary category. ## Product URLs The order of precedence for a product item URL is: 1\. The primary category of the product in the storefront catalog. If the product doesn't have a primary category assigned or the primary category doesn't exist in the storefront catalog, move to the next step. 2\. The classification category of the product in the storefront catalog. If the product doesn't have a classification category assigned or the classification category does not exist in the storefront catalog, move to the next step. 3\. The first category in the storefront catalog ever assigned to the product. The product must be assigned to at least one category in the storefront catalog to be available on the site. 4\. If there are no values supplied for the product's primary or classification category Site URL attribute, the default settings configured in the default URLs are used. To override the product URLs generated by the URL generator, use the PageURL attribute. ## Sitemap Attributes The order of precedence for Change Frequency and Priority values are: 1\. The page-specific attributes of the item. 2\. Then the classification category of the product. 3\. Then the primary category of the product. 4\. If no category attributes are found, the default settings configured in the catalog feed are used. # Clear Secure File Transfer Protocol (SFTP) Known Good Hosts for B2C Commerce Business Manager remembers hosts previously used for SFTP. Clear these remembered known hosts. 1. In Business Manager click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Security** and select the Misc tab. 2. Click **Clear** for the Clear SFTP Known Good Hosts File setting. # Code Replication in B2C Commerce Code replication transfers a code version from staging to a development or production instance and activates it on the target instance. - **[Code Replication Processes in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_code_replication_processes.htm&release=264.0.0&type=5)** Each code replication process transfers a code version, activates a transferred code version, transfers and activates a code version, or reverts the active code version on the most recent target instance. - **[Create a Code Replication Process in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_create_code_replication_process.htm&release=264.0.0&type=5)** Trigger a code replication process manually, schedule it to run at a specified time, or create a job to run it. - **[Undo a Code Replication Process in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_undo_code_replication_process.htm&release=264.0.0&type=5)** When you undo a code replication, the target instance reverts to the previously active code version. Only run an undo process after a code replication process of type Activation or Transfer & Activation. # Code Replication Processes in B2C Commerce Each code replication process transfers a code version, activates a transferred code version, transfers and activates a code version, or reverts the active code version on the most recent target instance. Code replication is a two-step process. First, a code version is transferred from staging to the target instance, then it’s activated on the target instance. Run both steps as a single replication process, or run them separately. Running them separately can help you identify the source of failures. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note You run all replication processes on the staging instance, even Code Activation and Undo, which only affect the target instance. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note To move code from a sandbox to staging, use [code deployment](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-code-deployment.html). Transferring a code version creates a code version on the target instance with the same name. If a code version with that name exists on the target, then B2C Commerce appends a timestamp and index number to it. For example, if you replicate a code version named "version1" and a version of that name exists on the target instance, then the new version name can be something like "version1\_05032018-1". There are four types of code replication processes: | Replication Type | Description | | --- | --- | | Code Transfer | The selected code version on the source instance is transferred to the target instance, but isn’t made active. The current active version on the target remains active. Run a Code Activation replication process to make the replicated version active on the target instance. | | Code Transfer & Activation | The selected code version on the source instance is transferred to the target instance and is immediately made the active version on the target. | | Code Activation | This process is available only after a successful Code Transfer process. Activation makes the transferred code version the active version on the target instance. If it’s already active, then nothing happens. If it no longer exists on the target instance, then the replication process fails. | | Undo | This process is available only after a successful Code Transfer & Activation or Code Activation replication process. It reverts the active code version on the target instance to the version that was active before the prior code replication process. If the version to be reverted is no longer active, then nothing happens. If it no longer exists on the target instance, or if the previously active code version no longer exists, then the replication process fails. | # Code Upload in B2C Commerce Upload custom code, also known as cartridges, to an instance using UX Studio, or with a file transfer mechanism such as WebDAV over Transport Layer Security (TLS). It’s important that you secure code uploads. Follow these best practices. - Use two-factor authentication to upload code to the staging instance. The first factor depends on whether a user or API client performs the code upload. For users, the first factor is a username and password. For API clients, the first factor is an authorization token, minted by Account Manager. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The API client must present its client-id/client-secret to receive the authorization token. The second factor is always a client certificate. - Initially upload code into an inactive version on the staging instance. # Collect B2C Commerce Shopper Agent Analytics for SFRA Storefronts Track your Storefront Reference Architecture (SFRA) storefront revenue and orders directly attributed to your B2C Shopper Agent. Compare metrics with and without Shopper Agent involvement on the Home, Sales, Products, and Promotions pages. These metrics help you estimate the agent’s return on investment. 1. In GitHub, configure the Agentforce Commerce Client. 1. Go to the [Salesforce CommerceCloud](https://github.com/SalesforceCommerceCloud/) repository and install or redeploy the latest `plugin_commerce_client` cartridge. For more information, see [Cartridges](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-cartridges.html). 2. If you customized the `plugin_commerce_client` cartridge, copy the changes you made. After you redeploy the cartridge, reapply your customizations. 2. In Business Manager, view Agent Assistance metrics in the dashboard. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Reports & Dashboards**. 2. Open the Filters panel. 3. To see agent-assisted data, under Agent Assistance, select **Shopper Agent**. To see data not related to the Shopper Agent, select **No Shopper Agent**. If you don’t select either option, the dashboard shows agent-assisted and non-agent-assisted data. 4. Click **Apply**. Data can take up to two hours to appear on the dashboard. ![View Agent Assistance metrics in the dashboard.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_shopper_agent_analytics.png) #### See Also - [Reports and Dashboards for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_reports_and_dashboards.htm&language=en_US) - [Set the Dashboard Filters](https://help.salesforce.com/s/articleView?id=cc.b2c_set_dashboard_filters.htm&language=en_US) - [Shopper Agent Setup for SFRA Storefronts](https://help.salesforce.com/s/articleView?id=cc.b2c_shopping_agent_sfra_cartridge_container.htm&language=en_US) - [_B2C Commerce Developer Guide_: Agentforce Commerce Client Overview](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/agentforce-commerce-client-overview.html) # Commerce Apps for B2C Commerce Manage checkout integrations from a single workspace. Commerce Apps combines APIs, back-end code, and UI components to integrate native Salesforce, partner, and custom solutions into the B2C Commerce platform. Install and configure native and partner apps from Business Manager with minimal custom development, or develop custom apps for any domain. Commerce Apps supports these B2C Commerce domains.
Domain Native App Partner App
Merchandising Approaching Discounts Partner Approaching Discounts
Payments Salesforce Payments Partner Payments
Shipping Basic Shipping

Commerce Delivery Service (CDS)

Partner Shipping
Tax Salesforce Flat Tax Partner Tax
## App Types - **Native Commerce apps**: Salesforce-built solutions that you install and configure in Business Manager. - **Partner Commerce apps**: Prebuilt integrations from Independent Software Vendor (ISV) partners that you install in Business Manager. - **Custom Commerce apps**: Solutions that your integration team installs and builds. Custom solutions are available for all domains. For information about developing Commerce apps, see the [Commerce Apps ISV Developer Guide](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/commerce-apps-overview.html) and the [Commerce Apps Repository](https://github.com/SalesforceCommerceCloud/commerce-apps). - **[Install a Commerce App for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_install_commerce_app.htm&release=264.0.0&type=5)** Install and configure a Commerce app in Business Manager to add domain functionality to your Storefront Next site. - **[Reinstall Commerce Apps After Upgrading to B2C Commerce Version 26.7](https://help.salesforce.com/s/articleView?id=cc.b2c_reinstall_commerce_apps.htm&release=264.0.0&type=5)** When you upgrade to version 26.7, Commerce apps installed on B2C Commerce version 26.6 no longer appear as installed on the Commerce Apps page in Business Manager, even if you didn’t remove them. - **[Customize Where Commerce App Components Appear on Your B2C Storefront](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_app_storefront_display.htm&release=264.0.0&type=5)** Choose where Commerce app components appear on your Storefront Reference Architecture (SFRA), Composable Storefront, or Storefront Next site. - **[Uninstall a Commerce App from B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_disable_commerce_app.htm&release=264.0.0&type=5)** Uninstall a Commerce app in Business Manager to remove domain functionality from your Storefront Next site. # Commerce Einstein B2C Commerce Einstein provides artificial intelligence-powered merchandising tools to deliver actionable insights and tailored customer experiences. - **[What Is B2C Commerce Einstein?](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_overview_what_is.htm&release=264.0.0&type=5)** Salesforce B2C Commerce Einstein is a suite of artificial intelligence-powered merchandising tools. - **[B2C Commerce Einstein Status Dashboard](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_self_serv_deployment.htm&release=264.0.0&type=5)** Use the Einstein Status Dashboard to schedule and run storefront catalog and order feeds, enabling the activation of B2C Commerce Einstein features on the site. - **[B2C Commerce Einstein Privacy and Consent](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_privacy_and_consent.htm&release=264.0.0&type=5)** When you set up B2C Commerce Einstein, set default privacy preferences and account for shopper consent. - **[B2C Commerce Einstein Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_site_recommendations.htm&release=264.0.0&type=5)** Use Einstein Product Recommendations to create and manage recommenders and assign strategies that predict the most relevant products to promote to individual shoppers. - **[B2C Commerce Einstein Recommendation Validator](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_recommendation_validator.htm&release=264.0.0&type=5)** The Einstein Recommendation Validator is a Chrome extension that validates and debugs B2C Commerce Einstein recommendations and sorting rules in your marketplace. Use this extension to verify Einstein site activity tracking and recommendations. - **[Review B2C Commerce Einstein Recommendations Reporting](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_recommendations_reporting.htm&release=264.0.0&type=5)** Using the Einstein dashboard in the Reports and Dashboards app, review the performance of Einstein recommendations. - **[B2C Commerce Einstein Insights](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_commerce_insights.htm&release=264.0.0&type=5)** B2C Commerce Einstein Commerce Insights reports capture shopper, order, and product data and display products that are most commonly purchased together. - **[B2C Commerce Einstein Search Dictionaries](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_search_dict.htm&release=264.0.0&type=5)** When enabled, Einstein Search Dictionaries consumes all site searches and search-related settings, and surfaces terms that shoppers search for but aren’t in a dictionary. - **[B2C Commerce Einstein Predictive Sort](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_predictive_sort.htm&release=264.0.0&type=5)** Predictive Sort combines the existing B2C Commerce B2C Commerce Sorting Rule approach with the power of B2C Commerce Einstein. - **[B2C Commerce Einstein Search Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_search_recommendations.htm&release=264.0.0&type=5)** B2C Commerce Einstein can improve searches with type-ahead guidance. This feature provides AI-driven personalized search recommendations to shoppers in real time. - **[Additional B2C Commerce Einstein Resources](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_additional_resources.htm&release=264.0.0&type=5)** We've prepared some resources to help you optimize your B2C Commerce Einstein experience. # Commerce Script Injection in B2C Commerce Server script injection, or remote code execution, is a class of attack where maliciously crafted input is run in a privileged code execution context. This class of attack enables an attacker to control the code executed on the server. Script injection is possible when a script interprets part or all of an unsafe or untrusted data input as code, or a snippet of code, and runs it. The most common error that results in code injection vulnerability is to call the global method `eval( string )` with an argument tainted with untrusted data. The `eval` method executes the passed string as a script expression. This method is deprecated. Avoid using it to prevent security risks. # Commerce Tableau Connector The Commerce Tableau Connector facilitates access to your B2C Commerce base metrics in Tableau. Use Tableau to generate customized analytic views of your data. - **[B2C Commerce Data in Tableau](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_cloud_data_in_tableau.htm&release=264.0.0&type=5)** Use your B2C Commerce data in Tableau to create dashboards and data views tailored to your specific business needs. The Salesforce B2C Commerce Cloud Connector exports your B2C Commerce analytics data to your Tableau instance. You can use Tableau's data visualization features to analyze your data without code. - **[Aggregations Made with Fully Additive and Semi-Additive Measures](https://help.salesforce.com/s/articleView?id=cc.b2c_aggregations_with_fully_semi_measures.htm&release=264.0.0&type=5)** This topic applies to B2C Commerce and Tableau. Most B2C Commerce measures are fully additive. To create reliable data views in Tableau, use both fully additive and semi-additive measures. - **[Fully Additive and Semi-Additive Meausres](https://help.salesforce.com/s/articleView?id=cc.b2c_fully_additive_semi_additive_measures.htm&release=264.0.0&type=5)** The B2C Commerce Data subject area tables list for each subject matter area the fully additive and semi-additive measures included in the subject area set. Dimensions don't work with a semi-additive measure appear as Incompatible. - **[B2C Commerce Data Subject Areas](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_cloud_data_subject_areas.htm&release=264.0.0&type=5)** The Tableau connector provides access to data from the B2C Commerce subject areas. You can select a data subject area data visualization in Tableau. The subject areas are the same analytics data used to generate B2C Commerce Reports & Dashboards. - **[Connect to Tableau](https://help.salesforce.com/s/articleView?id=cc.b2c_connect_to_tableau.htm&release=264.0.0&type=5)** Connecting your B2C Commerce data to Tableau requires an API client ID. Use the Web Data Connector option in Tableau, and use the client ID to launch the connector and export your data to Tableau. # Common Error Messages Error messages indicate that something is blocking the successful deployment or automation of B2C Commerce Einstein. This table shows common errors that occur when deploying a site to B2C Commerce Einstein.
Error Message Potential Problem Potential Resolution
Error deploying feed: Catalog.
  • No catalog found (typically occurs only during status check and not during deployment).
  • Missing images (or high percentage [25%+] of missing images).
  • Primary category path is missing.
  • SKUs are missing from product catalog but variation groups are used
  • Validate the catalog feed schedule.
  • To review the specific problem, click App Launcher App Launcher, and then go to Business Manager | App Launcher | Administration | Operations | Job History (Deprecated) | Filter by Name: CQuotient Feed Schedule. The error message can offer additional detail. For additional guidance beyond the error message, submit a Support ticket including the specific error message.
  • Validate the following:
    • Catalog is present
    • The percentage of missing images in the catalog is High (greater than 75% of products)
    • If your images don't live in Business Manager, submit a Support ticket with additional detail on how your images paths are constructed to get customization for your site.
    • Primary category path is present (where applicable)
    • If your catalog uses a variation groups product type, make sure to check the variation group checkbox when configuring the site within the Einstein Status Dashboard.
Error deploying feed: Orders. No order feed found.
  • Validate the order feed schedule
  • Validate the order feed
  • To review the specific problem, click App Launcher App Launcher, and then go to Business Manager | App Launcher | Administration | Operations | Job History (Deprecated) | Filter by Name: CQuotient Order Feed Schedule. The error message can offer additional detail. For additional guidance beyond the error message, submit a Support ticket including the specific error message.
This table shows common errors when you deploy a site to B2C Commerce Einstein.
Error Message Potential Problem Potential Resolution
No recommendations made. The servedReco activity isn’t implemented correctly on your site. Make sure that you implement the servedReco activity correctly on your site.
Unusual ratio of recommendations to product views. There's an unusual ratio of recommendations to product views. Make sure that you implement activities correctly on the customer site on all pages.
Einstein is unable to view product activities from your site. The viewProduct activity isn’t implemented correctly on the customer site.

Make sure that you implement the viewProduct activity correctly on the customer site.

To learn more about development solutions to missing viewProduct, see Common Recommendation Validator Errors.

Einstein is unable to view recommendation events from your site. The viewReco activity isn’t implemented correctly on the customer site.

Make sure that you implement the viewReco activity correctly on the customer site.

To learn more about development solutions to missing viewReco, see Common Recommendation Validator Errors.

Unknown Error. Please contact support. N/A Contact Salesforce Support.
No order feed has been scheduled. This is a requirement for Einstein to run successfully. Please schedule your order feed. Automation can’t run without an order feed scheduled. Schedule an order feed to run.
# Common HTTP Headers for B2C Commerce Events Every B2C Commerce event includes the same set of standard `x-sf-cc-*` headers, so your connector can identify and correlate events consistently regardless of the event type. | Header | Description | Example | | --- | --- | --- | | `x-sf-cc-timestamp` | ISO-8601 timestamp when event was generated | `2026-03-11T13:31:13.755934395Z` | | `x-sf-cc-instance-id` | Instance identifier (lowercase) | `zzzz_prd` | | `x-sf-cc-site-id` | Site identifier (empty for org-level operations) | `RefArch` or `""` | | `x-sf-cc-correlation-id` | Correlation ID for tracking across systems | `550e8400-e29b-41d4-a716-446655440000` | | `x-sf-cc-event-id` | Event type identifier (matches the `eventType` in the payload) | `sf.cc.replication.completed` | ## Notes - All timestamps use ISO-8601 format with timezone indicator. - Instance IDs are normalized to lowercase. - Site ID is empty for organization-level operations (such as process-level replication, which runs at the organization level). # Common Phrases A common phrase is a search term with 2-5 words that are next to each other and in a specific order. Use common phrases to decrease noise in your search results and give B2C Commerce customers more targeted results for multi-word search queries. For example, customers who search for _tables_ shouldn't get _table lamps_, because _table_ is a descriptor and _lamp_ is the desired result. On the other hand, if a customer is searching for _lamps_, they would see all types of lamps, including table lamps. Common phrases can be staged with other search features. Common phrases can be imported using the `search2.xsd` schema. Common phrases can be exported and imported via Site Import and Export. ## Search Modes: Exact Match and Last Word You can configure the common phrases feature to use different matching options: - Exact Match: If you search on the exact phrase, only products that include the exact phrase appear. The exact phrase is all the words in the phrase in the same order and next to one another. Search queries that include terms from the common phrase don't return any of the products that contain the common phrase. For example, if _table lamps_ is a common phrase with exact match, then searching on _table lamp_ returns only table lamps. Searching on _table_, _lamp_, or _lamp table_ doesn't return table lamps. This is because during indexing, table lamp is indexed as a single phrase and not indexed for the individual terms. - Long-tail Search Phrases with Duplicate Search Terms: If you search on the exact phrase with duplicate terms, the suggestion processor accepts the duplicate terms and returns highly relevant search results. Accepting duplicate search terms rather than autocorrecting duplicate terms to slightly different versions, improves search results. Autocorrecting terms in the search phrase can result in irrelevant search results. - Last Word Match: if you search on the last word in the phrase or the exact phrase, products including the exact phrase appear. For example, if _table lamps_ is a common phrase with last word match, then searching on _table lamp_ returns only table lamps. However, unlike exact match, searching on _lamps_ returns all types of lamps, including table lamps. This is because during indexing, table lamp is indexed as a single phrase and as the last word in the phrase, but not any additional terms in the phrase. ## Exact Match Example For exact match, the customer must search for the common phrase exactly as it is configured, so that the words in the phrase are adjacent and in the same order. Normally, exact match is used for phrases with individual terms that produce items unrelated to the phrase. Customers are not searching for individual terms with the phrase, they are only searching for product described by the full phrase. In the following examples, exact match is a good choice for the _bed in a bag_ phrase, because a customer is likely searching for the exact phrase.
Match Configured Common Phrase Entered Search Phrase Returns Products Does Not Return Products
Exact bed in a bag bed in a bag
  • bed in a bag​
  • Beds​
  • Bags (tote bags, handbags)
## Last Word Match Example For last word match, the customer must search for the whole common phrase or the last word in the phrase for products including the common phrase to be returned. Normally, last word matching is used when the last word in the phrase is the most significant and you want to include the results for the exact phrase whenever a customer searches for the last term. In the following examples, last word match is a good choice for the _dress shirt_ phrase, because a customer searching for dresses doesn't want to see dress shirts. If the customer is searching for shirts, you want to return shirts, including dress shirts.
Match Configured Common Phrase Entered Search Phrase Returns Products Does Not Return Products
Last word dress shirt

dress

(dress AND NOT dress shirt)

  • Women's dresses
  • Casual Dresses
  • Dress shirts
Last word dress shirt

dress shirt

(dress shirt)

  • Dress shirt​
  • Women's dresses
  • Casual Dresses
Last word dress shirt

shirts

(shirts AND dress shirt)

  • Dress shirt​
  • T-shirts
  • Casual shirts
  • Short-sleeve shirt
 
# Common Product Feed Setup Several setup and reference tasks apply to both the OpenAI and Google catalog feed integrations for B2C Commerce. Complete the common steps that apply to your channel, and follow the channel-specific links where the two feeds differ. The OpenAI and Google catalog feed integrations share the same underlying setup: you meet the [site requirements](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_prerequisites.htm&release=264.0.0&type=5 "Before configuring a product feed integration, ensure your B2C Commerce site meets the requirements. The channel partner supplies the SFTP credentials that you enter in Business Manager to connect."), connect to the channel partner over SFTP, map and preview your product data, and turn on the daily feed sync. These tasks cover the steps that are the same for both channels. Where a step differs by channel, such as the feature switches you turn on or the field that holds the product URL, the steps call out the difference and link to the channel-specific task. For the steps that are unique to each channel, such as the overview, the Einstein feed configuration, General Settings, field mapping, and turning on the feed, see [Catalog Feed Integration with OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_overview.htm&release=264.0.0&type=5 "Syndicate your B2C Commerce product catalog to OpenAI's ChatGPT for product discovery, enabling shoppers to find and browse your products through conversational AI.") or [Catalog Feed Integration with Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_overview.htm&release=264.0.0&type=5 "Syndicate your B2C Commerce product catalog to Google for product discovery, enabling shoppers to find your products in Google Shopping ads and free listings."). Complete these common setup and reference tasks: - **[Prerequisites for Product Feed Integration](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_prerequisites.htm&release=264.0.0&type=5)** Before configuring a product feed integration, ensure your B2C Commerce site meets the requirements. The channel partner supplies the SFTP credentials that you enter in Business Manager to connect. - **[Configure Catalog and Order Feeds for Commerce Cloud Einstein Deployment](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_configure_einstein.htm&release=264.0.0&type=5)** Before you can use the OpenAI or Google catalog feed integration, configure Einstein catalog feeds. If your B2C Commerce site already uses Einstein features, you can skip this task. - **[Configure URL Patterns for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_pwa_urls.htm&release=264.0.0&type=5)** If you use PWA Kit or a headless B2C Commerce storefront, override the product URL field in Field Mapping with a URL pattern so the product feed contains the correct product detail page URL for each product. - **[Connect to the Channel Partner](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_connect.htm&release=264.0.0&type=5)** Configure the SFTP connection between B2C Commerce and your channel partner (OpenAI or Google) to allow product feed uploads. - **[Use Custom Attributes in Product Feed Mappings](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_custom_attributes.htm&release=264.0.0&type=5)** Map custom product attributes to product feed fields when the default B2C Commerce standard attributes don't meet your needs. - **[Product Filter Rules for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_product_filter.htm&release=264.0.0&type=5)** Product filter rules control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. Configure include and exclude rules to broaden or narrow the default ruleset based on how your catalog is organized. - **[Configure Product Filter Rules for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_configure_product_filter.htm&release=264.0.0&type=5)** Add include and exclude rules in the Product Filter rule builder to control which products from your B2C Commerce catalog sync to your product feed for OpenAI or Google. - **[About the Product Feed Preview](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_preview_about.htm&release=264.0.0&type=5)** The Product Feed Preview shows you the resolved feed data, including missing required fields, before you turn on the daily feed sync. Use it to verify your field mappings, identify B2C Commerce products with errors, and download a sample CSV. - **[Preview the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_preview.htm&release=264.0.0&type=5)** Open the Product Feed Preview to verify your field mappings, identify B2C Commerce products with missing required fields, and download a sample CSV before turning on the daily feed sync. - **[Known Issues for the Product Feed](https://help.salesforce.com/s/articleView?id=cc.b2c_product_feed_known_issues.htm&release=264.0.0&type=5)** Known issues and limitations for the OpenAI and Google catalog feed integrations for B2C Commerce. #### See Also - [Catalog Feed Integration with OpenAI](https://help.salesforce.com/s/articleView?id=cc.b2c_openai_feed_overview.htm&release=264.0.0&type=5 "Syndicate your B2C Commerce product catalog to OpenAI's ChatGPT for product discovery, enabling shoppers to find and browse your products through conversational AI.") - [Catalog Feed Integration with Google](https://help.salesforce.com/s/articleView?id=cc.b2c_google_feed_overview.htm&release=264.0.0&type=5 "Syndicate your B2C Commerce product catalog to Google for product discovery, enabling shoppers to find your products in Google Shopping ads and free listings.") # Common Recommendation Validator Errors in Commerce Einstein Here are some of the common errors that sometimes occur, and how to fix them, when using the Recommendation Validator in B2C Commerce Einstein.
Error Type Error Repair
Data Error Availability allocation is defined as 0 on a base product in Business Manager.
  • Remove inventory definitions when possible. This action results in an allocation of N/A.
  • If base product ID allocation is required, define a valid amount of allocation (for example, 100).
Data doesn’t appear for the Einstein Dashboard in the Reports and Dashboards tool.

Obtaining data for the Einstein Dashboard depends on viewProduct and viewReco events firing properly. If data doesn’t appear in the Einstein Dashboard, make sure that you’re using the correct isobject statement.

  • viewProduct event—Check the global product detail page template for the <isobject object="${product}" view="detail"> statement.
  • viewReco—Check content slots for the <isobject object="${product}" view="recommendation"> statement.
Storefront Error
viewProduct

isn’t firing.

Make sure to use <isobject object="${product}" view="detail"> on global product detail page templates.
viewReco

isn’t firing.

Make sure that you use <isobject object="${product}" view="recommendation"> in your content slots

For Page Designer implementations, Storefront Reference Architecture (SFRA) versions 6.0 and higher include the code necessary to properly set object context.

clickReco

isn’t firing.

Use the Validator to check for clickReco. If it's missing, check the page with the recommendations that you clicked for viewReco.

If viewReco is there, make sure that its product ID matches the product ID in the viewProduct activity on the page after you click. If the IDs don't match, make sure that the isobject tag is configured correctly.

The incorrect price is displaying because of base product price definitions. Fix the template API to call on variation price definitions instead of the base product ID.
viewCategory

or

viewSearch

isn’t firing.

If you use an isobject tag when rendering each product tile, the tracking of these events happens automatically. If the events don't fire, check the product tile code.
# Common SEO Pitfalls in B2C Commerce In addition to actively optimizing your site for search engines, you also want to avoid issues that commonly arise while developing and managing a website. Here are some mistakes that are often made: - Page content, meta-tags, and product attributes aren’t optimized for SEO; they don't contain enough or the right keywords. - Aspects of site design ("spider traps") prevent robots from fully indexing the site; for example: - Pages first require user input to be accessed. - Pages have excessive dynamic site features. - No site map was submitted or robots.txt file is in place to direct robots to the right pages on a site. - Important content is "trapped" in images or rich media files (robots can't read information found in these files). - Search engine indices contain outdated URLs as a result of site redesigns. - Search engine indices contain duplicate content (for example, because of site redesigns, multiple domains or merchandising practices). - Page content and keywords aren’t regularly maintained to make sure optimal search engine rankings. - There’s no strategy in place to optimize external site links. # Complete Prerequisites for Product and Site FAQ Data Libraries To allow the B2C Commerce Shopper Agent to use Agentforce Data Libraries (ADLs), first set up the libraries with your source content. The Shopper Agent can use data libraries with uploaded files and Salesforce Knowledge articles. 1. To use Salesforce Knowledge for your ADL. 1. Set Up Salesforce Knowledge. See [Create a Knowledge Base with Salesforce Knowledge](https://help.salesforce.com/s/articleView?id=service.knowledge_whatis.htm&language=en_US). 2. Establish a connection between Agentforce and Salesforce Knowledge for use as a data source. 2. [Create a data library](https://help.salesforce.com/s/articleView?id=ai.data_library_create.htm&language=en_US). 3. Select the data source for your library. For files, see [Use Uploaded Files](https://help.salesforce.com/s/articleView?id=ai.data_library_file_upload.htm&language=en_US). When you upload files, in Advanced Settings, accept Basic Content. For knowledge articles, see [Use Salesforce Knowledge](https://help.salesforce.com/s/articleView?id=ai.data_library_select_fields.htm&language=en_US). 4. Note the API name of each library. You specify the API name in the Shopper Agent FAQ subagent instructions. # Complete Visual Merchandising Tasks Declaratively To complete B2C Commerce Visual Merchandising tasks, see the following topics. - [Boost and Bury Rules for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_boost_and_bury_rules.htm&language=en_US). - [Create Boost and Bury Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_create_boost_and_bury_rules.htm&language=en_US). - [Product Appearance on Product List and Search Pages](https://help.salesforce.com/s/articleView?id=cc.b2c_vm_control_product_displays.htm&language=en_US). #### See Also - [Complete Visual Merchandising Tasks with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_visual_merchandising_merchant_agent_tasks.htm&language=en_US) # Complete Visual Merchandising Tasks with the B2C Merchant Agent Create boost or bury rules, sort categories, and add products to categories using natural language prompts. Describe the desired outcome and the agent creates the rule. The Merchant Agent is available from the Visual Merchandising workspace. - **[Create Boost and Bury Rules with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_create_boost_bury_merchant_agent.htm&release=264.0.0&type=5)** Use the Merchant Agent to create boost and bury rules with natural language prompts. Agentic rule creation is available only for categories. Create search term boost and bury rules manually. - **[Create a Sort Rule with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_create_sort_rule_merchant_agent.htm&release=264.0.0&type=5)** Use the Merchant Agent to create sorting rules based on sequential data attributes such as price or conversion rate to control how search results are displayed to customers. - **[Add Products to a Category with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_add_products_category_merchant_agent.htm&release=264.0.0&type=5)** Use the Merchant Agent to add one or more new products to a category, making product categorization more efficient. #### See Also - [Create Boost and Bury Rules with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_create_boost_bury_merchant_agent.htm&language=en_US) - [Create a Sort Rule with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_create_sort_rule_merchant_agent.htm&language=en_US) - [Add Products to a Category with the B2C Merchant Agent](https://help.salesforce.com/s/articleView?id=cc.b2c_add_products_category_merchant_agent.htm&language=en_US) - [Complete Visual Merchandising Tasks Declaritively](https://help.salesforce.com/s/articleView?id=cc.b2c_visual_merchandising_declarative_tasks.htm&language=en_US) # Compound Words A compound word is a query term that a customer can enter as a single term or a phrase. If a compound word appears in a search phrase as a single term, it's automatically split. B2C Commerce treats each part of the split word as a separate search term. The order in which compound words are processed is designed to let the most specific rule override less specific rules. Compound words without wildcards are processed first, from the rules with the smallest number of words to the largest. After this compound words with wildcards are processed, from the smallest to largest number of words in the rule. Multi-word search terms can be configured as either compound words or common phrases. For example, "t-shirt" is configured as a compound word and "x-mas" is often configured as a common phrase. Compound Words aren’t necessarily hyphenated when the customer searches for them. Hyphens are only used when configuring the term so that B2C Commerce can recognize them. The difference between compound words and common phrases is how they’re processed. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Unlike synonyms, enter compound words exactly. For example, enter singular and plural compound words separately. When you create a compound word, rebuild the Synonym index for it to appear in the storefront. You can also configure phrases using quotes, single compound words, or multiple compound words using wildcards. ## Simple Compound Words A simple compound word must include a hyphen (-) and there must be more than one character on each side of the hyphen. The following are valid compound word definitions: ``` work-shirt , ice-cream ``` The following definitions result in only the term after the hyphen being searched: ``` t-shirt , x-mas, 1-türig ``` ## Using Wildcards A compound word definition can only contain one wildcard. The wildcard must have at least three other characters with it: a hyphen and two characters. The following are valid compound word definitions: ``` *-kleid , herren-* , herren-*-hose ``` The following definitions are invalid: ``` * , *-* , *-herren-* herren-*-* ``` ## Using Phrases Compound word phrases are enclosed in quotes and require that both terms be found in a searchable attribute. Wildcards aren’t allowed in search phrases. Phrases require a hyphen to be valid. For example, if you configure `"work-shirt"` then both `work` and `shirt` must appear in a searchable attribute for the product to be returned as a search result. `The following are valid compound word definitions:` ``` "cheese-cake" , "digital-camera" ``` The following definitions are invalid: ``` "ice cream" , "*-shirt" ``` ## Using Synonyms with Compound Words When a compound word is split into its component parts, any synonyms configured for each individual term apply. For example, if the following is true: - herrenhose is a German compound word. - maennerhose isn't a German compound word - herren and maenner are synonyms - \*-hose is specified as a compound word rule Then any of the following user searches: - Maennerhose - Herrenhose - Hose Herren - Maenner-Hose Return the following products: - "Hose fuer Maenner" - "Hose fuer Herren" - "Herrenhose" - "Maennerhose" # Configuration for Administrators B2C Commerce Log Center administrators can access the Config tab to set log levels and log volumes. The Configuration options include: - **Log Level:** Launches the Centralized Log Level Management page. The page provides access to the dynamic log configuration. Add log rules that set different log levels. All log level adjustments are time restricted and expire according to their setting - Log center pulls the rules every 30 seconds. - To add a rule click the plus icon and configure a new rule. When you modify a rule, the rule is listed as the last Modified Rule. - **Log Volume:** Lists the log volume configuration for each realm. When the log volume for a realm is met, log messages aren’t sent to Log Center for that realm. Realms that aren’t assigned log rules don’t receive messages in Log Center. The maximum daily message volume for PIGs is based on a tiered approach. To inquire about increasing PIG default volume, contact your Salesforce Account rep or Salesforce Support. For SIGs, the log volume is also based on a tiered approach with a default of 1 million per day and a maximum limit of 8 million per day. To modify the default message volume setting, click the edit icon for a realm listing. The default limit for PIGs is based on your realm’s tier setting. - **Loaner Realm Delete:** Use this page to delete the logs from a loaner realm or test realm. Deleting logs isn’t reversible. Salesforce recommends that you only delete loaner logs when transferring a loaner realm to another customer. To delete a loaner realm, requires the Log Center Support role. # Configure 301 HTTP Redirects for Legacy URLs in B2C Commerce 301 Redirects are used for permanent URL redirection, sending users to a different URL than the one they originally typed into their browser or selected from search engine results. The 301 redirect is considered a best practice for upgrading users from HTTP to HTTPS. It's SEO best practice to have a single preferred domain name that other URLs point to. For example, if a customer enters company.com directly into their browser, they can be taken to `www.company.com` via a permanent 301 redirect. The redirect is important because it helps make sure that you obtain an aggregated page rank and authority scores for all versions of your site URLs, thus boosting your organic search engine rankings. 1. Make sure that all B2C Commerce-generated URLs in the storefront use a single hostname, such as `www.company.com`. To achieve this, set the site's HTTP Hostname and HTTPS Hostname appropriately in the [Hostname Alias File](https://help.salesforce.com/s/articleView?id=cc.b2c_hostname_aliases.htm&release=264.0.0&type=5 "A hostname alias defines alternative names for an existing website URL. You must set up and register the DNS and domain names to use hostnames aliases in a B2C store. A hostname alias can map a human-readable hostname onto a more technical hostname. A hostname alias can also redirect one external, human-readable domain to another, such as www.mystore.com to www.yourstore.com."). Do this right at go-live; it can't be done earlier and shouldn't be done later. 2. Redirect from `company.com` to `www.company.com`. 1. Create a custom pipeline to redirect URLs (one named, for example, `RedirectURL-Domain` or `RedirectSiteURL`). The SiteGenesis application includes a sample redirect pipeline named `RedirectURL`. 2. Specify a static mapping between the legacy URL and the custom pipeline. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **SEO & Discoverability** | **Static Mappings**. The static mapping has this format:  ` [i] p,[], [], , [], [, ]*` 3. Default Page URL for Content Pages: If nothing is specified the default is `${pageURL||name}.` This uses the Page URL and content Name attributes to construct the default URL. To create a custom URL, supported content attributes are pageURL, pageTitle, ID and name. After Release 2.6.4, you no longer need to specify the hostname as a parameter to the pipeline. The pipeline can now read HTTP Hostname from the site configuration with fallback to the instance's hostname. 4. To make sure the 301 redirect is in place, specify that the attribute `permanent` is set to true within the Internet Store Markup Language (ISML) tag (`isredirect`) used in the redirect pipeline template: ``. In the SiteGenesis application, this code is included in the `redirectpermanent` template. 3. Define your external search engine settings to support the redirect. For example, in Google Webmaster Tools, set the preferred domain to www.company.com. To make sure that Google sees you as the owner of both domains, follow one of their ownership verification methods. # Configure a B2C Commerce A/B Test to Compare Product Templates Determine whether the location of product reviews impacts revenue. Product reviews are important and you want the reviews to have a more prominent placement on product detail pages. You ask a developer for help. The developer completes these steps. 1. The developer copies the product detail template `pt_productdetails.isml` from Studio. Then, the developer modifies the copy to include the new or the old layout by using the scripting API. The scripting API helps determine the active test group for the customer (`ABTestMgr.isParticipant`). The new layout differs significantly from the original layout, but the developer only wants to test it on a few selected products. - Changes the product detail page pipeline (`Product-Show`). The pipeline calls `product.isml`, which calls `pt_productdetails.isml`. This pipeline dynamically selects the copied product detail page template for products of brand `MyBrand` and the old one. - Uses remote includes for dynamic inclusion of the new or old template for each customer. 2. Clicks App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), selects **Merchant Tools**, and then goes to **Online Marketing** | **A/B Tests**, and configures a test called `Product-reviews`. - Enable the test and enter an optional description that is for the developer's own usage. - Include an email address for notifications when there are statistically significant results for the key metric. - Select **Adds to Baskets** as the key metric, because of expecting the product review placement to result in more adds to the basket. - Set the test to **Never** expire for the life of the test. (A slot on the product detail page always appears regardless of the test group that the customer is assigned to. - Set the test to run for 1 week. - Make the test available to the `Everyone` group, so any customer that views the product detail page can be a participant. - Create two segments, each allocated at 50%, but with no test segment experiences. - Click **New Test Segment** and set the segment to enable **Custom Template Scripting**. The developer stages the test to production in concert with the cartridge changes containing the templates and pipeline. After 5 days, the developer checks the results. The old template seems to result in more adds to baskets than the new template, not the results expected. The developer extends the test on production for an extra week, and after five more days concludes that the old template results in more `Add to Baskets.` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Salesforce B2C Commerce doesn't compute statistical significance when the control group outperforms the test segments. On production, the developer changes the end date of the test to the previous day. The changed templates and pipeline remain in place. However, all traffic now sees the old template because customers are no longer considered participants in the test group that shows the new template. The developer also coordinates a rollback of the template and pipeline changes to cache the old template as it was before. When the merchant reviews the results, the more prominent location of the product reviews pushed the Add to Cart button too far down the page. The merchant asks the developer to create a test that accounts for the locations of both of these elements. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Your customized implementation can use different templates from this example. # Configure a B2C Commerce Einstein Recommender for Product Recommendations When you create a product recommender, you specify the type of recommendation and the strategy you want to use. You can also add rules to fine-tune the recommendation. Before configuring a recommender for product recommendations, make sure that an administrator has configured catalog and order feeds for your site. These feeds provide Einstein Configurator with necessary information for configuring the recommenders. Also make sure that the administrator sets up an account for you to use the Einstein Configurator tool. To configure a recommender: 1. In a web browser, access Einstein Configurator. 2. Log in to Einstein Configurator using the credentials provided to you by your administrator. 3. From the **Select Site...** list, select your site. 4. Click the **Site Recommendations** tab. 5. Click **New Recommender** The Create New Recommender dialog opens. 6. In the Choose a Recommender Type section, select one of the recommender types. 7. In the Recommender Name field, enter the name of the recommender. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Make the recommender name unique for the site. The name can contain letters, the hyphen (-) character, and the underscore (\_) character. The length of the name must not exceed 100 characters. You can't change the recommender name after you save it. The recommender name appears in other locations, for example, the Content Slot recommender and in Einstein Dashboard reporting. Best practice is to include the name of the page where you plan to apply the recommender as part of the recommender name. 8. Click **OK**. The Create New Recommender dialog closes, and the Recommender Configuration page opens. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The newly created recommender isn't saved at this point. It's saved later in this procedure when you click **Save**. 9. (Optional) In the **General** tab: 1. Select an upper limit on the number of recommendations in the _Max # of Recommendations_ field. 2. Enter a description for the recommender. This description is visible within the **Business Manager** | **Content Slot** | **Recommender** selection. 3. Enable (check) the **Don't recommend products purchased** option and select a value from the dropdown menu. Use this option to define how many days (7, 30, 60, or 90) a recommender waits before recommending previously purchased products. The default setting is 30 days. 4. Select up to two products that you want to pin to the recommender. Pinned products always appear as top results for the recommender. 5. Specify an entity type of either **base product** or **Variation Group**. You use the **Entity Type** setting when the product catalog contains variation groups. Use the setting to service recommendations at the base product or variation group level. 10. (Optional) Click the **Strategies** tab. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note This tab isn't available for all recommenders. The Strategies tab shows a table where each row is a single strategy. The highest priority strategy appears in the top row, the second highest strategy, if any, appears in the second row, and so on. Reorder strategies using the up and down arrow icons in each strategy row. 11. (Optional) To create another strategy, click **Add Strategy**. A strategy row appears at the bottom of the table. Then select a new strategy: choose a value in the Strategy Name field and click **Save**. To delete a strategy, click its row in the table and then click the trashcan (delete) icon. 12. (Optional) Click the **Rules** tab. Recommender rules enable control over what products appear to shoppers. 13. (Optional) Click **Add Rule**. A new row appears in the rules table where you can create a rule by selecting values and clicking **Save**. 14. To save the configuration, click **Save** in the upper right-hand corner of the page. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you click **Cancel**, or if you leave the configuration page entirely, your changes are discarded. While you’re configuring strategies and rules, you can preview them to see what recommendations Einstein passes to the storefront at run time. # Configure a Host Header Override Rule for an eCDN Zone To support a single hostname across multiple realms, create a Host Header Override Rule for B2C Commerce sites that use an external content delivery network (CDN). This rule replaces unique hostnames with a common hostname to maintain the single-hostname setup. If you reuse a hostname, traffic can be unintentionally served from a different realm. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Host Header Override isn't available on SCAPI zones. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). Use host header override rules when your origin expects a different host value than the shopper-facing hostname. This setup is common for customers using stacked CDNs or custom origin-routing patterns. Proxy zones don’t support the same subdomain/hostname across zones, so a unique hostname is required in each zone with the appropriate custom hostname and certificate. Before you create a host header override rule, make sure that you have your own stacked CDN configuration. CDN stacking is a prerequisite for directing traffic to appropriate eCDN zones based on locales or regions. The Host Header Override Rules tab is part of the Configure Zone screen; for the full set of zone security controls, see [eCDN Zone Security Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_ecdn_security_rules.htm&release=264.0.0&type=5 "Use the Security Rules tab on the Configure Zone screen to protect a B2C Commerce embedded CDN (eCDN) zone with web application firewall (WAF) managed rulesets, realm and zone security rules, custom firewall rules, and rate limiting. Learn what each control does, which zone types are eligible, and how traffic from trusted sources bypasses security checks."). Create host header rules for each locale. To create a host header override rule: 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the zone you want to configure, and select **Configure Zone** from the dropdown menu. ![Configure Zone dropdown menu for a Proxy Zone in Business Manager](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_configure_zone.png) 3. Select the Host Header Override Rules tab, and then select **New Rule**. To switch to a different zone from this tab, select another name from the Zone dropdown menu. 4. Enter the Host Header Override Rule details: 1. Enter the rule expression using the visual dropdown interface to select a field, operator, and value. This expression specifies the host header of incoming requests where the traffic goes. For example, `Hostname equals shop.alpine.net`. 2. (Optional) If you want the rule to be active when you save it, select **Enable Host Header Override Rule Upon Saving**. If you’re not ready to activate the rule yet, create it first. When you’re ready, return to the Host Header Override Rules tab and enable your rule from the list. 3. The Rule Name is automatically filled based on the rule details. 4. Click **Save**. Upon saving, a check makes sure that the rule’s host header ends with the same hostname as the current zone. 5. Modify your external CDN to route traffic to the proxy zones for each locale. # Configure a Hostname Alias A hostname alias is required to create short, meaningful URLs for external search engines to index. Assign at least one hostname alias that is the current hostname on which the B2C Commerce instance is running. You can also create a simpler alias that reflects your store or brand name. Putting a simple Page URL in the alias list, such as "www.mystore.com", enables users to get to the storefront without typing in the full Salesforce B2C Commerce URL, such as: `http://www.mystore.com/on/demandware.store/Sites-MYS-Site/default`. Ideally, the long URL is only visible to search engines if someone posts a link containing the long URL. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important If you don't assign an alias to your site, enabling search-friendly URLs causes the storefront to show a 404 error for all URLs besides the Welcome page. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Site** | **SEO & Discoverability** | **Aliases**. 2. On the Aliases page, create a set of hostname alias rules. 3. To test that your rules are valid JSON, we recommend that you test them against a debugging tool. Remember to remove any comments from your mapping files and use colons (:) instead of equal signs (=) to separate property and value. Site URL aliases files are instance-specific, so site URL aliases are individually managed for each instance (Development, Staging, and Production). Because each instance has its own aliases file, these files are not included in data replication. This makes sure that a data replication of `Site URL Management` doesn't overwrite URL alias settings on Production with the Staging configuration. Individually edit the site URL aliases on each instance (Development, Staging, Production) to have the same aliases on all instances. 4. When you are satisfied that your alias file is valid, copy it into the editor and click **Apply**. # Configure a Page Shield Policy for an eCDN Zone Set up a Page Shield policy to make sure only trusted scripts run on sensitive store pages like cart and checkout. A Page Shield policy helps detect client-side script changes and supply chain risks, and helps your B2C Commerce store comply with the Payment Card Industry Data Security Standard (PCI DSS) 4.0.1 client-side security requirements. You can configure up to 5 Page Shield policies per zone. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Page Shield isn't available on SCAPI zones. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Page Shield policies help detect client-side script changes and potential supply chain risks on storefront pages. These controls are frequently used to support PCI DSS 4.0.1 client-side security monitoring requirements. The Page Shield Policies tab is part of the Configure Zone screen; for the full set of zone security controls, see [eCDN Zone Security Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_ecdn_security_rules.htm&release=264.0.0&type=5 "Use the Security Rules tab on the Configure Zone screen to protect a B2C Commerce embedded CDN (eCDN) zone with web application firewall (WAF) managed rulesets, realm and zone security rules, custom firewall rules, and rate limiting. Learn what each control does, which zone types are eligible, and how traffic from trusted sources bypasses security checks."). 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the zone you want to configure, and select **Configure Zone** from the dropdown menu. ![Configure Zone dropdown menu for a Proxy Zone in Business Manager](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_configure_zone.png) 3. Select the Page Shield Policies tab, and then select **New Policy**. To switch to a different zone from this tab, select another name from the Zone dropdown menu. ![Page Shield Policies tab in Business Manager Embedded CDN Settings](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_page_shield_policy_tab.png) 4. Enter a policy name. For example, "PCI Policy for Payments.” 5. (Optional) If you want the policy to be active when you save it, select **Enable Policy Upon Saving**. If you’re not ready to activate the policy yet, create it first, and then when you’re ready, return to the Page Shield Policies tab and enable your policy from the list. 6. Enter a policy expression using the visual dropdown interface to select a field, operator, and value. To add conditional logic, use the **And** or **Or** buttons. To manually enter the expression, click **Edit Expression**. For example, create an expression that targets a particular set of pages with payment scripts: 1. From the Field dropdown menu, select **URI Path** 2. From the Operator dropdown menu, select **Equals**. 3. For the Value field, enter a page name. For example, `/checkout` or `/cart`. 4. Select **Or**. 5. For the new expression, repeat steps a through c for any other pages where you have payment scripts. ![New Page Shield Policy in Business Manager Embedded CDN Settings](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_page_shield_policy_expression.png) 7. Select any trusted scripts from the list of detected scripts. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When allowing inline scripts to execute, you have two main options. Use a nonce (number used once) or unsafe-inline. Here’s a quick overview to help you decide: - Nonce is ‌effective against user-generated cross-site scripting (XSS) attacks, especially in older tech stacks. Modern stacks often have built-in protections. However, nonce doesn't protect against rogue code from GTM containers. - Unsafe-inline provides similar protection to nonce in this context, given the low XSS risk on payment pages where user-generated content (UGC) isn’t present. - Limit dependencies on payment pages to align with PCI DSS goals. Use unsafe-inline and, if necessary, unsafe-eval, with allow-listing of third-party dependencies for continuous monitoring and alerting. Or, continue using nonce and implement Page Shield for site-wide monitoring and alerting to meet PCI DSS requirements. 8. From the Action dropdown menu, select **Log** or **Allow**. 1. Log: Log any resources not covered by the policy, without blocking any resources. Use this action to validate a new policy before deploying it. Policy violation logs report any resources not covered by the policy. 2. Allow: Block any resources not explicitly allowed by the policy. Use the Allow action after validating a new policy with the Log action. Policies with the Allow action log policy violations for any blocked resource. 9. Click **Save**. B2C Commerce integrates all policy additions and violations with the [Log Center](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html#view-violation-logs), establishing a clear audit trail as required by PCI. View logs of who added policies and see violation logs when untrusted scripts attempt to run on protected pages To set up Page Shield notifications, use the [CDN Zones API](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html#step-3-set-up-notifications-and-view-violation-logs). #### See Also - [B2C Commerce Security Model](https://help.salesforce.com/s/articleView?id=cc.b2c_commerce_security_model.htm&release=264.0.0&type=5 "Salesforce B2C Commerce security is a partnership between Salesforce and our B2C Commerce customers. As always, Trust is our #1 value at Salesforce. We’re committed to delivering the highest standard in system availability, performance, and security.") # Configure a WhatsApp Channel and Template for B2C Commerce Shopper Notifications Connect WhatsApp Business Manager to your B2C Commerce with Agentforce Marketing org and import a message template to send shopper notifications. **Before you begin:** Make sure that you have [installed the Shopper Notification Channel Flow and Template](https://help.salesforce.com/s/articleView?id=cc.b2c_marketing_install_flow_and_template.htm&release=264.0.0&type=5 "Channel settings vary by notification type. For example, the channel settings for Abandoned Cart Notification are different from the settings for Post Order Notification. Specify the channels to use for your B2C Commerce storefront."). 1. [Create a WhatsApp Business Account](https://help.salesforce.com/s/articleView?id=mktg.um_channel_whatsapp_connect_waba.htm&type=5&language=en_US). 2. In WhatsApp Manager, [create a WhatsApp message template](https://www.facebook.com/business/help/2055875911147364?id=2129163877102343) and wait for Meta to approve it. 3. In your Salesforce org, from the App Launcher, find and select **CMS Workspaces**. 4. On the **All CMS Workspaces** page, select the workspace. 5. Click **Add**, and then select **Content**. 6. Select **WhatsApp Template Message**, and then click **Create**. 7. Under **Template Details**, select your WhatsApp Business Account from the **WhatsApp Business Account** dropdown list. 8. Select the WhatsApp template that you created and Meta approved from the **Template** dropdown list. 9. Enter a title and description in **Content Details**. To change the message text, edit it directly. If the template includes variables, enter a value for each variable. 10. Save your changes. # Configure A/B Test Segments for B2C Commerce After you create an A/B test for B2C Commerce, configure test segments on the Segments tab. A maximum of five test segments is permitted, one control group and up to four user-defined segments. 1. Select **New Test Segment**, and complete the fields. - **Test Segment ID**—Salesforce B2C Commerce API, imports, and exports can access this ID. - **Description**—(Optional) describe the test segment. The B2C Commerce API doesn't provide this description, and B2C Commerce doesn't localize it because it's for internal use only. - **Allocation**—determines the percentage distribution of participants among the test segments, including the control group. 2. Configure test experiences. Five test experiences are available for each segment, each with its own tab. - Promotions - Slot configuration - Sorting Rules - Keyword Search Sorting Rules - Search Preferences 3. Configure one or more experiences for the segment. Select each tab and configure the settings. Link your sorting rule to a storefront sorting option that appears only in A/B tests. 4. (Optional) To configure custom scripting beyond what's available in Business Manager, turn on **Custom Scripting Template**. To learn more about custom scripting, see [A/B Testing for Developers in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_ab_testing_for_developers.htm&language=en_US) To review the segment, preview the test segment on a storefront. #### See Also - [Preview an A/B Test in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_previewing_an_ab_test.htm&language=en_US) # Configure A/B Tests for Multiple Segments and Slots Determine how the order of two recommended products, and the home page background image affects Adds to Basket. Test changes to the order of four recommended products and the background image for a home page slot. There's a limited time to perform the test and you can't run the tests one after the other. Complete these tasks in the Staging instance. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), selects **Merchant Tools**, and then goes to **Online Marketing** | **A/B Tests**, and creates an A/B test called recommended-products. 2. Enable the test and enter an optional description. 3. Include an email address for notifications when there are statistically significant results for the key metric. 4. Select **Adds to Baskets** as the key metric. 5. Configure the test to: - Expire along with sessions. - Run for 1 week. - Be available for the `Everyone` customer group. 6. Create four segments plus a control group and allocate 20% of the participants to each. 7. Go to **Online Marketing** | **Content Slots**. 8. Under Global Slots, create four slot configurations, one for each order of recommended products and background image. | ID | Content Type | Content | Template | | --- | --- | --- | --- | | bgImage-1 | Content Asset | Image-1 | slots/product/verticalcarousel.isml | | bgImage-2 | Content Asset | Image-1 | slots/product/verticalcarousel.isml | | Product-1 | Product | product1, product2, product3, product4 | slots/product/verticalcarousel.isml | | Product-2 | Product | product1, product2, product3, product4 | slots/product/verticalcarousel.isml | 9. Return to the test and assign the corresponding slot configurations to the test segments. Each segment has the image applying first and the product order second. | Segment ID | Content Asset Slot | Product Slot | | --- | --- | --- | | recommended-products-1 | bgImage-1 | Product-1 | | recommended-products-2 | bgImage-1 | Product-2 | | recommended-products-3 | bgImage-2 | Product-1 | | recommended-products-4 | bgImage-2 | Product-2 | 10. Replicate the test to production and run it for the week. - One recommended order of products leads to more Adds to Baskets than the other. - One background image leads to more Adds to Baskets than the other. The combination of the better product order and background image shows a statistically significant difference in Adds to Baskets over the other combinations. Use the most effective combination for an upcoming change to the homepage slot content. # Configure Access Settings for B2C Commerce Limit access based on IP addresses. If you don't provide an allowlist or blocklist, the feature isn't active and these settings have no effect. Business Manager IP allowlists and blocklists serve to lock out attackers who have, though illegitimate means, obtained valid credentials. For example, a former employee who obtained credentials when employed, or non-employees who obtained them via social engineering. These lists aren't intended to prevent brute force attacks. If you log into Business Manager, and you aren't using Unified Authentication, these lists apply _before_ Business Manager verifies your credentials. If you log in using WebDAV or the agent user login process, and you aren't using Unified Authentication, the lists apply _after_ Business Manager verifies your credentials. If you log in using Unified Authentication, regardless of how you log in, these lists apply _after_ Business Manager verifies your credentials. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Security**. 2. On the Access Restriction tab, enter a range of allowlisted IP addresses allowed to access Business Manager. 3. Enter a range of blocklisted IP addresses not allowed to access Business Manager. If an IP address is both blocklisted and allowlisted, it's denied access. 4. Select whether you want invalid login attempts recorded to the error log. 5. To have an email sent when an invalid login attempt occurs, enter one or more email addresses, separated by a semicolon. If you don't provide an email address, no email is sent. 6. Select whether you want to block login access to non-specifically allowlisted IP addresses. If this option isn’t selected, non-specifically allowlisted IP addresses can access Business Manager. 7. Select whether you want invalid login attempts to count toward the Failed Login Count. Choosing this option can lock a user out. 8. Click **Apply**. # Configure Account Manager for Identity Federation in B2C Commerce Identity federation enables users to access multiple applications or systems with a single set of credentials. When you combine identity federation with a Salesforce My Domain, users can link their Salesforce Identity or third-party Identity and Access Management (IAM) credentials with Account Manager. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Log in to Account Manager. 2. Click **Organization** and select the organization that you want to add identity federation to. 3. Under Identity Federation with Salesforce Identity, select how to enable identity federation. 1. **Allowed**: A user can decline to link their Account Manager account with Salesforce Identity and still log in to B2C Commerce with an Account Manager account. 2. **Enforced**: If a user declines to link their Account Manager account with Salesforce Identity, they no longer can log in to B2C Commerce with an Account Manager account. 3. **Disabled**: Users can’t link their Account Manager account with Salesforce identity. 4. (Optional) Select Just-in-time User Provisioning. This option automatically provisions new users in Account Manager. The setting applies only if identity federation is enabled and the Salesforce My Domain is verified. 5. Specify the `My Domain` subdomain of your organization. 1. Use the dropdown menu to change the suffix. The default domain suffix is `my.salesforce.com`. If the identity federation is allowed or enforced, you can change the value. For example, if you use a Salesforce Core sandbox, you can use `sandbox.my.salesforce.com` as the domain suffix. Supported Salesforce Core domain suffixes include: - `my.salesforce.com` - `sandbox.my.salesforce.com` - `develop.my.salesforce.com` - `trailblaze.my.salesforce.com` - `scratch.my.salesforce.com` - `sfdctest.my.salesforce.com` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note After a user enters the wrong password six times, their account is locked for 30 minutes. In the Account Manager user list, the account is marked as for 30 min. In the Account Manager user list, the account is marked as **temporary locked**. To change the subdomain name after setup, reset the Salesforce Identity integration. For these steps and answers to other common questions, see [FAQ and Identity Federation Troubleshooting](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_idfed_faq_troubleshooting.htm&release=264.0.0&type=5 "Find answers to common Identity Federation questions for B2C Commerce Account Manager, covering account linking and unlinking, Connected App setup, multi-org assignment, recovering when your identity provider is down, and using access keys for WebDAV and other clients that don't support SSO."). 6. If you selected the Just-in-time option, authenticate with your Salesforce org. Click **Start verification**. If you don’t see the Start verification link, save your configuration and refresh the page. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If you disable identity federation and later enable it, verify My Domain again. ![Identity Federation settings](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_identity_fed_1.png) ![Identity Federation settings](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_account_manager_identity_fed_2.png) #### See Also - [FAQ and Identity Federation Troubleshooting](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_idfed_faq_troubleshooting.htm&release=264.0.0&type=5 "Find answers to common Identity Federation questions for B2C Commerce Account Manager, covering account linking and unlinking, Connected App setup, multi-org assignment, recovering when your identity provider is down, and using access keys for WebDAV and other clients that don't support SSO.") # Configure Allowed Currencies in B2C Commerce Configure the currencies that are allowed for your site. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Site Preferences** | **Currencies.** The allowed currencies appear in a list. The default currency can't be deleted. 2. Select one or more currencies and sort them using the arrows on the right. For example, select two currencies in the middle of the list and click the bottom sort arrow to move them to the bottom of the list. 3. On the Allowed Currencies page, click **Add**. 4. On the All Currencies window, select currencies to add. 5. Click **Add**. The added currencies appear on the Allowed Currencies page. # Configure an A/B Test to Compare Content Slots Determine which creative content on a content slot performs the best. 1. From App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png) select **Merchant Tools**. 2. Go to **Online Marketing** | **A/B Test**. 3. Create a test with ID `Creative-Test-1`. 4. Enable the test and enter an optional description of it. 5. Set the metric to `Checkout Rate`. The site is losing customers during the checkout process. The goal is to eliminate that as a variable, though the impact that creative pieces have on conversion rate isn’t clear. 6. Set participation to expire per session. The same customer can see different content in different visits. The customer enters a test group again when they return. 7. Configure the test to run all day the coming Monday through Wednesday. 8. Configure the test for `Registered Customers`. 9. Create two test groups, each with 40% allocation, leaving 20% for the control group. 10. Select **Content Slots**. There are now two slot configurations, one for each content asset representing each creative set of creative content. 11. Return to the test and include the corresponding slot configuration for each test group, in addition to the control group. After the test runs several days, one shows a higher `Average Discount Amount With Coupon` metric, but the other shows a higher `Checkout Rate`, the key metric. The metric `Average Discount Amount With Coupon` is higher because it includes a coupon code, while the other doesn't. Based on these findings and the impact during checkout, the marketing department moves forward with a site-wide creative effort based on the winning piece. # Configure an A/B Test to Compare Promotions Review which promotions perform the best against a control group, compare them by using A/B tests. Compare three promotions for a new campaign: - Free shipping on orders over $100. - 10% off orders over $100. - $25 off orders over $200. 1. From App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png) select **Merchant Tools**. 2. Expand **Online Marketing** | **Promotions**. 3. Make sure that the three promotions exist. Add any that are missing. 4. Select **A/B Tests**, and create a test with the ID Content Promotion Test. 1. Enable the test and enter an optional description that is for usage in the testing. 2. Include an email address for a notification when there are statistically significant results for the key metric. 3. Select **Orders** as the key metric, but consider other metrics when looking at the results. The test is looking for the promotion that leads to the highest `Conversion Rate`. The test is also looking for the one that maximizes `Average Order Value` and minimizes the `Average Discount Amount.` 5. Select per customer or per browser to provide more control. If customers return to the site in a repeat visit during the test, you want to offer them the same promotion. - Per customer tracks in the customer profile, so anytime the customer is recognized they participate in the same test segment. - Per browser tracks similarly to per customer except the participation is connected to the browser history and cookies. 6. Configure the test to include participants from the Everyone group, so that all customers can participate. 7. Set up three test segments. - Free Shipping over 100 allocated 30% - 10% off 100 allocated 30% - $25 off 200 allocated 30% ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Business Manager automatically allocates the remaining 10% to the control group. 8. Select **Content Slots** and identify the slot Header Banner on the site. 9. Show a banner for each included promotion, and create three slot configurations for, each with the content for one of the three promotions. 10. Return to the test and include the corresponding slot configuration as an experience for each test group, in addition to the control. 11. Set the test start date to midnight and the end date to 9PM Saturday. You want an answer before the summer clearance begins next Monday. 12. After creating the test on staging, replicate it to production. The test goes into effect at midnight, and you receive an email alert when there are results. 13. Review the results page. - Orders. The Free Shipping over $100 segment shows a statistically significant difference in Order Rate at 5%. The other segments show a roughly equal Order Rate of 4%. - Average Order Value. The $25 off $200 segment has a statistically significant difference at $59.50. The other segments show a roughly equal Average Order Value around $47. - Average Revenue per Visit. The Free Shipping over 100 segment is higher, but the difference isn't statistically significant. You conclude that the Free shipping over $100 and $25 off $200 promotions perform better than the control group. Use these two promotions for your site. # Configure an A/B Test to Compare Search Order Test which of two search order rules produce the highest revenue for a category. Use active data Top Sellers and Best Margin to define two new sorting rules. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), select **Merchant Tools**, and then go to **Online Marketing** | **A/B Tests**. 2. Configure an A/B Test to compare search and sorting. 3. Enable the test and enter an optional description for it. 4. Include an email address for notifications when there are statistically significant results for the key metric. 5. Select `Average Order Value` as the key metric. 6. Configure participation to expire per `Session`. 7. Set the test to run from August 2 through August 31. 8. Make the test available to all customers via the _Everyone_ group. 9. Create two test segments: - Sets a sorting rule test segment to _Top Sellers_ as the default for a search refined by that category, allocated to 50% of the participants. - Sets a sorting rule test segment to _Best Margin_ as the default for a search refined by that category, allocated to 45% of the participants. - The control group gets a different rule, _Fastest Sellers,_ because it's configured site-wide as the default for that category. This is allocated to 5%. You replicate the test in July, and it takes effect on August 2. You check the results occasionally, but there's no clear conclusion. The test ends on August 31, and you check the results for a final time. There were minimal differences among the groups for some metrics, including `Average Order Value` but even with 2,500 orders, none of these differences were statistically significant. Redesign the `Top Sellers` and `Best Margin` rules to use Sales Velocity for the last 7 days, instead of the last 365 days. This change might show whether the sort order is more responsive to current trends. Copy the test and run it again for the 30 days after Labor Day. The changes to the sorting rules themselves are enough to affect the test. It's not necessary to change the test groups. Replicate the changed sorting rules and the copied A/B test to production. Two weeks later, an email indicates that the `Top Sellers` rule shows a statistically higher `Average Order Value`. The timeliness of the active data was the key difference. Select the `Top Sellers` rule as the default. # Configure an Azure AD Security Assertion Markup Language (SAML) Provider This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Azure IDP. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) The SSO support for B2C Commerce is done via core-licensed products and requires three connections. - Azure AD - Salesforce Platform - Account Manager To enable Salesforce SSO and Salesforce provisioning with Azure, use this [Azure documentation](https://docs.microsoft.com/en-us/azure/active-directory/saas-apps/salesforce-tutorial#configure-azure-ad-sso). ## When you integrate Salesforce with Azure AD, you can: - Control who has access to Salesforce through Azure AD. - Enable your users to be automatically signed-in to Salesforce with their Azure AD accounts. - Manage your accounts in one central location: the Azure portal. #### See Also - [Set up and Integrate OKTA with Salesforce Identity](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_integrate_okta.htm&release=264.0.0&type=5 "This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Okta.") - [Configure Duo as an Authentication Provider](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configure_duo.htm&release=264.0.0&type=5 "This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Duo.") - [Account Manager Workflow](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_workflow.htm&release=264.0.0&type=5 "Learn how data flows through the configurations when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") - [Configurations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_design_considerations.htm&release=264.0.0&type=5 "Keep these design considerations in mind when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") # Configure an External CDN or Third-Party Proxy Use your own content delivery network (CDN) with Salesforce B2C Commerce's embedded CDN to deliver static and dynamic content to your customers. Deploy your CDN (or a reverse proxy) in front of B2C Commerce to improve performance and security, or to provide extra functionality. Layer your CDN or third-party proxy in front of B2C Commerce. Shopper requests go to your CDN first, then to the embedded CDN, and then to your B2C Commerce instance. To set up this configuration, specify the client IP header and site aliases in Business Manager, and then configure your CDN and DNS. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) To stack a third-party CDN in front of an eCDN zone created with the CDN Zones API, see [CDN Zones](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones.html#stack-a-third-party-cdn) in the developer documentation. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When fronting wildcard custom hostnames with an external CDN, make sure TXT-based validation is supported and records are propagated. See [Wildcard Custom Hostnames](https://help.salesforce.com/s/articleView?id=cc.b2c_add_wildcard_custom_hostname.htm&release=264.0.0&type=5 "Use a single wildcard custom hostname (for example, *.merchantsite.com) to cover multiple subdomains and reduce onboarding and management overhead in B2C Commerce eCDN via Business Manager."). 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **SEO & Discoverability** | **Customer CDN Settings**. The Customer Content Delivery Network Settings page opens. Customer CDN settings are instance-specific. They aren't transferred to other instances with the Data Replication process. 2. In the Dynamic Content section, enter the Client IP Header Name. The CDN uses the Client IP Header value to transfer the client's IP address to enable client IP-based services, such as geo-location. B2C Commerce uses this setting to retrieve the client IP address from a request header instead of the network connection source address. If the request header isn't provided, B2C Commerce uses the connection source address. If a CDN terminates client requests, B2C Commerce continues to use the client IP header name functionality. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note B2C Commerce prohibits use of the following header names, regardless of capitalization or if you replace the dashes with underscores: - `cf-connecting-ip` - `true-client-ip` - `x-forwarded-for` 3. Click **Save**. 4. To configure the site name, select **Merchant Tools** | **site** | **SEO & Discoverability** | **Aliases**, and configure the site name. 5. Click **Save**. 6. To use an external CDN with B2C Commerce, after you define the Client IP Header Name and site aliases, complete the configuration on your third-party proxy and DNS. 1. Enter the B2C Commerce instance as the origin server, for example, `your-domain.cdn.cloudflare.net`. 2. Pass the host header (for example, www.customer.com) back to the eCDN. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Don't send the entire B2C Commerce instance (www.customer.com.cdn.cloudflare.net) back to the eCDN. 3. Configure the client IP header name that you entered in step 2. 4. Make sure that responses are only cached in the CDN if the origin sends a cache header. 7. In your DNS, point the DNS entry for your site to your `CDN CNAME`. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The eCDN security feature can incorrectly identify a third-party proxy as an offending IP address or server and block it, affecting more users than intended. To prevent this, see [Trusted Proxies and eCDN Request Blocking](https://help.salesforce.com/s/articleView?id=cc.b2c_verify_third_party_requests.htm&release=264.0.0&type=5 "When you stack a third-party CDN or proxy in front of B2C Commerce eCDN, the eCDN security feature can mistake the proxy for an attacker and block it. Verify trusted proxy traffic so that legitimate requests aren't blocked."), which describes the recommended options (eCDN custom rules and secret headers) and the not-recommended option (adding a trusted proxy to the firewall allowlist). For allowlist steps, see [Manage IP Address Lists for eCDN Zones](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_trusted_ip_address_lists.htm&release=264.0.0&type=5 "Create named lists of trusted IP addresses or CIDR ranges to use with custom firewall rules that bypass security checks for trusted traffic on your B2C Commerce storefront."). - **[Trusted Proxies and eCDN Request Blocking](https://help.salesforce.com/s/articleView?id=cc.b2c_verify_third_party_requests.htm&release=264.0.0&type=5)** When you stack a third-party CDN or proxy in front of B2C Commerce eCDN, the eCDN security feature can mistake the proxy for an attacker and block it. Verify trusted proxy traffic so that legitimate requests aren't blocked. # Configure an Outbound Connections Allowlist in B2C Commerce Any URL that is already configured in service credentials is automatically added to your allowlist. Follow this process to configure new endpoints and add them to your allowlist. 1. Contact Salesforce Customer Support, and request a firewall rule. Include up to five IP: Port combinations in your request. For example, a request contains these details. - IP: Port combination: 35.221.89.15: port 20112, 35.221.89.15: port 20122, 35.221.89.15: port 20132 - POD: POD164 - Group ID: bchg - Realm: Fun.ap02 ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note It takes 3-5 business days for a firewall rule to be reviewed and added to your allowlist. 2. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Services** | **Outbound Connections**. 3. Under Configure New Endpoint, enter the scheme or protocol, hostname, and (optional) port of your allowed connection, and click **Allow**. For example, enter `https://example.com` ![Outbound Connections](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_outbound_connections.png) 4. To permit connections to endpoints that are explicitly listed, select **Enforce Allowlist**, and click **Apply**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If this option isn't selected, the system generates warning logs for connections made to unlisted endpoints. 5. Confirm your selection. 6. To verify automatically allowed endpoints defined in service credentials or email settings, verify the endpoints under Automatically Allowed Endpoints. #### See Also - [Outbound Connections Allowlist in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_data_outbound_connections.htm&release=264.0.0&type=5 "Connections from B2C Commerce to an external cloud provider over a private internet are referred to as outbound connections. To ensure the security and integrity of your B2C Commerce realm, Salesforce Customer Support approves all outbound connections. To control which destinations your data can be sent to, add new endpoints to your outbound connections allowlist. Send data from B2C Commerce to any of the endpoints on the allowlist, including third party providers such as Secure File Transfer Protocol (SFTP), FTP, WebDAV, and HTTP and HTTPS.") - [Configure Service Credentials for the Near Real-Time Connected App](https://help.salesforce.com/s/articleView?id=cc.b2c_data_cloud_near_real_time_configure_service_credentials.htm&release=264.0.0&type=5 "After you install the B2C Commerce data kit and create a connected app, you configure service credentials for the app in Business Manager.") # Configure and Run a Log Center Search Search for messages from system and custom code in B2C Commerce Log Center. 1. Start Log Center. 2. From the Search Tab, select **New Search**. 3. On the left-hand side of the page, set filters to narrow your search. 4. Conduct a search in one of the following ways. - To conduct a basic search, enter one or more search terms in the search text field and click the search icon. - To conduct an advanced search, click the **LCQL** checkbox next to the search text field. Select one or more query fields and enter query text in parentheses. Press the space bar after a closing parenthesis to select the AND or OR operator. To execute the search, click the search icon. For more information about the LCQL (Log Center Query Language) syntax used in advanced searches, click the question mark (?) near the search icon. 5. To save the search, click the down arrow next to the search icon and select **Save search**. To retrieve it later, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Search** | **Manage Saved Searches** from the main menu. You can share the URL of a saved search with other users. 6. To configure ongoing notifications for the search, follow these steps. 1. Click **Enable notification**. 2. Enter the name of the search. 3. Select the time interval. To save the search notification settings without sending any notifications, click **Disable**. 4. To send a notification every time the search returns any results, select **Always Send Notification**. To only send notifications when the search returns at least some results, set the **Threshold** to that number. 5. To send a test notification, click the test icon. # Configure Attribute Mappings for Shopper Profile Sync Attribute mappings define which shopper attributes sync between B2C Commerce and your Salesforce org. Twelve default mappings are always active, including first name, last name, email address, and phone numbers. You can't edit or remove these default mappings. After the default mappings, add up to 20 custom mappings for additional standard or custom shopper attributes. To add a custom attribute mapping, go to the Attribute Mappings section while auto-sync is turned off. Select the B2C Commerce shopper attribute and the corresponding Salesforce person account field that you want to map. If you don't see the person account attribute that you want, make sure that you've created it in the connected Salesforce org. Attribute mapping supports attributes of type Boolean, Double, Integer, Long, String, and Text. ![Attribute Mappings section showing custom attribute mapping configuration](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_shopper_sync_attribute_mapping.png) Configure your custom mappings before turning on auto-sync. If you update mappings while auto-sync is turned on, changes take effect at the next scheduled sync. However, limit mapping updates to avoid time-intensive re-syncs of existing shopper data. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important Whenever you update attribute mappings, propagate those changes across both production and non-production environments to keep them synchronized. ## Mandatory Shopper Profile Sync Attributes This table details the mandatory fields synchronized between B2C Commerce and a connected Salesforce org. By default, there are 12 default attribute mappings sent from B2C Commerce to the Salesforce org that are always active and can't be edited or removed. After the connected Salesforce org successfully creates or updates these profiles, the system returns specific Salesforce identifiers back to B2C Commerce.
Direction B2C Commerce Shopper Field Salesforce Org Field (Person Account or Contact) Description & Mandatory Status
B2C Commerce to Salesforce Org lastName LastName Strictly Mandatory. Required for person account creation in Salesforce.
B2C Commerce to Salesforce Org customerId CommerceCustomerReference Required Sync Reference. Stable B2C Commerce customer identity used for strict system deduplication.
B2C Commerce to Salesforce Org B2C Commerce instance and realm ID CommerceOrganizationReference Required Sync Reference. Identifies the specific B2C Commerce realm and instance the shopper originated from.
B2C Commerce to Salesforce Org customerListId CommerceGroupReference Required Sync Reference. Identifies the B2C Commerce customer list to preserve lineage.
B2C Commerce to Salesforce Org firstName FirstName Auto-mapped system attribute.
B2C Commerce to Salesforce Org customerNo AccountNumber Auto-mapped system attribute.
B2C Commerce to Salesforce Org email PersonEmail (or Email) Auto-mapped system attribute.
B2C Commerce to Salesforce Org phoneMobile Phone (or PersonMobilePhone) Auto-mapped system attribute.
B2C Commerce to Salesforce Org phoneHome Home Phone Auto-mapped system attribute.
B2C Commerce to Salesforce Org phoneBusiness Other Phone Auto-mapped system attribute.
Salesforce Org to B2C Commerce (Saved to accountId) AccountId

Returned by Salesforce org. Persisted in B2C Commerce's CustomerUnifiedProfile table to establish the unified identity.

Note
Note In the June release, the accountId field on the CustomerUnifiedProfile table isn't populated for existing Person Accounts. A future release is planned to update all customer profiles to contain their corresponding Person Account ID. For integration use cases, use the Contact ID.
Salesforce Org to B2C Commerce (Saved to contactId) ContactId Returned by Salesforce org. Embedded into the Shopper Login and API Access Service (SLAS) JSON Web Token (JWT) to securely enable downstream Agentic interactions.
![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note For a custom attribute mapping to be saved and for the sync to function successfully, any attribute defined as required on the Salesforce person account schema must be mapped in the B2C Commerce UI. If a required attribute is left unmapped or without a default value, the enablement validation blocks the synchronization process from starting. # Configure B2C Commerce Alerts in Business Manager and Slack Set up notifications for your organization in Business Manager and Slack. Configure updates, such as security vulnerabilities, campaign and promotion updates, or site alerts, to appear on your Business Manager homepage. You can also send updates directly to your Slack workspaces. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Notifications**. 2. On the Settings tab, select whether you want an alert to show on your Business Manager homepage or heading. 3. Select one or more Slack Channels to send alerts to. Changes are saved automatically. # Configure B2C Commerce Einstein Recommenders After deploying B2C Commerce Einstein, product details page (pdp) and recently viewed recommenders are available out of the box. Merchants also can create custom recommenders, leveraging Einstein strategies and rules. The purpose of a recommender is to: - Control the approach, or algorithm, that is used to generate the list of product IDs. - To manipulate the list of product IDs, remove them or change their order before passing the list to the storefront. A recommender configuration specifies one or more _strategies_ that determine what approach the system uses to generate a list of product IDs. Though they aren’t required, the configuration can also specify one or more _rules_ that manipulate the recommendation list, controlling its composition and order. When you configure a recommender, you must give it a unique name. This name appears in Business Manager when you [create a content slot configuration](https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_slots_for_predictive_recommendations.htm&release=264.0.0&type=5 "Use content slots to show product recommendations in your storefront.") for the recommendations generated by the recommender. For more information about Recommender Types and Strategies, see [B2C Commerce Einstein Product Recommendations](https://help.salesforce.com/s/articleView?id=cc.b2c_einstein_site_recommendations.htm&release=264.0.0&type=5 "Use Einstein Product Recommendations to create and manage recommenders and assign strategies that predict the most relevant products to promote to individual shoppers."). # Configure Basket Preferences Configurable basket settings include persistence across B2C Commerce shopper sessions, the treatment of duplicate product line items, and the maximum number of product line items per basket. These preferences are site-specific, and a customized storefront doesn’t necessarily evaluate them. **Configure Basket Settings** Configurable basket settings alter: - The behavior of the [dw.order.BasketMgr.getCurrentBasket()](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_order_BasketMgr.html#dw_order_BasketMgr_getCurrentBasket_DetailAnchor) and [dw.order.BasketMgr.getStoredBasket()](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_order_BasketMgr.html#dw_order_BasketMgr_getStoredBasket_DetailAnchor) methods - The treatment of duplicate product line items - The maximum number of product line items per basket. To set basket behavior preferences for the current site, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Site Preferences** | **Baskets.** ## Basket Persistence Across Storefront Sessions Configure site-specific basket settings that control shopper session persistence. These preferences directly influence the behavior of BasketMgr methods, and define the use of the cookies for maintaining basket state across sessions. Two key identifiers influence basket retrieval: - dwsid (Session ID): A transient cookie that tracks the current browser session. When dwsid changes (for example, due to session expiration), the system relies on the anonymous cookie for persistence. - dwanonymous (Anonymous ID Cookie): A persistent cookie used to associate an unregistered (guest) shopper with a unique, saved basket across multiple visits, regardless of dwsid changes. The presence of this cookie determines persistence for guest shoppers. ## Global Constraints The following rules are always in effect, regardless of the settings. - When an unregistered shopper creates a basket, its association is maintained via the dwanonymous cookie, which stores the shopper's unique ID. This cookie allows the system to retrieve the basket even if the transient session ID (dwsid) changes or expires. - When a customer creates a basket, and then registers or logs in, that basket remains in the session and ownership of it transfers to the customer. - When a customer logs out, the current basket is cleared from the session, even if it’s also saved. - When a basket’s lifetime expires, the basket is no longer accessible and cannot be recreated. - After seven days of no payment information updates, the system automatically deletes any payment information from a basket. - A basket that doesn’t belong to a registered customer never persists for longer than 365 days after the last basket interaction by the shopper. ## Basket Persistence Settings The following settings control how long baskets are stored: - Basket Persistence: Defines the conditions for which the system automatically looks up and restores a saved basket using BasketMgr.getCurrentBasket() when a customer begins a new session. This setting is only relevant if the basket to be returned is still within its configured basket lifetime. This setting is not relevant for Shopper Commerce API (SCAPI)/OCAPI. - Basket Lifetimes: Defines how long a saved basket remains available in the system before it becomes unavailable with BasketMgr.getCurrentBasket(). | Basket Persistence | BasketExpirationType IMPEX Preference value (relates to the [IMPEX preferences schema](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/xsd/preferences.xsd) and the attribute preference-id=BasketExpirationType) | getCurrentBasket() Behavior | Description | | --- | --- | --- | --- | | Baskets Not Persistent | Session | Baskets only exist during the storefront session and this method only returns baskets created in the current session. | When a session ends, the basket is not saved. Every session begins with an empty basket. | | Baskets Persistent for Authenticated Customers Only | Authenticated | An existing basket from a previous session is returned only for registered shoppers who are logged into the new session. | When a registered shopper’s session ends, the current basket is cleared but its contents are saved. If that shopper opens a new session and logs in within the basket lifetime for registered customers, the saved basket is restored. If the shopper started a new basket before logging in, the saved basket is available via [BasketMgr.getStoredBasket()](https://salesforcecommercecloud.github.io/b2c-dev-doc/docs/current/scriptapi/html/index.html?target=class_dw_order_BasketMgr.html#dw_order_BasketMgr_getStoredBasket_DetailAnchor). | | Baskets Persistent for Registered Customers Only | Customer | An existing basket is returned for registered shoppers. If the registered shopper is not logged into the session, and the shopper is only identified by the dwanonymous cookie, personal data is cleared when using this method. | When a registered shopper’s session ends, the current basket is cleared but its contents are saved. If the system recognizes that shopper in a new session within the basket lifetime for registered shoppers, the saved basket is restored. If the shopper started a new basket before being recognized, the saved basket is available via API calls. | | Baskets Persistent for All Shoppers | Time | For both registered and guest shoppers, an existing basket is returned. However, if the existing basket was created in a previous visit, and the current user is only a guest (identified solely by the dwanonymous cookie), personal data is cleared when using this method. | When any customer’s session ends, the current basket is cleared but its contents are saved. If that customer opens a new session within the basket lifetime for the appropriate customer type, the saved basket contents are restored. | ## Basket Retention Settings To configure the behavior of baskets when user sessions start and end, use the persistence and lifetime settings. Define different lifetimes for registered and unregistered (guest) customers. The following rules apply to basket lifetimes: - A basket’s lifetime is measured from the time of its last change. - The default lifetime for registered customers is 240 minutes (four hours). - We recommend a lifetime between 20,160 minutes (14 days) and 43,200 minutes (30 days), unless you have a specific use case for a different length. The Maximum Basket Lifetime API quota of 525,600 minutes (365 days) applies to the lifetime for registered customers. For information on API quotas, see the API documentation. - The maximum lifetime for unregistered customers is the smaller of 43,200 minutes (30 days) or the lifetime for registered customers. - If you don’t specify a lifetime for unregistered customers, it defaults to the maximum lifetime. ## Behavior When Adding a Duplicate Product to a Basket The **Add Product to Basket Behavior** setting controls the behavior when a customer tries to add a product that’s identical to one in their basket. Products are compared using the following rules: - If the preference is Disallow Repeats or Increment Quantity, then products are duplicates if they have the same SKU, product list ID, and inventory list ID. For purposes of this comparison, a null list ID only matches another null list ID. For example, a product that isn’t on an inventory list can only match another product that isn’t on an inventory list. - If the preference is Allow Repeats, then adding a product doesn’t affect any existing product line items. - Option products are always added to a new product line item, regardless of the preference setting. - Product bundles that contain base products are always added to a new product line item, regardless of the preference setting. - If an attribute changes on a product that’s in the basket, the system does not repeat the duplicate check. | Add Product to Basket Behavior | Description | | --- | --- | | Disallow Repeats | Ignore the request. | | Increment Quantity | Add to the quantity of the existing product line item. This setting is the default. | | Allow Repeats | Add another product line item for the same product. | ## Maximum Product Line Items Per Basket To limit the number of product line items allowed in a basket, enter a value in the **Max Number of Product Line Items** field. Attempting to add product line items beyond this limit returns an error. The limit considers only the number of lines, not their quantities. The default value is 50. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The limit applies only to independent products. Dependent products that can’t be purchased alone, such as shipping charges, options, and bonus items, don’t count toward it. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The Product Line Items per Basket object quota limits each basket to 200 product line items, including both independent and dependent product line items. For information on object quotas, see the API documentation. ## Temporary Basket Use the temporary basket API to create a temporary basket in the B2C Commerce system. The temporary basket is enabled with the Shopper Baskets Script API, Open Commerce API (OCAPI) and SCAPI including pricing, promotions, coupons, inventory, shipping methods, order creation, and reopening an order. A temporary basket is populated with all the data required to ready the basket for checkout but differs from a shopper basket in the following ways: - Basket lifetime is limited to 15 minutes of inactivity. - A shopper can have up to 10 (default 4) temporary baskets. To configure the number of temporary baskets, in Business Manager click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Basket Preferences** and set the Temporary Basket per Customer value. - Available to all shoppers including guests, registered and agent use cases A temporary basket performs all the necessary calculations to generate accurate totals, line items, promotions, availability, and the like without affecting the regular shopper storefront basket. Use the results of the temporary basket calculations to display purchase information for items added to the temporary basket. And use the same calculations for temporary basket checkout. A temporary basket is intended for specific use cases. For example: - A shopper wants to purchase an item that is not added to their normal shopping cart. - A shopper taps an Apple Pay button on a product display page to buy now without affecting their current storefront basket which contains line items for an unrelated purchase. - A shopper taps a reorder button on an order history page to repeat a past purchase without affecting their current storefront basket which contains line items for an unrelated purchase. - A shopper taps an order button on a wish list page to purchase one or more items without affecting their current storefront basket which contains line items for an unrelated purchase. - A merchant shares a link through social channels that generates a temporary basket for promotional items. - A customer support agent sends a Buy Now link with pre-set products for a shopper to checkout themselves (no passing of payment details to support). # Configure Batch Processes for B2C Commerce Catalogs To perform large-scale, one-time merchandising operations on many catalogs efficiently, without editing each catalog individually, use batch processing. For example, update or delete category attributes, copy categories, or delete categories. 1. In Business Manager, go to the App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and select **Merchant Tools** | **site** | **Products and Catalogs** | **Catalogs**. 2. Select the **Catalog Search** tab, and in the search field, click **Find**. 3. Select the catalogs that you want to include in the batch process, and click **Edit Selected**. 4. Select the processing action and click **Next**. 5. Complete any additional steps for the specific action, and click **Next**. 6. Select **Finish**, and review the scheduled batch process. You can also view the scheduled batch processes by selecting **Products** | **Batch Processes for Products and Catalogs**. You can also view whether the process succeeded or failed. 7. If a process fails, view the log file for detailed information. Log files are in the Import/Export log directory. The file naming convention is Batch-Business\_Manager\_module\-timestamp.log. For example, ...\\sharedata\\sites\\Sites-Site\\units\\Sites\\impex\\log\\Batch-Products-20100128192425062.log. The log file can contain WARN, ERROR, or FATAL log messages. To see why a process failed, click the Download log file link and review the entries. See also [B2C Commerce Log Files](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-log-files-overview.html). # Configure Batch Processes for B2C Commerce Products To perform large-scale, one-time merchandising operations on many products efficiently, without editing each product individually, use batch processing for your products. For example, assign a product collection to a new category, remove discontinued products, set the same search or display attribute across many products. 1. In Business Manager, go to the App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and select **Merchant Tools** | **site** | **Products and Catalogs**. 2. Select **Products**, and in Product Search, click **Find**. 3. Select the products that you want to include in the batch process, and click **Edit Selected**. 4. Select the processing action and click **Next**. 5. Complete any additional steps for the specific action, and click **Next**. 6. Select **Finish: Go to Batch Process**, and review the scheduled batch process. You can also view the scheduled batch processes by selecting **Products** | **Batch Processes for Products and Catalogs**. You can also view whether the process succeeded or failed. 7. If a process fails, view the log file for detailed information. Log files are in the Import/Export log directory. The file naming convention is Batch-Business\_Manager\_module\-timestamp.log. For example, ...\\sharedata\\sites\\Sites-Site\\units\\Sites\\impex\\log\\Batch-Products-20100128192425062.log. The log file can contain WARN, ERROR, or FATAL log messages. To see why a process failed, click the Download log file link and review the entries. See also [B2C Commerce Log Files](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-log-files-overview.html). # Configure Business Manager Email Settings To define your own SMTP server for B2C Commerce customer and platform email delivery, configure email settings. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Email Settings**. 2. Click the **Use customer email configuration** checkbox. 3. Enter username. 4. Enter password. 5. Enter hostname. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Make sure the SMTP server supports STARTTLS. 6. Use the default port 587. 7. Enter a From address. 8. (Optional) To use the defined server for your customer and platform emails, check **Use for all email**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When Use for all email isn’t checked, only outgoing customer email uses the configured server, such as email that you generate to send to your shoppers. All platform email continues to use the default SMTP server that Salesforce provides. # Configure Catalog and Order Feeds for B2C Commerce Einstein Deployment Configure, schedule, and deploy catalog and order data feeds to Einstein. Before you can use Einstein features, you must first configure catalog and order feeds for B2C Commerce Einstein. Data about products in the product catalog and about shopper orders is transmitted using these feeds. The feeds export important properties about your product catalog and orders to B2C Commerce Einstein. Einstein employs this data to train the machine learning models used to generate results for the B2C Commerce Einstein features that you choose to activate on your storefront. The data is also fed into the Einstein Configurator tool. Use Einstein Configurator to configure business rules that fine-tune how the system generates recommendations. Cofiguring these feeds controls how often catalog and order data is exported. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Configure catalog and order feeds only on production instances. To configure catalog and order feeds: 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Einstein Status Dashboard**. 2. Using the dropdown menu to the right of each site, select **Configure**. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Unless it’s blank, leave the Host field alone and skip the next step. 3. If the Host field is blank, specify the Host URL for the current site. For example, www.myCompanyName.com. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When specifying the host URL, don’t include 'https://'. 4. In the Deployment Configuration section, select **Region**. Select a region only one time per site. This setting specifies a region corresponding to your primary business location. The system uses this information to determine where to physically store and process predictive data. Make sure region setting is configured in Production and Staging instance. 5. Use the following table to define specific actions:
Action Select …
Generate product recommendations on product details pages for pages that are currently out of stock.

Out-of-Stock Products

Note
Note This option enables Einstein to store out-of-stock product catalog information, to continue recognizing out of stock product IDs viewed by shoppers, and to honor any applied recommender rules.
Storefront catalogs that leverage product type: Variation Group. Variation Group Products
Product catalogs that contain data for products beyond the default locale. Multi-Locale
6. To export orders created after a specific date, specify a value in the Export Orders Created After field. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When specifying this value, provide either the date your site went live on B2C Commerce or two years, whichever is the smaller value. 7. Define the maximum number of orders per run. This value is the anticipated number of orders you expect on a peak day. The default value is 10,000. As a reference, for a setting of 100,000 orders, the order feed processing time is approximately 30 minutes. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note When configuring maximum orders per run for new sites with large order histories, we recommend that you increase the number of orders to exceed 10,000. This setting enables the order feed to import orders from the most recent date instead of taking many days to catch up to the current day. If the order feed isn’t up to date, it's possible that Commerce Insights won't generate. Commerce Insights displays shopper basket visualization for the last 7 days. 8. (Optional) To run the catalog and order feeds immediately, click **Save**. 9. Set the Schedule Catalog and Order Feed switch to **On**. If the switch is inactive, catalog and order feeds aren’t scheduled for the site. 10. Define the catalog feed schedule.
Field Recommendations
Start Date and Time

To make sure that Einstein receives your most current product information or recent product launches, schedule jobs to run shortly after replication from staging to production completes.

To view staging to production replication job completion time go to Staging Instance | App Launcher | Administration | Replication | Data Replication Processes | view End Time for Type: Transfer & Publication.

Time Unit Day
Frequency

1

Note
Note We recommend a daily catalog feed to enable Einstein to remain up to date with any changes. Einstein exports the entire catalog only on the first run. To keep daily runtimes shorter, subsequent runs contain only deltas.
11. Define the order feed schedule.
Field Recommendations
Start Date and Time Schedule jobs for off-peak ordering times.
Time Unit Day
Frequency

1

Note
Note Because it uses orders from the last 7 days, configuring a daily order feed is important for keeping the Commerce Insights feature up to date. Order feeds are also used in the Product Affinity Algorithm for the Product Recommendations strategy.
12. Click **Save**. Business Manager saves the configuration. 13. Wait at least 24–48 hours for deployment to complete. 14. Log a ticket with Salesforce Support and request to be add an initial Site Admin to the Configurator. 15. After you are added as the Site Admin, open the Einstein Configurator and navigate to **Admin** | **User Management**. Add additional users as needed. Users must have an Account manager account in the relevant organization, but don't need a specific Account Manager role. See Also - [Configure Catalog and Order Feeds for B2C Commerce Einstein Deployment](https://youtu.be/5YKKqpNuqds?si=kwSoyakQjLI9JX9n) # Configure Catalog and Order Feeds for Commerce Cloud Einstein Deployment Before you can use the OpenAI or Google catalog feed integration, configure Einstein catalog feeds. If your B2C Commerce site already uses Einstein features, you can skip this task. You need Business Manager administrator permissions to configure Einstein feeds. The OpenAI and Google catalog feed integrations rely on Commerce Cloud Einstein catalog feeds. If you haven't configured Einstein feeds before, set up the catalog and order feeds as described in [Configure a Commerce Cloud Einstein Deployment](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_einstein_deployment.htm&release=264.0.0&type=5 "Configure, schedule, and deploy catalog and order data feeds to Einstein."), and apply the product feed settings below as you go. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Configure catalog and order feeds only on production instances. The product feed integration uses only the catalog feed. Order feeds aren't required for product feed syndication. Configure the order feed only if you use other Einstein features that need it, such as Commerce Insights or Product Recommendations. In the **Host** field, enter the storefront hostname for the current site, such as `www.mycompany.com`. The product feed uses this hostname to construct the product URL column for each product—the url column for the OpenAI feed or the link column for the Google feed—so shoppers who click through from ChatGPT or Google land on your storefront. If the field already shows a value such as `staging-realm-pod.demandware.net`, that's the instance hostname, not your storefront hostname. Replace it with the storefront hostname before you save. Don't include the URL scheme (`https://`). If you select **Out-of-Stock Products** when you define feed actions, the product feed uses that setting to include or exclude out-of-stock products in the feed. For a walkthrough of the Einstein deployment steps, see the video [Configure Catalog and Order Feeds for Commerce Cloud Einstein Deployment](https://youtu.be/5YKKqpNuqds?si=kwSoyakQjLI9JX9n). # Configure Catalog Image Settings in B2C Commerce In B2C Commerce, configure catalog image settings only when the settings created with the catalog differ from what you want, or to add a catalog-level variation attribute. Default alt text and title fill in only when an image has none of its own, so you leave them unchanged before you assign images. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) A new B2C Commerce catalog already has these image settings. For the full defaults, see [Image Management in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_image_management.htm&release=264.0.0&type=5 "Before you assign product images in B2C Commerce, learn the terms, limits, and catalog location. Then choose the topic for assigning images, catalog settings, view types, swatches, alt text, storage, or a size, crop, or format."). - An internal image location - Base path `/` - View types large, medium, small, and swatch - Alt text and title `${productname}`, which inserts the product name - No catalog-level variation attribute These settings can be saved before any product exists. B2C Commerce catalog image settings support multiple variation attributes. The settings enable you to specify images for combinations of variation attributes, for example color (red, green, blue) and fabric (leather, textile) for all new products. When you set a catalog variation attribute, such as color, Image Manager shows the base product and a level for each value, such as the colors. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **Products and Catalogs** | **Catalogs**. Click **Edit** for the catalog you want, and then click the **Image Settings** tab. 2. Specify these values: - Image Location. Choose Internal or External. For internal images, specify the base path, for example, `/your/special/images/`, which points to a folder in the catalog image directory. A base path of "/" is the root of the catalog image directory. For External, the HTTP URL is required and the HTTPS URL is a separate field. See [Image Management in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_image_management.htm&release=264.0.0&type=5 "Before you assign product images in B2C Commerce, learn the terms, limits, and catalog location. Then choose the topic for assigning images, catalog settings, view types, swatches, alt text, storage, or a size, crop, or format.") for how those locations and paths work. - View Types. Enter the view type names. See [Image View Types and Variants in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_understanding_view_types.htm&release=264.0.0&type=5 "Use B2C Commerce view types to group product images by usage context, such as large, medium, small, and swatch, and assign different images to each product variation.") for the default view types large, medium, small, and swatch. To add a view type, click **Add View Type**. Provide a value, and click **Apply**. To remove a view type, clear a view type field, and click **Apply**. View types must be unique per catalog. - Variation Attribute ID. Before you enter an ID, make sure the attribute is already defined on the base product's Variations tab. For steps, see [Assign Images to Products in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_managing_images.htm&release=264.0.0&type=5 "In B2C Commerce, attach an image to a product so the storefront can show it. Assign images on the base product, and a variation product uses those images."). Enter the ID of a variation attribute, such as `color`. The Image Manager window uses this attribute as the default way to group images. For example, if you enter `color`, the first level of the tree shows the color values available for the product. If you leave this setting blank, `${variationvalue}` is replaced with an empty string. This also happens if the image group has no variation value, or if the attribute or its value can't be found. - Default Image Alt. Enter the default alternative image text. Enter words, any of the markers `${productname}`, `${variationvalue}`, and `${viewtype}`, or words and markers together. - Default Image Title. Enter the default image title. Enter words, any of the markers `${productname}` and `${variationvalue}`, or words and markers together. 3. To save your changes, click **Apply**. See Also - [Image Management in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_image_management.htm&release=264.0.0&type=5 "Before you assign product images in B2C Commerce, learn the terms, limits, and catalog location. Then choose the topic for assigning images, catalog settings, view types, swatches, alt text, storage, or a size, crop, or format.") - [Image View Types and Variants in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_understanding_view_types.htm&release=264.0.0&type=5 "Use B2C Commerce view types to group product images by usage context, such as large, medium, small, and swatch, and assign different images to each product variation.") - [Image Alt Text and Title Annotations in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_annotating_images.htm&release=264.0.0&type=5 "B2C Commerce lets you annotate each image assignment with a combination of relative image path, view type or B2C Commerce variation product, and a localizable alt description and image title. Set those values on one image, or set a catalog pattern that fills them in.") # Configure Category Position Use the category position attribute as a sorting rule in B2C Commerce to place specific products in a particular order for a specific category. This is typically used to place items at the beginning of the product results for a category page to promote them. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Category Position shouldn’t be the only sorting attribute in a Keyword Sorting Rule because it’s missing category context and are skipped in searches. If no other sorting attribute is defined, sorting falls back to Text Relevance. In addition to selecting the Category Position standard attribute for your sorting rule, you must also configure the category position for the products. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Products and Catalogs** | **Catalogs** | **catalog** | **category** . 2. On the Catalog Assignment page in the Categories section, continue selecting categories until you find the category that contains the products you want to place. 3. Select the products to place and click **Sort**. 4. Enter the desired position in the position field, or use the up and down arrows to control the position of the product, and click **Apply**. Categories are similarly sortable. # Configure Change History Preferences for B2C Commerce You control change history settings across the organization. Because there are potentially many events, filter events using various criteria, such as by user, object type, or date. For example, disable the change history feature entirely, or limit the number of days you want to keep change events. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Global Preferences** | **Change History**. 2. Select an **Instance Type**. This feature is available on Staging and Production instances. You can directly enable change tracking on a Production instance, but your settings are overwritten the next time you replicate global preferences to Production. To indirectly enable change tracking on a Production instance, configure your settings on a Staging instance and then replicate your settings to Production. On the Staging instance, select **Production** as your instance type to make sure that replication copies the settings to the Production instance. 3. Select **Enable Change History.** ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The total count of change history events can differ from the sum of usage counts due to events belonging to more than one module. 4. Enter a value for the Cleanup Recorded History field between and 1 and 7 days. The Cleanup Recorded History field represents the number of days history changes are retained for viewing before B2C Commerce discards them. 5. Select the Business Manager modules you want to audit. On Staging instances, tracking is available for the following modules: - Object Definition - Site & Preference - Catalog - Price Book - Inventory List - Content - Online Marketing - Search & Sorting - SEO - Ordering - Assignments On Production instances, it's only available for the following modules: - Object Definition - Site & Preference - Inventory List - Online Marketing - Search & Sorting - SEO - Ordering - Assignments 6. Click **Apply**. # Configure Commerce Intelligence Preferences for IP Filtering Internal performance and load testing tools can contaminate the data you see in Reports and Dashboards, making it difficult to distinguish between generated traffic and actual customer behavior. Specify IP address ranges to filter out traffic from your internal testing tools, ensuring that your analytics reflect genuine B2C Commerce customer interactions. IP filtering applies to customer-focused analytics that track visitor behavior and business metrics (such as traffic, sales, and conversion reports), but does not affect technical performance reports that monitor system operations (such as pipeline performance, cache hit ratios, response times, and robot traffic). ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note IP filtering applies only to future data collected after you configure the IP ranges. Previously collected data is not affected. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **Site Preferences** | **Intelligence Platform**. 2. In **IP Ranges to Filter:**, enter one or more comma-separated [IPv4 CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) blocks (for example, 192.168.1.0/24). 3. Click **Apply**. # Configure Crypto Settings for an eCDN Zone Configure SSL/TLS and cryptography settings for a B2C Commerce eCDN zone, including Transport Layer Security (TLS) version and HTTP Strict Transport Security (HSTS), using the Configure Zone screen in Business Manager. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) Use the Crypto tab to manage TLS, certificates, and HSTS for an eCDN zone. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If a tab doesn't fit on screen, it appears under a **More** dropdown on the right. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note On SCAPI zones, the Crypto tab is read-only on the Production instance. The Certificates table is visible, but you can't change TLS 1.3, HSTS, or certificate settings. Salesforce manages certificates for SCAPI zones. The SCAPI zone doesn't appear in Business Manager or the CDN API on Development or Staging. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). 1. In Business Manager, click the App Launcher, and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the zone you want to configure and select **Configure Zone** from the dropdown menu. 3. Select the **Crypto** tab. **Crypto tab — SSL/TLS settings and certificates** ![Configure Zones Crypto tab showing SSL/TLS Settings, Certificates list, HSTS Settings, and the Under Attack Mode toggle in the header.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_overview_v2.png) **Crypto tab — certificate detail expanded** ![Crypto tab Certificates section with a certificate row expanded to show validation method, type, hosts, issuer, signature, upload date, and minimum TLS version.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_certificate_details.png) 4. In the SSL/TLS Settings section, set **Enable TLS 1.3** on or off. TLS 1.3 is supported by all major browsers. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note If your zone has no custom certificates, you can't change the TLS 1.2 minimum requirement. If you click the toggle, a confirmation appears and the toggle reverts. **TLS 1.3 setting in SSL/TLS Settings** ![SSL/TLS Settings section showing the Enable TLS 1.3 toggle with the state indicator in the Crypto tab.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_tls13.png) 5. Review certificates in the **Certificates** table. | Column | What it shows | | --- | --- | | Hostname | The hostname or wildcard covered by the certificate. | | Cert Status | Certificate state, such as Active, Active - Expires Soon, Pending, or Initializing. | | Hostname Status | Whether the hostname has been verified at the edge. | | Expires On | Certificate expiration date. | The first 12 certificates are shown. Click **View All** to see the rest. 6. Manage certificates as needed. 1. To add a certificate, click **New Certificate** and follow the prompts. 2. To replace or delete a certificate, open the actions menu on the certificate row, and then select **Edit** or **Delete**. A confirmation dialog appears before deletion. 3. To view certificate details, click the chevron at the start of a certificate row. The expanded view shows certificate type, hosts, issuer, validation method, expiration details, and any TXT or CNAME records or verification buttons required for unverified certificates. **Certificate details expanded in Certificates table** ![Certificates table with a row expanded to display additional certificate and hostname verification details.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_certificate_details.png) 7. Configure HSTS. 1. Expand the **HSTS Settings** section. 2. Set **Enable HSTS** on and, in the confirmation dialog, click **Enable**. The dialog explains the consequence before you continue. 3. Click the edit pencil and configure **Time and Unit**, **Include Subdomains**, and **Preload**. 4. Click **Save**. ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_important.png) Important HSTS can't be turned off manually. It expires only when the configured max age passes. Make sure your full site is served over HTTPS before enabling HSTS. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note HSTS is opt-in and not enabled by default. If you don't see HSTS settings in the Crypto tab, contact your Salesforce representative. **HSTS settings with editable max-age options** ![HSTS Settings section showing enabled state, time value and unit, Include Subdomains, Preload options, and Save and Cancel actions.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_hsts_edit.png) **HSTS state indicators in Crypto tab** ![HSTS Settings showing the enabled toggle and edit icons for time and unit fields in the Crypto tab.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_hsts_enabled.png) **HSTS informational message when disabled** ![HSTS Settings with disabled state and informational banner explaining that HSTS expires after max age and can't be manually disabled.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_crypto_hsts_disabled.png) #### See Also - [eCDN Zone Security Rules](https://help.salesforce.com/s/articleView?id=cc.b2c_ecdn_security_rules.htm&release=264.0.0&type=5 "Use the Security Rules tab on the Configure Zone screen to protect a B2C Commerce embedded CDN (eCDN) zone with web application firewall (WAF) managed rulesets, realm and zone security rules, custom firewall rules, and rate limiting. Learn what each control does, which zone types are eligible, and how traffic from trusted sources bypasses security checks.") # Configure Custom Error Pages for an eCDN Zone Set custom HTML error pages for 500-class and 1000-class errors generated by the embedded CDN for a B2C Commerce zone, using the Configure Zone screen in Business Manager. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Custom error pages aren't available on SCAPI zones. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) When the embedded CDN generates a 500-class or 1000-class error, it can display a custom HTML page instead of a generic error. The custom page must be hosted at a publicly accessible URL on your B2C Commerce instance and must embed a specific error token so the CDN can render error details. 1000-class errors include Cloudflare 100x conditions such as DNS resolution failures and security challenge failures. Use Custom Pages for these scenarios: - **500 Class Errors** - shown when a web server is unable to process a request (HTTP 5xx). - **1000 Class Errors** - shown when domain configuration, security settings, or origin setup prevents eCDN from completing the request. - **I am under attack Page** - interstitial challenge shown to every visitor when Under Attack Mode is on. 1. In Business Manager, click the App Launcher, and then select **Administration** | **Sites** | **Embedded CDN Settings**. 2. Locate the zone you want to configure and select **Configure Zone** from the dropdown menu. 3. Select the **Customization** tab. **Customization tab — Custom Pages** ![Configure Zones Customization tab showing the Custom Pages section with URL fields and Publish buttons for 500 Class Errors, 1000 Class Errors, and the I Am Under Attack page, each requiring an embedded token in the custom HTML page](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_customization.png) 4. In each custom page section, confirm your HTML page contains the required tokens listed at the top of the form. Without required tokens embedded in the HTML, the page can't be published. 5. In the **Custom Pages: 500 Class Errors** section, enter the URL of the HTML page you want displayed when the embedded CDN generates a 500-class error. The HTML page must embed the 500 error class token. For example: ```

::CLOUDFLARE_ERROR_500S_BOX::

``` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The token is case-sensitive and must match exactly. 6. In the **Custom Pages: 1000 Class Errors** section, enter the URL of the HTML page you want displayed when the embedded CDN generates a 1000-class error. The HTML page must embed the 1000 error class token. For example: ```

::CLOUDFLARE_ERROR_1000S_BOX::

``` ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note The token is case-sensitive and must match exactly. 7. In the **I am under attack Page** section, enter the URL for the challenge page shown while Under Attack Mode is enabled. 8. Click **Publish**. The eCDN downloads the error page template from the URL you provided and stores it in the CDN infrastructure, making it available for all subdomains in the zone. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note Repeat the Publish step whenever the error page template changes. Publishing is required each time to push the updated template to the CDN. 9. (Optional) Use additional page actions as needed. - **Preview Default** shows what eCDN serves when no custom URL is configured. - **Set to Default** reverts to the eCDN default page and appears only when a custom URL is currently published. **Custom Pages actions for publish, preview, and defaults** ![Custom Pages section showing 500 Class Errors, 1000 Class Errors, and I am Under Attack page URL fields with Preview Default, Set to Default, and Publish actions.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_ecdn_configure_zone_custom_pages_actions.png) #### See Also - [eCDN Zone Notifications](https://help.salesforce.com/s/articleView?id=cc.b2c_configure_zone_notifications.htm&release=264.0.0&type=5 "Get notified when eCDN events on your B2C Commerce storefront that matter to you happen, such as a Logpush job failure on a PCI-bound zone, a security incident, or a configuration change, without having to watch dashboards. The Notifications tab on the Configure Zone screen lets you configure webhook destinations and wire them up to one or more zones.") # Configure Custom Page Attributes for Page Designer If the developer created custom page-level attributes for a B2C Commerce Page Designer page type, you can configure the attributes under Page Settings. For example, a page can have custom attributes for Title, Image, and Description. Use those page-level custom attributes to specify what appears in the search results for a page. 1. From the visual editor, open the page. 2. Click the Page Settings icon. ![Icon that opens Page Settings window.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_page_designer_page_settings_icon.png) 3. Click the **Custom Attributes** tab. The Custom Attributes tab is available only if the developer created page-level attributes for the page type. 4. Enter values for the custom attributes. 5. Click **Save**. # Configure DKIM for B2C Commerce Major email providers, including Google, Microsoft, and Yahoo, now require DomainKeys Identified Mail (DKIM) authentication. Configuring DKIM is essential to ensure that your emails reach customer inboxes and aren’t rejected or flagged as spam. Configure DKIM to verify that the emails come from the domain that they claim to be from. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) 1. Generate a private-public key pair, a .p12 key, for DKIM. See [Generate a Private-Public Key Pair](https://help.salesforce.com/s/articleView?id=cc.b2c_generate_private_key.htm&release=264.0.0&type=5 "DKIM authentication requires you to specify a private key in Business Manager in B2C Commerce. Generate a private key in a terminal with these commands."). 2. Import the .p12 key for DKIM. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Operations** | **Private Key and Certificates**. 2. Click **Import**, and then select the p12 key. 3. Provide an alias and, optionally, a password. Save the key. 3. Enable DKIM and specify a DKIM selector in Email Settings. The DKIM selector is a unique, user-defined string within the DKIM email signature that references a specific public key within your DNS records. It’s used to differentiate multiple DKIM keys on the same domain. The selector forms the prefix for your DNS TXT record, which is formatted as: .\_domainkey.. For example, if the email address is noreply@notifications.example.com and the selector is myselector, the DNS TXT record label is myselector.\_domainkey.notifications.example.com. 1. In **Administration** | **Operations** | **Email Settings**, select **Enable DKIM**. 2. For Private RSA key, select the .p12 key that you imported. 3. Enter a name for the DKIM selector. 4. Click **Apply**. Keep these considerations in mind. - The domain isn’t manually configured. Instead, it’s the same domain used when sending email. For example, noreply@notifications.example.com. - An instance can have only one private key and selector, but the same public key and selector can be used across multiple instances. - The same private-public key pair can be used across multiple domains, even on the same instance. This diagram shows that an instance has only one active private key and selector at a time for DKIM. But this single private key can be associated with multiple hostnames via the Manage Hostnames interface. ![A private key can be associated with multiple hostnames.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_dkim_multiple_domains.png) This image shows that all storefronts share the same underlying private key configured on the same instance. When hosting multiple storefronts on the same production instance, you must duplicate the public DNS TXT records for each unique subdomain. ![Multiple storefronts can share the same private key configured on the instance.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/b2c_dkim_multiple_storefronts.png) 4. Configure the DNS record for your email domain in the DNS hosting provider or domain registrar. Update the value of the DKIM TXT record entry in your DNS record. For example, with a selector named myselector for the domain notifications.example.com, enter the TXT entry in the record: `myselector._domainkey.notifications.example.com` The content of the TXT entry is a long variable. For example, `"v=DKIM1; k=rsa;" "p=MIIBIjANBgkqhk…` The TXT record is required to store the public key. ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note A single string within a DNS TXT record can’t exceed 255 characters. A TXT record can hold multiple strings. If your DKIM record is longer than 255 characters, split it into multiple quoted strings within the same record. To split strings, use double-quoted characters. When an email server queries your DNS, it automatically concatenates those quoted strings into one long, unbroken public key. 1024-bit RSA keys don’t require splitting, but 2048-bit RSA keys do. #### See Also - [Support for DomainKeys Identified Mail (DKIM) Authentication](https://help.salesforce.com/s/articleView?id=cc.b2c_support_for_dkim_authentication.htm&release=264.0.0&type=5 "Salesforce B2C Commerce provides an out-of-the-box solution on our first-party Point of Deployment (POD) that customers can use for their email requirements. This service provides support for DKIM and SPF authentication. DKIM is an email authentication protocol that adds a cryptographic digital signature to outgoing emails. With DKIM, receivers can verify that the domain owner authorized the email and that it wasn’t altered in transit. DKIM helps reduce spam and phishing emails.") - [_Salesforce Help_: Private Keys and Certificates in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_certificates_and_private_keys.htm&language=en_US) - [_Wikipedia_: DomainKeys Identified Mail](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) - [_Wikipedia_: Sender Policy Framework](https://en.wikipedia.org/wiki/Sender_Policy_Framework) - [_Wikipedia_: DMARC](https://en.wikipedia.org/wiki/DMARC) # Configure Duo as an Authentication Provider This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Duo. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) The SSO support for B2C Commerce is done via core-licensed products and requires three connections. - Duo - Salesforce Platform - Account Manager To enable Salesforce SSO and enable Salesforce provisioning with Duo, use this [Duo documentation](https://duo.com/docs/sso-salesforce#:~:text=Enable%20SSO%20in%20Salesforce,-Add%20Duo%20Single&text=In%20the%20Salesforce%20Classic%20UI,Click%20Save.). The Duo documentation also includes step-by-step instructions and screenshots on how to configure Duo as an authentication provider in Salesforce. #### See Also - [Set up and Integrate OKTA with Salesforce Identity](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_integrate_okta.htm&release=264.0.0&type=5 "This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Okta.") - [Configure an Azure AD SAML Provider](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_configure_azure.htm&release=264.0.0&type=5 "This guide serves as a general integration overview for B2C Commerce. For precise instructions, Salesforce advises consulting the most up-to-date integration documentation specific to your Identity Provider (IDP), such as Azure IDP.") - [Account Manager Workflow](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_workflow.htm&release=264.0.0&type=5 "Learn how data flows through the configurations when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") - [Configurations](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_sso_design_considerations.htm&release=264.0.0&type=5 "Keep these design considerations in mind when you integrate B2C Commerce Account Manager and other Salesforce applications with your identity provider.") # Configure FAQs using Agentforce Data Libraries To configure Site FAQs, use an Agentforce data library that contains files about your site. The B2C Shopper Agent can use multiple data libraries that contain files and knowledge articles. - **[Complete Prerequisites for Product and Site FAQ Data Libraries](https://help.salesforce.com/s/articleView?id=cc.b2c_shopping_agent_faq_prerequisites.htm&release=264.0.0&type=5)** To allow the B2C Commerce Shopper Agent to use Agentforce Data Libraries (ADLs), first set up the libraries with your source content. The Shopper Agent can use data libraries with uploaded files and Salesforce Knowledge articles. - **[Specify Data Libraries for Product and Site FAQs](https://help.salesforce.com/s/articleView?id=cc.b2c_shopping_agent_product_faq_file_upload.htm&release=264.0.0&type=5)** Edit the B2C Commerce Shopper Agent FAQ subagent instructions to point to your data libraries. Configure the Product FAQs and Site FAQs subagents separately. These instructions assume that you have set up the data libraries with uploaded files and knowledge articles. # Configure HSTS for an eCDN Zone Enable HTTP Strict Transport Security (HSTS) for a B2C Commerce eCDN zone to make web browsers connect to your domain over HTTPS only. Set the max age, choose whether HSTS applies to subdomains, and optionally enable preload. [Which Salesforce Commerce Product Do I Have?](https://help.salesforce.com/s/articleView?id=commerce.comm_what_product.htm&language=en_US) ![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_note.png) Note HSTS isn't available on SCAPI zones. See [SCAPI Zone Support for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_scapi_zone.htm&release=264.0.0&type=5 "A SCAPI zone is the Salesforce-managed eCDN zone that fronts Salesforce Commerce API (SCAPI) traffic. Starting with B2C Commerce 26.10, the Production instance includes a subset of eCDN security controls and analytics for this zone in Business Manager and the CDN API, with no support case required."). Before you enable HSTS, make sure your site is fully HTTPS-ready. Because of how the max age works, you can't simply switch HSTS off later. For details, see [HTTP Strict Transport Security (HSTS) for eCDN](https://help.salesforce.com/s/articleView?id=cc.b2c_manage_hsts.htm&release=264.0.0&type=5 "HTTP Strict Transport Security (HSTS) secures your B2C Commerce site by instructing web browsers to access your domain using only HTTPS, which prevents downgrade attacks. You enable and disable HSTS per eCDN zone in Business Manager."). ![Warning](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/images/icon_warning.png) Warning If your site contains insecure content and HSTS is enabled, that content doesn't display in your shoppers' web browsers, potentially making your site impossible to view. To test your site, enable HSTS for short periods, starting with a few seconds and then longer. 1. To enable the HSTS option, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Global Preferences** | **Feature Switches** and enable **HSTS settings for eCDN zones**. 2. Select **Administration** | **Sites** | **Embedded CDN Settings**. 3. Locate your zone and select **Configure Zone** from the dropdown menu. 4. On the Crypto tab, click **Enable**. HSTS isn't active on your site until you set a max age and click **Apply**. Before you proceed, review the confirmation dialog text: "Enable HSTS for this zone? Make sure your site is fully HTTPS-ready before continuing." 5. Set the max age. 6. Select whether HSTS applies to subdomains. 7. Select whether to enable preload. Although there are several steps to officially register your site for preloading, some web browsers enable preload once they've received the preload tag in the header. Enable preload only after your entire site is secure. Preload can take up to a month to disable. 8. Click **Apply**. # Configure Login Settings for B2C Commerce In Business Manager, it's important to configure user password restrictions and login lockout policies. All the possible values make sure compliance with the Payment Card Industry Data Security Standard (PCI DSS). As part of Unified Authentication, Account Manager manages all the password policies. See [Edit an Organization in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_account_manager_edit_organization.htm&language=en_US&type=5) for details. To comply with the PCI DSS standards, Business Manager logs users out after 15 minutes of inactivity. You can't change this timeout value. 1. In Business Manager click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Security**. 2. On the User Authentication tab, configure how many times a user can enter an incorrect login before B2C Commerce locks them out, and for how long. Both the max and the default value is six. By default, B2C Commerce locks the user out for 30 minutes. If you select **Forever**, the account remains locked. 3. Set the number of days after which a user is required to change their password. The default is 60 days. 4. Set the number of days before B2C Commerce deactivates an unused account. The default is 90 days. Seven days before deactivation, the user is sent an email, instructing them to log in to their account to avoid deactivation. The user is sent a second email one day before deactivation. If you choose less than 10 days of inactivity, the first email is sent three days before deactivation instead of seven. 5. Indicate whether a user is required to answer a security question to change their password. 6. For Enforce Password History, specify how many passwords from a user's password history B2C Commerce remembers. B2C Commerce checks each new password against this history to make sure the user is using a unique password. The default is to remember four passwords. Password history isn't saved until you set this value. 7. Configure the character requirement settings for passwords. See Business Manager Password Protection for limits and default values. 8. Click **Apply**. # Configure Multiple Promotion Qualifiers for B2C Commerce Create promotions that require the shopper to meet multiple qualifying conditions. For these qualifiers to apply, create a campaign and configure the promotion qualifier settings for that campaign. Use the qualifiers and promotions you configured to create a campaign. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **site** | **Merchant Tools** | **Online Marketing** | **Campaigns**. 2. Open a campaign. 3. Under Experiences, expand the Promotions. 4. In the `Required Qualifiers` column, select the conditions. - **Any** (default)—the customer must satisfy at least one of the selected qualifiers (coupon, source code, or customer group). - **All**—the customer must satisfy all the selected qualifiers (coupon, source code, and customer groups). #### See Also - [_Trailhead_: Salesforce B2C Commerce Campaigns and Promotions](https://trailhead.salesforce.com/en/content/learn/modules/b2c-campaigns-and-promotions) # Configure OAuth2 Providers for B2C Commerce Use Business Manager to configure OAuth2 providers, but you must first register your site with your selected providers. 1. Click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration** | **Global Preferences** | **OAuth2 Providers**. 2. To create a provider, click **New** or **New from Template**. To edit an existing provider record, click its ID. Google Plus has been deprecated, so don’t use the Google Plus template. For instructions on using Google, including migrating from Google Plus, see the Google developer documentation. 3. On the Global Preferences OAuth2 Providers Edit page, edit or create the following details:
Client ID Obtain from the provider.
Client Secret When a client registers with an OAuth2 provider, the provider issues the client a client secret, which is considered private and must be kept confidential. The value of this field is kept encrypted in the database (but is in plain text when exported from the database, or imported into the database).
Scopes Corresponds to the scopes available for the OAuth2 provider and configured for the website when registering the website on the provider's website. The scopes are provider-specific and aren’t standardized. For more information, see section 3.3 Access Token Scope in the OAuth2 specification.
Authorization URL URL of the provider where the initial OAuth2 handshake occurs. For more information, see section 3.1 Authorization Endpoint in the OAuth2 specification.
Token URL URL of the provider where the token is requested from. For more information, see section 3.2 Token Endpoint in the OAuth2 specification.
User Info URL URL of the provider of the user information (first name, last name, email, and so on). For more information, see section 7 Accessing Protected Resources in the OAuth2 specification.
User Info URL Access Token Name

Specifies the name of the query parameter.

When a request to the User Info URL is made, the access token value is attached to the request as a URL query parameter value. This parameter value specifies the name of the query parameter. For most providers, it’s access_token, but it's different for some (for example, for LinkedIn, it’s oauth2_access_token).

Redirect Pipeline Node After the OAuth2 provider grants access to the client application, the provider returns control to the specified pipeline node.
4. To save your changes, click **Apply**. # Configure Organization Locales for B2C Commerce Salesforce B2C Commerce is structured as an organization containing one or more sites (storefronts). Define localization settings for both entities. Add new data locales and transfer, add, delete, and update regional settings using Site Import/Export. After you configure organization locales, configure site locales. 1. To assign the organization's default language, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Organization > Organization Profile**. 1. Select the default UI language. 2. Select the default data language. 3. Click **Apply**. 2. To activate and deactivate the locales available in the instance, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Locales**. Only activated locales can be used in the storefront and appear in language select boxes in the Business Manager. The default locale is mandatory and can't be deactivated. B2C Commerce treats the en, de, and es language-specific locales the same as any other locale. They can only be recognized and related to their respective country-locales (such as en\_US and en\_GB) via a language code (such as en). Activate or deactivate them and edit their regional settings. You can also select them as a site's default or allowed locale, or a Business Manager's user preferred locale. Regional settings configured on the default locale apply to Business Manager. 1. Select a locale and click **Apply** to activate it. 2. Deselect a locale and click **Apply** to deactivate it. 3. Click a Locale ID. 4. On the General tab, select the fallback locale. This is the locale that is used if the assigned locale isn't available. 5. On the General tab, to overwrite the default numeral system defined by the CLDR data for this locale, select a numeral system. 6. Click the **Regional Settings** tab to define how currency appears for the locale. Regional settings provide format patterns for locale-sensitive operations such as: - Date/time - Number format - Currency format The format for numbers is the Java DecimalFormat. The format for date and time is the Java SimpleDateFormat. For information about these formats, refer to the following sites. - [https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html](https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html) - [https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html](https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html) B2C Commerce is pre-defined with default regional settings for a subset of the locales. Change regional settings for each locale. Regional settings are globally defined (not site-specific). Use these characters to define currency number, separator, and currency symbol placement: (# , . \*). Use the \* symbol to specify where the currency symbol ($, ₤, or €) is placed. For example, look at the Long Currency Positive Pattern field for en\_US. The \* character indicates where the dollar symbol is placed. 3. To add new locales, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Administration > Global Preferences > Locales**. By default, the country locale (for example, en\_US) inherits data from the respective language locale (en), and the language locale (en) inherits from the locale default. Configure locale inheritance. Disable the fallback behavior for each locale. For example: - A product description is in the en locale - For the en locale, the fallback is disabled and there’s no description for that product - Nothing is returned For each locale, you can configure the fallback to a different locale. For example, you can configure en\_US to fall back to default instead of to en. If you configure a locale as the fallback for another locale, you can't delete it; an error message appears. For example: - You configure en\_US > en > default. - You can't delete en because it's the fallback for en\_US. - Similarly, if you attempt to import en in delete mode, an error message appears in the import log. 1. Click **Add**. 2. On the New Locale page, enter the Language Code and Country Code, for example, fr and NL respectively, for the French locale: French - Netherlands (Locale code _fr\_NL_). 3. Click **Apply**. 4. Click **< Site Development > Site Import & Export**. 1. In the Data Units to Export section, expand Global Data. 2. Select **Locales**. 3. Enter your export file name and click **Export**. # Configure Page Meta Tags in B2C Commerce Create page meta tags, which can be used within catalogs and libraries to create rule base page meta tag content. You can create [page meta tags](https://help.salesforce.com/s/articleView?id=cc.b2c_page_meta_tags.htm&release=264.0.0&type=5 "Page meta tags are used in HTML documents to provide structured data about a web page. Meta tags are snippets of text that don't appear on the page itself, but in the page’s code, describing a page’s content. Common tags are title, robots, description, and social tags such as open graph tags."), which can be used within catalogs and libraries to create rule base page meta tag content. 1. In Business Manager, click App Launcher ![App Launcher](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-cc-b2c_merchandiser_administrator-264-0-0-production-enus/ea76f372-6cfa-42a6-8e7c-05c6df7abed8/cc/b2c_merchandiser_administrator/images/appLauncher.png), and then select **Merchant Tools** | **site** | **SEO& Discoverability** | **Page Meta Tag Rules**. 2. To define a new meta tag, click **Add**. 3. In the Create Page Meta Tag dialog: 1. Enter the Meta Tag ID. Create a maximum of 50 definitions. The ID begins with a letter, followed by any of the following characters: letters, digits, hyphens, underscores, colons, and periods. The maximum length is 100 characters. 2. Select the Meta Tag Type: _Name_, _Property_, _Title_, or _JSON-LD_. The _title_ type can only be used with the _title_ ID. The _JSON-LD_ type outputs Schema.org structured data in a `