Indexing dynamic prices

Some commerce implementations, typically in B2B scenarios, rely on external pricing systems to determine customer-specific prices at checkout. For example, a vendor’s pricing may vary based on buyer groups, contract types, or specific store locations. These systems often calculate prices dynamically, making it difficult or impractical to index final or buyer-specific prices in the product source.

In Coveo for Commerce implementations, ec_price is a required standard field that’s used to store the price of a product. The information it contains is used in various Coveo features, including Coveo Machine Learning (Coveo ML) models, merchandising rules, and search interfaces.

However, some vendors may face constraints in indexing content for the ec_price field due to the nature of their pricing systems.

This article explains the importance of indexing ec_price, outlines the consequences of not indexing this field, and suggests alternative approaches.

Why you should index ec_price

Indexing the ec_price field lets you take full advantage of Coveo for Commerce features such as Coveo Machine Learning (Coveo ML), merchandising rules, and price sorting on search pages and product listing pages.

  • Coveo Machine Learning (ML): The information in the ec_price field is used to train some Coveo ML models. This value is used by both the Session-Based Product Recommendations (SBPR) model and the Cart recommender strategy of the Product Recommendation (PR) model to optimize relevance and recommendations. Avoid using these ML capabilities if you don’t index the ec_price field.

  • Merchandising rules: The ec_price field is used in merchandising rules in the Coveo Merchandising Hub (CMH) to boost, filter, or demote items based on price ranges. For example, you can create a merchandising rule to boost items under $50. If you don’t index the ec_price field, you can’t use price values to define merchandising rules.

  • Search and product listing interfaces:

    • Price values can be used as a facet to filter search results based on price ranges. If you don’t index the ec_price field, your users won’t be able to filter search results based on prices.

    • The value of the ec_price field is used to display product prices in Coveo-powered user interfaces. If you don’t index the ec_price field, search result templates on search and product listing pages won’t be able to include a price value.

About reporting

Coveo’s revenue-based reporting features, such as CMH reports or the Advanced Reports in the Coveo Administration Console, don’t rely on the indexed ec_price field. They’re calculated based on purchase events, using the price values provided at the time of purchase.

This means revenue reporting will function as expected if you send only the price values representing the actual price paid by the customer in the purchase event.

Alternative approaches

When it’s not feasible to index exact pricing, consider one of the following approaches based on your goals:

  • Index a fallback price: If you can’t index the actual customer-specific price, consider indexing a fallback value such as the Manufacturer’s Suggested Retail Price (MSRP) or a default/base price. This allows ML models to function effectively while accommodating your pricing system limitations.

    If you choose this option, this value is available to use for filtering and sorting in Coveo-powered interfaces by default. This means the price displayed in the UI may differ from what the customer actually pays. To avoid this, make the ec_price field non-searchable by ensuring the following field settings are unselected:

    • Facet

    • Sortable

    • Search operator

    • Displayable in results

  • No indexing: If you can’t index the ec_price field, you can choose not to index it at all. However, you won’t be able to use: