4

I'm a total novice with EXM and trying to explore it as an option to replace a manual system we use now with SQL (where Sitecore pushes data into a metadata table in SQL when published, and some user preferences are maintained in SQL as well). Here's how it works now:

Every hour, content in the metadata table is scanned to see if it was updated in the past hour. If so, that content is pulled in. Then a list of users who have requested updates hourly are pulled together. The user list is then iterated through and the metadata of each content item is checked to see if it's flagged to that user's interests (for example, a user wants news on the state of Virginia, is the content item so tagged). Once the applicable universe of content is created for that user, it's assembled into an email format and sent out with a .NET mail merge script. The process is kicked off via scheduled task.

The very little I've read about EXM so far tells me the emails are put together like pages, with presentation details, so creating a rendering that says "query the content and return only that which was updated last hour" seems basic. What about passing in the user information though? Would my recipient list be "all users who request an hourly update" via a user profile setting? Can I pass in user information to the rendering on the fly? If so, is there then a way to tell EXM not to send an email if that rendering has no data?

2
  • 1
    Which version of Sitecore do you use? Do you have xDB connected? Nov 18, 2017 at 6:54
  • 8.1 Update 2, yes on xDB Nov 20, 2017 at 15:35

1 Answer 1

0

The questions are a bit broad, but I'll try and answer them.

Personalization

"The very little I've read about EXM so far tells me the emails are put together like pages, with presentation details, so creating a rendering that says "query the content and return only that which was updated last hour" seems basic. What about passing in the user information though?"

Yes, the contents of an email campaign is a rendering of a page, so you may use any type of personalization that Sitecore already supports, as well as any type of custom personalization. When EXM renders the page, a query string specifying the contact id is added to the request, ec_contact_id, which you can use to identify the contact and do custom personalization. In later versions you can access the contact id directly from Sitecore.Modules.EmailCampaign.Core.ExmContext, but that's unfortunately not available in EXM 3.2.1

Contact lists

"Would my recipient list be "all users who request an hourly update" via a user profile setting?"

EXM uses List Manager to get a list of contacts. You may use any List Manager list i.e. a contact list or a segmented list.. For your scenario it sounds like you want to be using a segmented list. If you create a custom facet to store their user profile setting, you will be able to create a segmented list which will automatically return e.g. all contacts who've requested hourly updates.

Skipping contacts

"Is there then a way to tell EXM not to send an email if that rendering has no data"

This is possible by customizing the DispatchNewsletter and/or SendEmail pipelines, but I would recommend that you instead filter the contacts our in your segmented list, as there is no point in trying to process them if you already know they should be skipped.

Your Answer

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

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