4

We use Sitecore 9 update 1 and we utilize the out of the box Email Experience Manager (EXM) of it. But we encountered an issue with regards to personalization of an email campaign. It seems the personalization using rules/condition is not working.

Anybody from this community experienced and solve this?

Thanks in advance

  • We are also experiencing this on our Sitecore 9 Update 1 Environment. Personalization in the EXM is not working. – Jovit Mayo Mar 15 '18 at 7:07
  • You should create ticket to Sitecore Support – Peter Procházka Mar 15 '18 at 7:34
  • There is already Cumulative hotfix for EXM 9.0 Update-1 -> kb.sitecore.net/articles/467253 <- but it is not solving this particular issue as far as I can see in release notes – Peter Procházka Mar 15 '18 at 7:35
  • All rules don't work? Or some particular? – Anton Mar 15 '18 at 14:04
  • Hi Anton, we've tried most of the available conditions in there and any of them don't work. – Hanz Kristopher Enriquez Mar 16 '18 at 2:36
5

This has been fixed in the cumulative hotfix for EXM 9.0 Update-1

The problem is that the contact is never being identified during dispatch. This needs to happen in the ensureSessionContext pipeline.

Add the following pipeline processor

public class LoadEmailRenderSessionContact
{
    public ContactRepositoryBase ContactRepository { get; set; }

    public void Process(InitializeTrackerArgs args)
    {
        if (!ExmContext.IsRenderRequest || ExmContext.ContactIdentifier == null || ContactRepository == null)
        {
            return;
        }

        Contact contact = ContactRepository.LoadContact(ExmContext.ContactIdentifier.Source, ExmContext.ContactIdentifier.Identifier);

        if (contact == null)
        {
            return;
        }

        args.Session.Contact = contact;
    }
}

and add it to the ensureSessionContext pipeline:

<ensureSessionContext role:require="Standalone or ContentManagement or DedicatedDispatch or ContentDelivery">
    <processor type="FooBar.LoadEmailRenderSessionContact, FooBar" x:before="processor[@type='Sitecore.Analytics.Pipelines.EnsureSessionContext.LoadContact, Sitecore.Analytics']" resolve="true">
        <ContactRepository ref="contactRepository" />
    </processor>
</ensureSessionContext>

Additionally, you should make sure that the tracker is enabled for the site as MVC personalization will otherwise not work i.e. set enableTracking="true" on the exm site e.g..

<site name="exm" enableTracking="true" inherits="shell" virtualFolder="/" physicalFolder="/" startItem="/none" cacheHtml="true" htmlCacheSize="50MB" />

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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