Using Coveo and Sitecore XM Cloud

How to transform Coveo for Sitecore into part of your composable stack for Sitecore XM Cloud

April 20, 2023

By Dan Cruickshank

Integrating XM Cloud and Coveo for Sitecore

I have been a long-time user of Coveo and Sitecore. I first started using Sitecore in 2007 and Coveo in 2009. I would hazard to say that I’m pretty familiar with both tools as I’ve been awarded 10 Sitecore MVPs and 2 Coveo MVPs. I’m hoping that with all that baggage, I’m in a position to provide some insights.

Coveo has undergone significant transformation, particularly with the introduction of SaaS and the Coveo Cloud Platform, which has accelerated innovation and made implementation easier. Similarly, Sitecore is transforming their core CMS/DXP offering into an enterprise SaaS solution called XM Cloud, and I anticipate a similar transformation in terms of innovation and implementation.

But there is some confusion afoot.

Is there a version of a Coveo for Sitecore for XM Cloud? Are XM Cloud and Coveo even compatible? What do we do with our investment in Coveo for Sitecore? What are options in moving forward?

I assure you that there is still a viable (and even improved) path to leveraging Coveo with XM Cloud. Let's get into it.

Coveo Platform vs Coveo For Sitecore

To lay a foundation for term, when we say Coveo or Coveo Platform we’re referring to Coveo’s SaaS product and technology. Whereas Coveo for Sitecore refers to module thats integrates Coveo Platform capabilities into Sitecore.


Can You Use Coveo With XM Cloud?

Yes, you absolutely can continue to use Coveo with XM Cloud. In fact, we are already using the Coveo Platform on a number of our XM Cloud project

To be sure, there is a small distinction here. We are not using the Coveo for Sitecore module, but we’re using the Coveo Platform.

We’re doing a lighter, more composable implementations that still take advantage of Coveo’s relevance, A.I. and search platform. We are not using the Coveo for Sitecore as a product however.

To understand why not, let’s take a look at Coveo for Sitecore any why it doesn’t fit as well with XM Cloud.

What Is Coveo for Sitecore?

Coveo for Sitecore deeply integrates with the traditional Sitecore XP CMS, creating a seamless bridge between building in Sitecore and using Coveo. This integration covers various aspects, such as:

  • Configuration files
  • Renderings
  • .NET MVC
  • Experience Editor
  • Experience Database
  • Administration (Control Panel)
  • User Security
  • Indexing
  • Publishing
  • Analytics

Coveo for Sitecore can handle a variety of tasks, including search page building, content indexing, custom data transformations, relevance adjustments, analytics tracking, user security integration, role integration, and page personalization.

Semi-recently the Coveo for Sitecore Hive Framework has been developed to allow search interfaces and configurations to be managed in Sitecore with a great amount of granularity.

There is also a module that allows Coveo for Sitecore to be added SXA (Sitecore Experience Accelerator) for some ease of use as well.

It’s a module that takes advantage of all available features in Sitecore, and uses them to create a 100% CMS-integrated (not just website-integrated) search experience.

Why Coveo for Sitecore & XM Cloud Are Not Compatible

There are several architecture changes in XM Cloud that pose a challenge for the current (April 2023 and previous) versions of Coveo for Sitecore.

Changes in XM Cloud architecture that affect Coveo for Sitecore:

  • As XM Cloud evolves into a SaaS product, it is becoming a more closed ecosystem. While XM Cloud can be extended, deep integration is not desirable.
  • XM Cloud may auto-update, and Coveo for Sitecore may suddenly become incompatible. When a new version of Sitecore is released, a compatible version of Coveo for Sitecore always takes additional time to be released. More than ever the products will move at their own speed.
  • XM Cloud is a headless CMS and no longer uses .NET MVC for the website front-end. The preferred front-end will be based on Next.js.

These issue are present in any deeply intertwined solutions but are more pronounced because of shift Sitecore’s XM Cloud architecture and overall product delivery (SaaS).

There is an easy solve for all of these issues. Embrace the "composable" approach across your stack, facilitating integrations with APIs and loose-coupling instead of tight, monolithic integrations. Use the Coveo Platform as a composable piece of your tech stack.


Benefits of XM Cloud & Coveo

