Platform Administration and Architecture

Email marketing

You use the Sitecore Email Experience Manager (EXM) to create highly customizable email campaigns that are both personal and relevant to your customers. You can send out personalized email campaigns to segmented lists or use email campaigns in marketing automation to target customers at specific points and different stages of the customer journey.

EXM is an integrated part of the Sitecore Experience Platform that relies heavily on the tracking, reporting and segmentation functionality of the Sitecore Experience Database (xDB).

You manage email campaigns in EXM application that is served by the Content Management role. The campaigns are stored in the Master database.

There are two types of campaigns available in EXM:

  • Email campaigns – the email campaigns associated with contact lists.

  • Automated email campaigns – used in the Marketing Automation and Forms applications. EXM sends emails to individual contacts when they trigger goals or events on your website. You can also send emails programmatically using the Client API.


You can associate email campaigns with contact lists, or segments, that you manage through the List Manager. In the List Manager, there are two types of list: contact and segmented lists. Contact lists target a specific group of contacts. A segmented list filters an existing contact list. Both types of list are stored in the xDB. The List Manager API uses the xConnect Collection Search role to retrieve contacts in lists.

You can associate an email campaign with multiple contact or segmented lists. You can also use lists to select the contacts to include or exclude in the dispatch process.

You can control when email campaigns dispatch using the EXM dispatch pipelines and processors. You can also trigger the dispatch directly in the EXM.


In the Master database, the email campaign state changes to Queuing.

The Content Management role reads the relevant contact identifiers using the List Manager API. You define segments of contact to include in lists in the List Manager, which then runs against the xConnect Collection Search role. The list returns contacts if they are included in the list. Contacts are excluded from the list:

  • If they are on exclude lists associated with the campaign.

  • If you have added them to the global opt-out list

  • If you have marked the contact with Consent Revoked and Do Not Market in the xDB.

  • If the contact’s bounce count exceeds a limit established in EXM.

When xConnect receives these contacts from the Content Management role, their contact identifiers are queued in the EXM database.

The Content Management role starts dispatching the emails to the contacts. When this happens, the email campaign state changes to Sending in the Master database.


The dispatch process happens on all core application roles configured to be EXM Dispatch roles. By default, this includes the Content Management role.

Since email dispatch can be a resource intensive task, running the dispatch on the Content Management role can slow down other tasks that you perform on the server, for example publishing or content editing. For scaling reasons, you can set up one or more optional EXM Dispatch roles. This means that you can scale out the job of processing the contacts in the queue, generating the emails, and dispatching to run on a number of dedicated roles.

You configure the EXM Dispatch role as a Content Management role, but for EXM purposes dedicated to processing and dispatching emails rather than serving the EXM application.

When the dispatch process starts on the Content Management role, it triggers the dispatch process on any EXM Dispatch roles, as well as on the Content Management role itself. However, in this scenario, the Content Management role does not dispatch emails, but serves the EXM application and controls the dispatch job.


The EXM Dispatch roles read contacts in batches from the EXM database. The batches are loaded from the xConnect Collection Search role.


The EXM Dispatch renders the email message by sending a HTTP request and generates a page through the Sitecore rendering engine. The email message contains content items that come from the Master database.


For simple, personalized emails that use basic token replacement, the EXM Dispatch role generates the email message once and caches it for all contacts. For highly personalized emails, a HTTP request is sent to the EXM Dispatch role and emails render separately for each contact. Personalization therefore puts a significantly higher load on the EXM Dispatch role, which makes scaling considerations important.


For reporting purposes, the EXM Dispatch role saves a message on the Message Bus to update the email address history facet.


The Content Management role handles the message, and updates the contact through xConnect Collection Search role updates the contact.


The EXM Dispatch role sends a specific email message to a contact. Depending on the configuration, you can use a custom SMTP service or the Email Cloud service using SMTP to send the message.


The EXM Dispatch role then saves an Email Sent interaction to the xConnect Collection Search role. This records the email campaign on the individual contact in the xDB, provides reporting in EXM and Experience Analytics, and enables personalization across other channels.


The EXM Dispatch role then removes the contact from the dispatch queue in the EXM database.


