In my latest CMSWire article, “Composing Effective Personalization with Search,” I described the advantages of combining personalization engines with composable search solutions to create effective personalized experiences that take less effort to create and maintain than crafting custom messaging for every segment.
This article was heavily inspired by my work with integrating Sitecore Personalize with composable search engines like Sitecore Search and Coveo. I even posted about the integration approach between Sitecore Search and Personalize in a recent Perficient blog post, “Composing Personalized Experiences with Sitecore Search and Personalize.” This article only went through the basic setup to call custom search queries from Sitecore Personalize connections and decision models in order to use them in Experiences and Experiments.
To really be effective, you need more intelligence behind your decisioning. You need to base the parameters of the query based on everything you know about the visitor. You need to account for their behavior on your site as well as all the data you have in the CDP to make it as relevant as possible. With decisioning in Sitecore Personalize, this business logic needs to be turned into JavaScript that sits within a Programmable in your Decisioning Canvas.
Instead of creating this JavaScript from scratch, you could leverage Perficient’s own Sitecore Personalize Decisioning Tool. This tool will allow us to model the stages of the journey or different personas allowing us to take a “Next Best Action” approach to selecting the appropriate query to drive our personalized experience.
A Working Example
Since my Sitecore Search sandbox has indexed the content of Perficient.com, it only makes sense to craft our experience around the needs of our corporate site. When you look at our site, and think about what Perficient does and who it targets, you see our main navigation exposes “What we do” and the “Industries” we focus on.
From a “What we do” perspective, our main pillars are listed on that “What we do” page. Our “Six Pack” includes: Strategy & Transformation, Customer Experience & Digital Marketing, Innovation & Product Development, Platforms & Technology and Data & Intelligence.
When you look at the industries we focus on, that list is right in the main navigation.
So if I wanted to create some simple segmentation, crossing these offerings with industries would give me a good opportunity to target people that were interested in one of our offerings and were also aligned to one of our industries. With this in mind I could create a Decision Model to create offers for each combination.
In this example, I used “Industries” for categorization, but I could have just as easily used our “Offerings for the Categories.” This just allowed me to model things in a consistent way. The other interesting thing, is that the requirements for each “offer” across each industry uses the exact same condition. The JavaScript that checks if they are interested in a particular area works the same regardless of which industry they are aligned to.
For this example, I was just checking industry and offering interest in a custom data extension stored in CDP, but I could easily imagine an alternative approach that leverages web tracking that uses what pages a visitor visited to make that determination. For testing I used the Sitecore CDP Postman collection to setup a few test guests.
Once the model is done, you can click over to the “Programmable Code” tab to get all the JavaScript code needed select the offer using the conditions you configured. While I implemented a majority of the conditions to check for a custom Data Extension, you can see some of the others, I left as the default, which just returns false until someone goes and implements that condition to make it work correctly.
This code can be copy pasted directly into a “Programmable” with the outputs able to be connected right into a decision table.
The programmable will just return the name of the offer selected based on the evaluation of rules associated with the stages and offers of your model. This can then be evaluated within your decision table.
For each “Offer Name”, instead of selecting a “Personalize offer” to manually associate content, we can instead write a query that will return content recommendations based on this selection and everything Sitecore search knows about the visitor.” What queries we right could vary based on what kinds of content we have in that industry and offering. Perficient has guides, case studies, news articles and more that can appeal to our visitors, so we can craft queries based on our understanding of our own content as well as what we know about the visitor.
Once we update our table with the right queries, we can then consume that “Query” field when configuring the connection to Sitecore Search.
With our decision model done, we can consume the search results from any experience we create. Here’s a web experience that I test with a user I setup to have an interest in “Financial Services” and “Platforms & Technology.”
Wrapping Up.
This technique can lead to very effective personalized experiences that are easy to setup and put on auto-pilot. As new content gets create and Sitecore search gathers data, your results will become even more relevant. In this example, we returned three results in a web experience, but it could have easily been the top result, with more relevant fields and images from the search result displayed.
I demonstrated this solution as well as the basic version on Sitecore Learning’s “Tips & Tricks.” You can view the recorded demo here.
If you’re interested in learning more about integrating Sitecore Personalize and Search and how our Decisioning Tool can make it easy to model your personalization strategy, we’d love to help. You can get a hold of me on LinkedIn, Twitter or fill out our contact form.