Personalization & The Interaction Cache

Your personalizations in Sitecore may be affected by interaction cache issues

important.png

Have you noticed inconsistencies in your segmented lists in List Manager, your marketing automations, or in your personalizations? If so, you may be exceeding the number of items that can be evaluated in your Interaction Cache. There are ~67 out-of-the-box Sitecore conditions that read from data that’s stored in the Interaction Cache. Those conditions affect things like campaigns, goals, outcomes, devices, channels, GeoIP, profiles, page events, and site search events. Sitecore ships with a default of 50 interactions in the Interaction Cache. Any interactions that exceed that limit are not included in the cache. If you increase the number of interactions in the config you open yourself up to performance issues. We tried to increase the limit, and found that it added a couple of seconds to the new visit first page load.

What’s this mean to the marketer?

To answer this, we have to describe what the Interaction Cache does. It stores activity (interaction) information related to visitor session. If you visit a website and trigger a campaign, goal, etc., that information is stored in the Interaction Cache. If that triggers a marketing automation, that’s another addition to the Interaction Cache. If that visitor then gets an EXM email, that’s another addition to the Interaction Cache. So, now we’re up to 3 interactions out of 50 that we can use to trigger List Manager, marketing automation and personalization actions. Sitecore only evaluates the 50 most recent interactions, so when we exceed that number, the older interactions are not considered. The 50 interaction limit may be OK for some higher funnel customer acquisition use cases, but it’s way too limiting for existing customer tracking. Think about an active customer or member that visits your website regularly. You may only have the last 6 weeks of activity that you can use to drive personalization, marketing automation or list inclusion. That’s been problematic for us.

Here’s a breakdown of the configurations.

  • MaximumCacheEntryCount: This is the maximum number of interactions (sessions) that are evaluated by the ~67 conditions that are referenced above. The default is 50.

  • MaximumInteractionPeriod: This is the maximum number of days that are evaluated by the ~67 conditions that are referenced above. The default is 30 days.

  • MaximumInteractionCount: This is the maximum number of interaction events (e.g., pages visited, etc.) that are evaluated within a single session. The default is 25.

These three configurations are designed to help throttle activity to minimize volume-based performance issues. The affect that these configurations have on the marketing functionality isn’t really communicated in the documentation.

Technical clarification: This issue actually affects both the Interaction Cache and the Key Behavior Cache. The Interaction Cache is used by List Manager and Marketing Automation. The Key Behavior Cache is used by the personalization functionality in components.

Here’s a link to the Interaction Cache documentation.

What can be done about this?

Unfortunately, not much. This limitation is architectural, so a fix for this would be more of a redesign. If you want to try to limit the affect of this issue, you can filter out interactions that you don’t use from the interaction cache. Basically, the more you streamline the interaction cache, the more interactions you can evaluate. Here are a few interaction types that we’re working on filtering out.

  • EXM interactions: EXM conditions don’t evaluate against the interaction cache, so we don’t need the interactions there.

  • Outcome interactions: We’re not using them.

  • Device interactions: We can still get the current device from the current session, and not the interaction cache.

  • Geo interactions: Same as device interactions.

  • Custom interactions: We used to write custom interactions to the cache. Now, we’re a lot more selective, choosing to aggregate custom interaction data and writing it to the contact facet.

Filtering functionality has been added to the product roadmap, but nothing exists today.

This marketing post got pretty technical. Sometimes it’s necessary for the marketer to get their hands dirty, in order to understand what’s happening behind the scenes. If you have any questions about this issue, feel free to shoot me a DM on Twitter.