Now that we’ve looked at the challenges with traditional Sitecore and Coveo for Sitecore, lets look at the benefits we’ll get of using the Coveo Platform with XM Cloud:

  • Composability: With a loosely-coupled integration, you’ll be able to re-use the same search across multiple websites and even CMS platforms with great ease.
  • No more upgrades: Coveo Platform does not require upgrades to stay compatible with XM Cloud. In the Coveo for Sitecore model, it is required to be upgraded with most Sitecore upgrades.
  • Simpler troubleshooting: By moving to XM Cloud and the Coveo Platform, there are less moving pieces and troubleshooting issues is much easier. (see diagrams below)
  • Access Coveo’s features directly, not through Sitecore: Business users will be encouraged to work directly in the Coveo platform. This direct access will highlight more possibilities, foster deeper understanding and help users get more from Coveo.
  • Future proof: In changing to the Coveo Platform,
  • Lower total cost of ownership: Getting auto-upgrades from Coveo Platform, not being forced to upgrade alongside Sitecore and more (simpler) options for indexing content and building search pages your TCO should be lower.

Diagram: Coveo for Sitecore vs XM Cloud + Coveo Platform

I’ve put together some simple diagrams to show the relative complexity of the indexing website content using Coveo for Sitecore and XM Cloud with the Coveo Platform.

Indexing using Coveo for Sitecore

There are quite a few steps happening here! Firstly there is a Coveo module installed into Sitecore, essentially becoming an extension of the CMS. Any changes to content in Sitecore whether saving or publishing automatically processed by Coveo for Sitecore. Then when content is published, Sitecore pushed content to your website but data & configurations are also pushed to the Coveo Platform. The Coveo Platform then crawls specific pages on your website, targeting the content you’ve just published. The HTML of your page is then processed and added to the “documents” in the Coveo Platform.

Indexing using Coveo Platform

When we use the Coveo Platform, you can see that the Sitecore CMS can be left out of the picture. A sitemap or a crawling connector is used index the site. The logic to control what is indexed and extract additional information from the pages is controlled directly in the Coveo platform.


Options For Using Coveo on XM Cloud

To upgrade to using Coveo on XM Cloud we need to address two things:

  • #1: Indexing your content
  • #2: Building your search pages

Coveo for Sitecore provides a tightly integrated approach, embedding both content indexing and search page creation directly into Sitecore.

However, by taking control and using the best-fit method for indexing content and creating search interfaces, we can achieve the same (or better) results.

Although the approach is slightly different, in my opinion it leads to an improved outcome while still having a great Coveo-driven search experience.


XM Cloud: Indexing Your Content To Coveo Using Connectors

When using Coveo For Sitecore, when items are published they’re converted and sent to Coveo as documents. It’s actually quite a complex process. It involves processing security, pushing field mappings, processing and computing fields, pushing data into Coveo, then finally the Coveo Platform does a web crawl of the content with some extra process.

We can do something simpler.

Coveo has a wide range of integrations and connectors that allow you to index virtually anything.

For our XM Cloud implementations our preferred connectors are the Web Connector and the Sitemap Connector. Once our connector is setup we need to map its data to fields into Coveo.

Web Connector

Allows us to crawl the site, target URLs, extract content from the page, do pre-processing & post-processing of content & customize indexing behaviour and frequency.

Sitemap Connector

Very similar to the web connector except it references a sitemap.xml file generated by your site instead of a crawling process to discover your content.

REST API and Push Connector

Two other frequently used connectors are REST API and Push. The REST API Connector allows you to use an REST API as a source and iterate through the data as a source. The Push Connector allows you send JSON objects in to represent documents for a source.

Coveo Platform and Experience Edge

A key part of XM Cloud is Experience Edge, which uses GraphQL queries for retrieving data and content from Sitecore. You can use this Edge + GraphQL with Coveo's Rest API or Push connector to add content to Coveo that does not exist as pages. For example, if you want to perform a people search but each person does not have a page to index.

Mapping Our Fields

In an XM Cloud implementation we can manage and map our data from our sources to fields directly in the Coveo Platform.

By contrast, in Coveo For Sitecore we’d define our custom fields and how they were to be processed in Sitecore config files and then Sitecore would push that configuration into the Coveo Platform.


XM Cloud: Building Coveo Search Pages

