I've been following the instructions on how to create custom personalization tokens. After following the instructions everything compiles, and everything seemingly works just fine. I can create a new campaign in EXM and I can send a test mail from "Review". However, the test mail doesn't replace my custom tokens.

Having googled a bit I found this question, which is similar, but not identical. The answer to that question was that the custom facets had not been added to the custom DispatchTask.

My custom facets, however, have been added to my custom DispatchTask, and I know that there's nothing wrong with them as I can read and write to them in XConnect and through Tracker.Current.Contact.

It seems that my CustomDispatchTask class is never executed, which explains why my custom tokens are not replaced.

/sitecore/admin/showconfig.aspx shows that my custom class has indeed been patched in:

        type="My.Namespace.CustomTokensDispatchTask, MyAssemblyName"

But if I try to debug either the constructor or the overridden GetContacts methods, the breakpoints are never hit. I also added some logging to it (in case this code is executed on AppStart where I won't be able to debug fast enough) but those log messages never appear in the log file. There are actually no exceptions or errors in the log files at all.

Why isn't my CustomTokensDispatchTask executed?


public class CustomTokensDispatchTask : DispatchTask
    private readonly IContactService _contactService;

    public CustomTokensDispatchTask([NotNull] ShortRunningTaskPool taskPool, IRecipientValidator recipientValidator, IContactService contactService, EcmDataProvider dataProvider, ItemUtilExt itemUtil, IEventDataService eventDataService, IDispatchManager dispatchManager, EmailAddressHistoryManager emailAddressHistoryManager, IRecipientManagerFactory recipientManagerFactory, SentMessageManager sentMessageManager)
      : base(taskPool, recipientValidator, contactService, dataProvider, itemUtil, eventDataService, dispatchManager, emailAddressHistoryManager, recipientManagerFactory, sentMessageManager)
        Sitecore.Diagnostics.Log.Info("HELLO CustomTokensDispatchTask", this);
        _contactService = contactService;

    protected override IReadOnlyCollection<IEntityLookupResult<Contact>> GetContacts(List<DispatchQueueItem> dispatchQueueItems)
        Sitecore.Diagnostics.Log.Info("HELLO CustomTokensDispatchTask.GetContacts", this);
        return _contactService.GetContacts(dispatchQueueItems.Select(x => x.ContactIdentifier),


<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns:set="http://www.sitecore.net/xmlconfig/set">
            <dispatchTask set:type="My.Namespace.CustomTokensDispatchTask, MyAssemblyName">
            <recipientPropertyTokenMap set:type="My.Namespace.CustomTokensTokenMap, MyAssemblyName">

Sitecore 9.0.2

  • Can you please update your question @GTHvidsten with content of My.EXM.config? Could be that the problem is with patching. I just want to clarify that. Nov 8, 2018 at 12:35
  • Added My.EXM.Config now. As you can see by the excerpt from showconfig.aspx this is indeed patched in correctly. Nov 8, 2018 at 12:42
  • Yes. As I mentioned using the custom facets in XConnect and through Tracker.Current.Contact works just fine Nov 8, 2018 at 12:54
  • You aren't in emulation mode right? doc.sitecore.net/email_experience_manager/… Nov 8, 2018 at 12:54
  • I have read your question once again. You mentioned there that you are sending test mail. Are you using "Send quick test" functionality for this? doc.sitecore.net/email_experience_manager/… . Nov 8, 2018 at 12:55

1 Answer 1


Because you are using "Send quick test" functionality, EXM won't hit your dispatch task.

For "Send quick test" functionality DispatchNewsletter pipeline is using SendTestMessage and therefore TestMessageTask is called instead of your custom DispatchTask.

You need to send email campaign only to your "test" contact to hit your custom Dispatch Task

  • If this is the case, how can you make sure that your custom tokens are replaced properly without having to actually send the campaing (or creating a campaign with one user, as suggested, and then having to copy settings from one campaign to the other, or having to reset engagement plans)? (It seems a bit silly to not be able to test custom tokens) Nov 8, 2018 at 13:09
  • You can use "Preview for recipients" button under Message tab where you edit content of message. Take a look here -> doc.sitecore.net/email_experience_manager/… section "Preview the token for different recipients" Nov 8, 2018 at 13:12
  • "Preview for recipients" still doesn't replace my custom tokens with the actual values. Nov 8, 2018 at 13:14
  • And when you send email campaign? Are you hitting your code? Nov 8, 2018 at 13:24
  • I have to draw back my previous statement. Obviously "Preview for recipients" won't call your custom Dispatch Task :) I was too quick with writing it down. But still tokens should be replaced with preview... Nov 8, 2018 at 13:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.