Skip to main content


What capabilities is Sitecore EXM missing?

 I have been working with Sitecore EXM 9.3 for a while now. I have worked on a project with some pretty advanced requirements. EXM has some pretty great capabilities and those are easy to find as that is what all the marketing focuses on. But what are some core capabilities it is still missing? Here is my list. If you have more please leave a comment.  Limited Subject line personalization Ok, yes it does have the ability to personalize a subject line. You can put tokens into the subject line like first name and last name. You can even create your own custom tokens. But what if you want the subject line to change more than just by a token? This is something you cannot do, at least not out of the box. This can cause a challenge when you have a marketing automation campaign that sends a series of emails. The content gets personalized based on the series of emails they are getting. But it means the subject line for that email is pretty much the same. This is not ideal when talking about hi
Recent posts

Advanced Item Cloning

Cloning in Sitecore can be extremely useful. It makes reusing of content items and updating of those items very easy. The default capabilities for item cloning can usually handle most needs. The default behavior does have one thing that can really trip you up. By default clone, child items stay linked to the source cloned item and are not reparented to their new cloned parent. The first thing to understand is there are configuration options for cloning that allow you to change how cloning works. The configuration files have them pretty well documented but if you don't know what you are looking for you may not know they are there. <setting name="ItemCloning.Enabled" value="true"/> Specifies whether the Item Cloning feature is enabled Default value on CM and Standalone servers: true. Default value on CD, Processing and Reporting servers: false. <setting name="ItemCloning.NonInheritedFields" value=""/> Specifies a pipe-separated lis

Content Tagging with Open Calais on Sitecore

As content authors build more and more content managing and surfacing that content becomes a bigger challenge. A common request is how can content authors tag their content with relative information to help organize and surface it. With Sitecore, this can be done via Sitecore Cortex Content Tagging .  As with almost everything in Sitecore it is an extensible framework. It uses the Open Calais AI to process content and return standard tagging information. To enable this there is really not much that is needed. The Sitecore documentation has most of the steps you need  and there are a few other blog posts out there with details as well. I found what all these are lacking though is a working sample of the configuration you need. All you need is a patch file like this (just add your API token): What can be a little tricky is where to find your API Key. Just go to  login and then in navigation click on APIs and the big button that says "Display My API Token"

Reusable Business rules

One of the best aspects of Sitecore is its rules engine. It is easy to use and very extensible. I have worked on large projects which run multiple websites one thing that comes up is how can rules, which authors create, be reused? It is great we can add a personalization rule to a rendering but what if we have the same rule we want to apply multiple places? Can we do this in a way we don't have to go change that rule in each place? One approach to this is using the predefined rules that come with Sitecore. These are located at /sitecore/system/Marketing Control Panel/Personalization/Predefined Rules. Once you have created a predefined rule you can use it via personalization by click on the "predefined rules" sections when creating a new rule. Once you have done this you have a reusable rule you can edit in one place but use in lots of different personalization locations. This is great and can be very helpful. However, it only gives you access to the condition, no

Sitecore EXM 9.1 Performance and Scale

When working with Sitecore EXM it seems like one question everyone has is what level of performance can you get out of it. As with most things, the answer is "it depends". However, there are a number of things that go into this and things to think through and adjust to try to get a high rate of sending. Sitecore Hacker has a good blog post on scaling EXM .  As I spent time trying to scale my own instance I wanted to break things down a little more and provide some more concrete examples on steps takes to performance tune and performance I have seen. Let's breakdown some specifics about the architecture to help you understand where you might stand. I am running in AWS with a dedicated Content Management server, a dedicated dispatch server, a dedicated xConnect Server and of course a dedicated database server. Here are the specifications for all. Content Management: 16 gb RAM, 2.3 Ghz 4 core processor. Dedicated Dispatch: 16 GB RAM 3.0 Ghz 8 core xConnect: 4 gb RAM

Changing Glass Caching key

There are a few ORM's for Siteocre and Glass is a great one. Like any framework though it has somethings that don't work they way you may need it to. For glass one of these may be how it generates a cache key. This article is focused on version 5 of glass. Here is the code Glass uses for generating a cache key for all items it caches.You can see it uses a lot of the fields on a Sitecore item to generate the cache key. It does this to make sure it is caching a unique model. However, this is the cache key you are stuck with as there are no settings that will change this. Don't worry though, there is way to plug into Glass and tell it to use a different one. public class CacheKeyGenerator : ICacheKeyGenerator { public string Generate (ObjectConstructionArgs args) { SitecoreTypeCreationContext typeCreationContext = args.AbstractTypeCreationContext as SitecoreTypeCreationContext; return string .Format( "{0}{1}{2}{3}{4}{5}{6}{7}" ,

Multiple Sitecore EXM Root Managers and missing templates

One of the flexibility points of Sitecore EXM is its manager root . You can create as many of these as you want and each one controls the settings for how emails from that manager root will be treated. These are pretty easy to create and Sitecore Hacker has a nice run down on his Email Manager in Details post . There is something left out here though and left out in the Sitecore documentation as well. In theory you can create your root managers where every you want in the content tree. At least there is nothing that will stop you. However, if you don't create them in the right place you will see some odd behavior. If you try and create a template for a given manager root in EXM and see no templates this is the odd behavior I speak of. The image to the left shows this. This issue is caused by one area of the EXM root manager configuration requiring that it has one and only one location to look for email managers. So even though you can create lots of these, they all ave to be