Coveo for Sitecore uses integrated MVC components that utilize Coveo's JavaScript Search framework (JSUI). All Sitecore configurations and interface building options are simply wrappers around JSUI features. By working with Coveo on XM Cloud directly, we can bypass the need for Coveo for Sitecore as an intermediary.

Let's explore modern methods of building search pages / user interfaces with Coveo on XM Cloud.

Comparing Approaches To Build Search Interfaces

I’ve created a diagram showing 4 different ways to create search experiences in the Coveo Platform and mapping them to flexibility vs time to develop.

Coveo Implementation Graph

You can see how in my view Coveo for Sitecore offers minimal flexibility and an increased time to develop. When I say flexibility, there is a degree of ease-of-use factored in as well. While in some ways Coveo for Sitecore is very flexible, the idea that that interfaces are supposed to be built and managed using Sitecore using JSUI as its library limits its ultimate flexibility.

Coveo Headless

Coveo Headless works as a middle-layer or middle for front-ends, acting as the communication layer between your search UI and Coveo’s APIs. Headless provides an engine to manage states and features, as well as controllers & actions to interact with those features.

Headless is JavaScript based. It’s recommended to use if you’d like to build your own search interface and have granular control.

For example you might leverage the Material Design UI Kit for your front-end or your favorite React component library and connect them to Coveo’s back-end via Headless. This gives you total control and freedom.

Coveo Atomic

Coveo Atomic is a library of web components (which is powered by Coveo Headless) using to build search interfaces on Coveo. You can check out a list of Atomic components available and see that operate in a composable manner, allowing you to add to your interface what you need.

The Atomic library contains components including Did You Mean , Facets, Load More, No Results, Paging, Search Box and you have the ability to create your own Atomic components to extend the library to your needs.


Feature Comparison: Coveo Platform vs Coveo for Sitecore

To help bring this together I’ve assembled this table to highlight some similarities and differences between using the Coveo Platform with XM Cloud and Coveo for Sitecore.

Feature Coveo Platform Coveo for Sitecore
Default Connector Sitemap, Web Crawl Coveo for Sitecore module
Multiple Sources Yes Yes
Architecture Composable Deep Integration
Upgrades Not necessary Linked to Sitecore upgrades
Field Mapping Yes, in Coveo Platform Yes, in Sitecore config
Analytics Yes Yes
Re-indexing Scheduled Integrated with publishing
Security Customization Integrated with Sitecore user roles
Metadata Extraction Targeted CSS selectors & JSON configuration in Coveo Platform Computed fields in Sitecore config
Processing Extensions scripts in Coveo Platform Computed fields in Sitecore config
Query Pipelines Yes Yes
Search Interface Development Coveo Atomic, Coveo Headless, React-based. (Coveo APIs) Coveo Hive, MVC, JSUI (Sitecore-driven)
Multi-language Yes Yes
Machine Learning Yes Yes
A/B Testing Yes Yes
Query Suggestion Yes Yes
Recommendations Yes Yes
XM Cloud-friendly Yes No

We Can Help You Upgrade to Coveo & XM Cloud

The genesis of this article is my concern that organizations currently using Coveo for Sitecore might be discouraged from moving to XM Cloud because they believe they are not compatible. In reality, switching to the Coveo Platform with XM Cloud will be an even better approach.

At Fishtank, we are early adopters of XM Cloud and long-time partners of Sitecore and Coveo. We are excited about the potential, opportunity, and added value for customers that integrating XM Cloud with Coveo brings.

We have leveraged the same techniques referenced here to build amazing Coveo search experiences on AEM, Drupal, Kentico, Salesforce, Wordpress, as well as the traditional Sitecore CMS. We know that the same path lies ahead for XM Cloud and the Coveo Platform.

If you need help migrating to XM Cloud or moving from Coveo for Sitecore to the Coveo Platform, please email us at [email protected] or use our contact form.

Thank you for reading.

Dan Headshot

Dan Cruickshank

President | Sitecore MVP x 11

Dan is the founder of Fishtank. He's a multi-time Sitecore MVP and Coveo MVP award winner. Outside of technology, he is widely considered to be a top 3 father (routinely receiving "Father of the Year" accolades from his family) and past his prime on the basketball court.