During the dispatch job, the Content Management role awaits the state of the job on all EXM Dispatch roles. When all EXM Dispatch roles are done and all contacts in the EXM database queue has been processed, the Content Management role changes the state of the email campaign in the Master database to Sent.

The Email Cloud service continuously maintains a list of email addresses that, for various reasons, it does not send to. This could be, for example, because of complaints, bounces, or invalid email addresses. This is called the suppression list. You use the suppression list for reputation management and compliance.


The suppression list continuously synchronizes to the Content Management and EXM Dispatch roles, and is stored in the EXM database.

You use the suppression list:

  • During dispatch to check if a given contact is in the suppression list.

  • To manually add contacts in the EXM application allows manual additions. This local copy updates and synchronizes to the Email Cloud service.

  • With an xConnect plugin to ensure that the Right to be forgotten functionality synchronizes with EXM.


After you enable the right to be forgotten for one or more contacts, the xConnect Collection or xConnect Collection Search role stores a message in the Message Bus that contains the specific email addresses that the system must forget.


Content Management role picks up the message and removes email addresses from the suppression list.

The suppression list synchronizes to Email Cloud.

EXM handles email bounces and spam complaints to ensure that the email recipients no longer receive emails. This reduces the cost for sending email messages and also prevents Sitecore implementations from being blacklisted due to a poor email reputation.

If you configure EXM to use a custom SMTP service for dispatching emails, the system does not perform any reputation management and Sitecore will not respect spam complaints.


You can, however, configure a custom POP3 service that checks for bounced emails. Please note that, due to differences in email systems, the bounce checking is not absolute and some invalid emails may fail to be reported as bounces.


When you use the Email Cloud service, the Content Management and EXM Dispatch roles continuously retrieve bounce and spam complaints from the Email Cloud service.

In both scenarios, the Content Management or EXM Dispatch roles update an EXM database queue to process spam complaints or bounces.


The Content Management and|xp-exm-dispatch| roles continuously process the queue in EXM database and pass the contact to the xConnect Collection Search role where it is added to the global opt-out list. xConnect also removes the contact from any marketing lists you have added them to.

After EXM sends an email message and the recipient opens it, the Content Delivery role receives a request. The request returns an empty 1x1 pixel.


The Content Delivery handles the request and stores an Open message in the Message Bus.


The Content Management role handles this message and stores an interaction for the contact that contains an Open event in xConnect Collection role. An EXM-specific xConnect plugin runs on the xConnect Collection Search role to update the specific contact facets on the contact that Sitecore uses for reporting purposes.

All links in the email campaigns are associated with a specific EXM tracking page. When a recipient clicks an email link, the tracking page uses the standard tracker to create an interaction for the contact and registers a Click page event. The tracking page then redirects to the actual page in the link.


The tracker uses the normal tracking and collections data flows. When a session ends, the Content Delivery role sends the interaction to the xConnect Collection role. An EXM-specific plugin runs on the xConnect Collection role to update specific facets for reporting purposes.


When recipients unsubscribe from the email campaigns, EXM needs to update the marketing lists in xDB.


Unsubscribes are triggered when the recipient clicks an unsubscribe link in the email. The EXM link tracking page on the Content Delivery role handles this action.

The page redirects the recipient to a specific EXM unsubscribe handler on the Content Delivery role that registers an Unsubscribe page event through the tracker, and then stores an unsubscribe message on the Message Bus and redirects the recipient to a user-friendly unsubscribe page.


Once the session ends, the tracker on the Content Delivery role passes the interaction with the unsubscribe page event to the xConnect Collection role and stores it in xDB. Sitecore uses this information for analytics and reporting purposes.


The Content Management role picks up the unsubscribe message from the Message Bus, then removes the contact from any lists using the xConnect Collection Search role.

The Email Cloud service or Custom SMTP then can send an email message that confirms the contact has unsubscribed.


EXM does not introduce any specific roles for analytics reporting or insights. Email campaign analytics are based on the xDB, specifically the processing and aggregation functionality in the xDB Processing role, and data served through the xDB Reporting role.

Please refer to the articles Processing and Aggregation or Analytics and Reporting for more information on these data flows and roles.

Privacy and security

Refer to the Architecture and Roles documentation for privacy and security considerations for each role on the processing and aggregation data flow:

Related reading

Related data flows: