Email Marketing

Email Marketing is an integrated tool for creating and sending emails to users on your solution. In that respect it’s no different from other proprietary email campaign software – but because it is a native part of the Dynamicweb ecosystem there are several cool synergy effects:

  • Select recipients based on dynamic criteria, e.g.:
    • Interactions with previous emails
    • Activity on the website or in the webshop
    • User creation dates or login timestamps
  • Incorporate actual content/products from your solution in your campaigns
  • Register unsubscribes directly and instantly on your user accounts, no manual labour required
  • Etc.

In Dynamicweb, Emails are pages on the solution. In a typical setup you will create one or more folders in the content tree to create emails in, and one or more item types which makes it easy to create new emails, e.g. a Newsletter item type or a Campaign Email item type. All of this takes place outside the Email Marketing tool.

Then, when it’s time to send out the email, you open the Email Marketing tool, create a new email, select the recipients, and send it out.

For each email, statistical information about recipients interacting with the email is collected – click rates, order rates, unsubscribes, email clients used, etc.

The Email Marketing tool is available from the Marketing tree (Figure 1.1).

Figure 1.1 Email Marketing tool tree

Emails are created and organized in Campaign folders (Figure 2.1). Each campaign folder comes with a predefined set of email states what an email can belong to; drafts, scheduled, split tests, or sent.  

Campaign folders are mainly an organizational tool – you can create as many campaign folders as necessary, or you can use a single campaign folder with subfolders (right-click a campaign folder and click create new folder).

Figure 2.1 Campaign folders

Emails created in a campaign folder are created as drafts, and then move to sent (or scheduled then sent) when you pull the trigger on them. You can use the predefined email states (Drafts, Scheduled, Split tests, Sent) to see only the emails in a particular state, or click the campaign folder and see the full list of emails in it (Figure 2.2).

New campaign folders can be created by right-clicking on the Campaigns folder and clicking Create new folder.

Figure 2.2 Email list

Campaign folders are created with a number of settings, which are inherited by the emails created inside the folder – you can preconfigure the following:

  • The sender email, sender name, subject, and the domain used for links in the email
  • Whether email content should be rendered for each recipient or only once – if the email contains user-specific content, it must be rendered for each recipient. Please note that this naturally significantly impacts performance.
  • A text for the auto-generated unsubscribe link, and a page to redirect users to when they click the link
  • The tracking provider (optional) and delivery provider (mandatory)
  • The Recipient provider (see below)

In Dynamicweb, email content is created as pages in the content tree, and these pages are then sent out to a list of recipients using the Email Marketing tool you’re reading about here. In most cases the email pages will be placed in a folder, and created using email-specific item types – but all of this is up to the implementer and happens elsewhere on the solution.

When it’s time to create the email, right-click in a campaign folder or subfolder and click Create new email. This opens the email configuration view (Figure 3.1) – this is where you select recipients, specify senders, and so on.

Figure 3.1 Emails

From this view you have the following options:

  • Select recipients – your can add users, user groups, smart searches, and repository queries
  • Fill out the sender name and sender email – use the green plus-icon to personalize the subject using email placeholder tags
  • Provide a subject – use the green plus-icon to personalize the subject using email placeholder tags
  • (Optional) Enter a pre-header text
  • Select the email page or use the same page from a previous newsletter – this is the email content page created somewhere in the content tree
  • Select a domain to use for links in the email

Below the configuration, you can see a preview of the email (Figure 3.2). The Edit content button provides a shortcut to editing the page. It is also possible to create a split test version of your email.

Figure 3.2 Preview the email content

Once you’re happy with the setup, you can save the email, then send it or schedule it for future delivery.

To send the email immediately, click Send > Send now (Figure 3.3) – the email will be moved from the drafts folder to the sent folder. To schedule an email for future delivery instead, click Scheduled send and select a date/time and optionally a repetition interval – the email will be moved to the Scheduled folder, and then the Sent folder when it’s been sent.

Figure 3.3 Sending an email

For more advanced scenarios, you can use the tools on the Advanced ribbon bar tab (Figure 4.1) to further configure the email. Most of the settings there can also be preconfigured in the campaign folder settings, so this tab is typically used when you want to override the default settings.

Figure 4.1 Advanced email marketing tools

The Advanced tab tools let you:

  • Add Attachments to the email
  • Select a specific encoding to use (default is UTF-8)
  • Save the email as an email template – this saves a 1-to-1 copy of the email which you can select when creating a new email
  • Customize the unsubscribe settings:
    • Check Do not add unsubscribe link to disable the auto-created unsubscribe link for this email
    • Enter a text for the unsubscribe link, and specify a page to redirect users to when they click the link
  • Customize the Content settings:
    • Check Render content for each recipient to make sure user-specific content is rendered correctly – this significantly impacts performance
    • Activate sending a plain text version of the email alongside the html version, and choose between auto-generated plain text or custom text
  • Use the recipient settings to uncheck ensure unique recipients to allow you to deliver the same email to the same recipient more than once. This is typically done for scheduled emails like an abandoned shopping cart email, which may be sent to the same user many times but with different content. If unchecked, you must provide a quarantine period during which the user cannot receive the email again.

You can also customize more technical details such as the tracking provider, select a different recipient provider (see below) or delivery provider, or use the validate emails tool to check for invalid emails in the list of recipients.  

As described above, email recipients can be specified on an email in a number of ways; add users or user groups manually, or select a smart search or an index query which returns a dynamic set of users matching their criteria.

Once users have been added, you can see exactly how many of the recipients have given email permission/consent to receiving emails below the select box (Figure 5.1).

Figure 5.1 Selecting recipients

Of course, this behavior is only true for the Dynamicweb Users recipient provider – which is preselected by default. This recipient provider can be further configured by switching to the Advanced tab in the ribbon bar and clicking the Recipient provider button (Figure 5.2).

The following settings can be configured:

  • The Data Processing section allows you to select one or more consent activities which the user must have consented to in order to receive this email. If none are selected, only the Email permission user field will be taken into account, which may or may not be a violation of current GDPR laws depending on your country
  • The On unsubscribe section allows you to control what happens when a recipient clicks the unsubscribe link in the email. You can remove email permission from the user, remove a user from a particular group, uncheck one or more custom user fields, and withdraw consent from one or more consent activities.

A couple of alternative recipient providers are also available, albeit for very specific purposes:

  • The Abandoned cart recipients provider allows you to send emails to users who added products to cart but did not finish the checkout procedure. A set of parameters allow you to configure the provider further. Read about abandoned cart campaigns.
  • The Back in stock recipients provider allows you to send emails to users who signed up for back in stock notifications
  • The Unresponsive recipients provider allows you to send emails to recipients who did not react to a specific previous email (e.g. a sign-up confirmation email)

Please note that the unresponsive recipients provider is primarily intended to be a backup plan for business-critical scheduled emails – to resend a campaign email to unresponsive recipients simply:

  • Open the Sent folder of a campaign folder
  • Right-click an email
  • Click Resend to unresponsive recipients (Figure 5.3)
Figure 5.3 Resend to unresponsive recipients

Dynamicweb collects statistical information about how your users interact with emails. This information can be accessed  from any Sent folder by clicking on an email – this opens the statistics view (Figure 6.1).

Figure 6.1 Email statistics

From the statistics view you can see a number of key performance indicators – opening ratios, click ratios, order ratios, and unsubscribes. You can also see which links were used to go to the solution, and key data on the browsers and email clients used by your users.

Click the Recipients button in the toolbar to access in-depth information about the full list of recipients (Figure 6.2) – you can also see who unsubscribed. The Export button allows you to export email statistics in part or in full.

Figure 6.2 Recipient statistics

This section contains additional information about the Email Marketing tool and related features.

A placeholder tag is a piece of text formatted in a specific format, which is then processed and replaced by a dynamic value - this means that you can personalize email content to a large degree.

The email placeholder tag format is {{PlaceholderName||”fallback value”}}, and tags can be used in:

  • Email bodies (on pages) - including in links, for example <a href="/UserInfo.aspx?UserName={{Email:User.UserName}}">Click here to see your profile</a>
  • Subject fields (when creating emails)
  • Tracking provider fields

If you do not provide a fallback value, and the user does not have a value to replace the placeholder tag with, it will simply print the placeholder tag. So, to avoid addressing your users as Dear {{Email:User.Name}}, always provide a fallback value.

The following tags are available: 

Placeholder name



The recipient id. This is not related to the user id.


The recipient key. When using the "Dynamicweb users" recipient provider, this is the user id.


The name of the recipient.


The email address of the recipient.


The message id. This identifier is not the email id. If split test is used, there will be one message id for both the original and the variation.


The sender name.


The sender email address, or the reply-to email address.


The subject. If split test is used, this will contain the subject for the given version (original or variation).


The domain url. This url is the domain used for the links in the content.


The send date/time. This is the time when the message was sent. If the email is recurring, this value updated each time the email is sent.


The recipient secret used for recipient-specific actions like unsubscribing.
This is automatically added to auto-generated unsubscribe links to prevent spoofing.
Note: This will cause unsubscribe links generated
prior to 8.4.1 to become invalid when upgrading to 8.4.1 or later.


The pre-header span. This contains the pre-header text wrapped in a span-tag.
Must be placed right after the body tag of the page used as email. If the tag is not found, the preheader will be inserted automatically by the system.


The pre-header text. This contains the pre-header text.


The link to the content page. This contains the link (not in a tag) to the page that provided the content for the email.


The unsubscribe link in a tag. This contains the unsubscribe link wrapped in an a-tag using the "Unsubscribe text" as the link text.


The unsubscribe link. This contains the unsubscribe link (not in a tag).


The link to completely unsubscribe the recipient using the EmailAllowed property of the User. This tag exists in addition to the regular customizable unsubscribe link to allow for more flexibility. The unsubscribe link is not wrapped in an html anchor (<a>) tag. This value is only available when using the
"Dynamicweb users" recipient provider (available from The placeholder needs to be added manually.


The tracking image for the email. This can be place independently of the pre-header (available from


The username.


The name of the user.


The address of the user.


The address2 of the user.


The zip code of the user.


The city of the user.


The country of the user.


The phone of the user.


The private phone of the user.


The mobile phone of the user.


The fax of the user.


The customer number of the user.


The default currency for the user.


The link to the image of the user. This link is not handled by the internal link management.


The company of the user.


The department of the user.


The job title of the user.


The business phone of the user.


The login token for logging the specified User in automatically. (Available from

Example: {{EmailMessaging:Message.DomainUrl}}/loginpage.aspx?Username={{Email:User.UserName}}&PwToken={{Email:User.LoginToken}}


It is possible to get custom fields on users out in the email (available from

Use the system name of the custom field that should be used, not the name. 

Example:  {{Email:User.AccessUser_CustomTextField}} will get the CustomTextField content out in the mail.

A dropdown with placeholder tags can be added to any rich text editor in Dynamicweb by editing the Editor Configuration used - see email.js for an example.

With email personalization, you can tailor your email marketing efforts to the needs, interests and behavioral patterns of your users.

You do so by selecting which paragraphs to send to which smart search based segments.

If, for example, you want to kick off an international campaign by organizing a flash mob in major European cities, you can easily do so. In the following section, I will be using this as an example of how email personalization works.

To create personalized content, simply create an email with variant city-specific information (Figure 10.1)

Figure 10.1 Personalized: City-specific paragraphs

In this case, I have three paragraphs targeting my users in three major cities – containing information on how to join the flash mob in their country – and a paragraph containing information on how to see videos of the flash mobs, targeting users who don’t have a chance to join the flash mob themselves.

Next, go to the Marketing tab (Figure 11.1) and click Email personalization.

Figure 11.1 Email personalization button

You will be presented with a view of your paragraphs, and a list of your segments (Figure 11.2)

Figure 11.2 Email personalization: content and segments

So far, there are no segments except ‘default’, which covers everyone who is not in one of the other segments.

You need to add segments matching your personalized content. To do so, click Add segment and select one of your existing smart searches (Figure 11.3).

Figure 11.3 Selecting smart searches (segments)

In this scenario, you are interested in users who live in the United States, users who live in Norway, and users who live in Denmark.

Select those smart searches (or create them in the standard manner), and add them to your email personalization window (Figure 12.1).

Figure 12.1 Email personalization - with segments added

For a full list of the many cool options you have when building smart searches, check out the smart search documentation.

Now, in order to ensure that your users get the right content, it is useful to go through each segment individually.

Start by looking at the default users, i.e. those who are not covered by the other segments – in this case, it would be users in the UK and in Sweden for example.

  • Should the default users receive the intro? Yes
  • Should they receive the paragraphs targeting US-, Norway- or Denmark-based users? No
  • Should they receive the default flash mob paragraph? Yes
  • Should they receive the outro? Yes

Click the green checkmarks/red crosses to change their state, and go through the other segments in the same manner. You should end up with the following configuration (Figure 13.1)

Figure 13.1 Email personalization: Content and segments configured

With this setup:

  • Users who live in the US will receive the intro, the New York flash mob, and the outro paragraphs.
  • Users who live in Norway will receive the intro, the Oslo flash mob, and the outro paragraphs.
  • Users who live in Denmark will receive the intro, the Copenhagen flash mob, and the outro paragraphs.
  • Users who do not live in the US, Norway, or Denmark will receive the intro, the default flash mob, and the outro paragraphs

If you are a little confused, don't worry.

You can preview your email as each segment, and catch any errors early!

From the marketing tab of a page (your email), click the email preview button (Figure 14.1) to get a preview of your email.

Figure 14.1 The email preview button

You will see a preview of your page, along with a dropdown menu listing your segments (Figure 14.2).

Figure 14.2 Email preview: dropdown with list of segments

You can preview the page as a user belonging to one or more of your segments.

A user cannot have both e.g. Denmark and Norway as their registered country, of course – but it’s very possible for a user to belong to more segments than one, and this lets you test these complex scenarios in an easy manner.

Split testing is a method for doing controlled experiments with for instance content or layout, to see which versions performs the best. With split testing, you  send out two versions of a newsletter or an email to a subset of recipients, and test which version produces the highest conversion rate – and then send out that version to the rest of your recipients.

To setup an Email split test:

  • Create an email
  • Check the Create split test variation checkbox (Figure 15.1)
  • Create variant content - a different subject, sender name, pre-header, or equivalent
Figure 15.1 Split testing emails

After creating the variant content click the Setup split test button in the ribbon bar to open the split test setup dialog (Figure 15.2).

Figure 15.2 The Split Test dialog

From here, you must:

  • Specify how many per cent of email recipients should be involved in the split test – the remaining percentage will receive the best performing version after the split test has found a winner.
    • If you choose 10%, 5% of your total recipients will receive the original and 5% will receive the variant. The conversion rate will be measured on those 10%. The remaining 90% will receive the best performing version.
  • Choose a conversion goal
    • Best engagement compares the Engagement Index (EI) points awarded overall. The EI-point value settings are configured on your top folder, read more here
    • Most opened compares the number of opened emails
    • Most clicked compares the number of links clicked from within the email
  • Choose between starting the test now or scheduling it for later
  • Specifying how to pick the winner
    • After X hours picks a winner after a set number of hours
    • At a given time picks a winner at a specific date and time
    • When X has opened picks a winner after a specified percentage of split test users have opened their email
    • Manually allows you to pick a winner when you decide results are significant
  • Specify who to notify when a winner has been picked automatically

When you are happy with your settings, click Start split test to start (or schedule) your split test. The email is then moved to the split test folder, located under the top folder you are working in.


These are the database tables associated with the Email Marketing feature:


Contains setup data for email marketing delivery providers in the form of an XML document (DeliveryProviderConfiguration) as defined in Settings -> Marketing -> Email Marketing -> Delivery Providers.

Field name Data type Length
DeliveryProviderId int 4
DeliveryProviderName nvarchar 255
DeliveryProviderConfiguration nvarchar Max


Contains setup data for a given email marketing top folder (TopFolderId) as defined in Marketing -> Email marketing. Default tracking- and recipient provider settings are stored as XML documents (TopFolderTrackingProviderConfiguration, TopFolderRecipientProviderConfiguration). Selected delivery provider is linked via TopFolderDeliveryProviderId.

Field name Data type Length
TopFolderId int 4
TopFolderName nvarchar 255
TopFolderSenderName nvarchar 255
TopFolderSenderEmail nvarchar 255
TopFolderSubject nvarchar 255
TopFolderDomainName nvarchar 255
TopFolderTrackingProviderConfiguration nvarchar Max
TopFolderUnsubscribePageId int 4
TopFolderDeliveryProviderId int 4
TopFolderUnsubscribeText nvarchar 255
TopFolderRecipientSpecificContent bit 1
TopFolderRecipientProviderConfiguration nvarchar Max
TopFolderQuarantinePeriod int 4


Defines the folder structure (FolderId, FolderParentId) in email marketing for a given top folder (FolderTopFolderId).

Field name Data type Length
FolderId int 4
FolderParentId int 4
FolderName nvarchar 255
FolderTopFolderId int 4


Contains email configuration data from email marketing. Email source page is stored in EmailPageId. Configurations for recipient- and tracking providers are stored as XML documents in EmailRecipientTrackingProviderConfiguration and EmailTrackingProviderConfiguration. Contents of an email are referenced via EmailMessageId and EmailPlainTextContent (the latter depending on state of EmailIncludePlainTextContent), If split testing is enabled for an email the various EmailVariation* columns are filled.

Field name Data type Length
EmailId int 4
EmailPageId int 4
EmailRecipientProviderConfiguration nvarchar Max
EmailTemplate nvarchar 255
EmailSenderName nvarchar 255
EmailSenderEmail nvarchar 255
EmailSubject nvarchar 255
EmailFileAttachmentPath nvarchar 255
EmailEncoding nvarchar 50
EmailTrackingProviderConfiguration nvarchar Max
EmailUnsubscribePageId int 4
EmailMessageId int 4
EmailDomainName nvarchar 255
EmailVariationName nvarchar 255
EmailVariationEmail nvarchar 255
EmailVariationSubject nvarchar 255
EmailVariationPageId int 4
EmailVariationMessageId int 4
EmailSplitTestIsSent bit 1
EmailFolderId int 4
EmailCreatedDate datetime 8
EmailTopFolderId int 4
EmailDeliveryProviderId int 4
OriginalMessageId int 4
EmailOriginalMessageId int 4
EmailIsTemplate bit 1
EmailTemplateName nvarchar 255
EmailTemplateDescription nvarchar Max
EmailUnsubscribeText nvarchar 255
EmailVariationUnsubscribeText nvarchar 255
EmailScheduledActive bit 1
EmailScheduledSendTime datetime 8
EmailOriginalPreHeader nvarchar Max
EmailVariantPreHeader nvarchar Max
EmailScheduledRepeatInterval int 4
EmailScheduledEndTime datetime 8
EmailRequireUniqueRecipients bit 1
EmailRecipientSpecificContent bit 1
EmailLastExportDate datetime 8
EmailQuarantinePeriod int 4
EmailIncludePlainTextContent bit 1
EmailPlainTextContent nvarchar Max
EmailName nvarchar 255
EmailDisableUnsubscribeTag bit 1


Tracks engagement index scoring for a given email marketing email (EngagementIndexEmailId). Links within email are tracked via XML documents stored in EngagementIndexOriginalLinks and EngagementIndexVariantLinks.

Field name Data type Length
EngagementIndexId int 4
EngagementIndexEmailId int 4
EngagementIndexOpenMailIndex int 4
EngagementIndexOpenMailActive bit 1
EngagementIndexClickLinkIndex int 4
EngagementIndexClickLinkActive bit 1
EngagementIndexAddingProductsIndex int 4
EngagementIndexAddingProductsActive bit 1
EngagementIndexPlacingOrderIndex int 4
EngagementIndexPlacingOrderActive bit 1
EngagementIndexSigningEmailIndex int 4
EngagementIndexSigningEmailActive bit 1
EngagementIndexUnsubscribesEmailIndex int 4
EngagementIndexUnsubscribesEmailActive bit 1
EngagementIndexOriginalLinks nvarchar Max
EngagementIndexVariantLinks nvarchar Max
EngagementIndexTopFolderId int 4


Contains setup data for email marketing split tests. Specific email is defined by SplitTestEmailId.

Field name Data type Length
SplitTestId int 4
SplitTestEmailId int 4
SplitTestName nvarchar 255
SplitTestIncludes int 4
SplitTestIncludesUnits int 4
SplitTestGoalType nvarchar 50
SplitTestActive bit 1
SplitTestStartDate datetime 8
SplitTestEndDate datetime 8
SplitTestEndType int 4
SplitTestOpenedEmails int 4
SplitTestOpenedEmailsUnits int 4
SplitTestHoursTillEnd int 4
SplitTestAfterEndSendBest bit 1
SplitTestAfterEndNotify bit 1
SplitTestAfterEndActionEmail nvarchar 255
SplitTestStartDateTimeZoneId nvarchar 256
SplitTestEndDateTimeZoneId nvarchar 256
SplitTestScheduledSendActive bit 1
SplitTestScheduledSendTime datetime 8
SplitTestScheduledPickWinnerActive bit 1
SplitTestScheduledPickWinnerTime datetime 8
SplitTestWinnerEndDate datetime 8


Contains the contents of email marketing emails in the form of HTML blocks in MessageHtmlBody and MessagePreprocessedHtmlBody.

Field name Data type Length
MessageId int 4
MessageSubject nvarchar 255
MessageSenderName nvarchar 255
MessageSenderEmail nvarchar 255
MessageDomainUrl nvarchar 255
MessageRecipientsSource nvarchar 255
MessageHtmlBody nvarchar Max
MessagePreprocessedHtmlBody nvarchar Max
MessageFileAttachmentPaths nvarchar Max
MessageDeliveryProviderId int 4
MessageRequireUniqueRecipients bit 1
MessageRecipientSpecificContent bit 1
MessageRecipientContentProvider nvarchar Max
MessageQuarantinePeriod int 4
MessageIncludePlainTextBody bit 1
MessagePlainTextBody nvarchar Max


Stores the values (MessageTagValue) of a given email marketing tag (MessageTagName) used in the content of an email marketing email (MessageTagMessageId).

Field name Data type Length
MessageTagId int 4
MessageTagMessageId int 4
MessageTagName nvarchar 255
MessageTagValue nvarchar Max
MessageTagDataType nvarchar 255


Tracks actions (ActionId, ActionType) performed by recipients (ActionRecipientId) on an email marketing email (ActionMessageId) at a specific time (ActionSessionId, ActionTimestamp).

Field name Data type Length
ActionId int 4
ActionSessionId nvarchar 50
ActionTimestamp datetime 8
ActionType nvarchar 255
ActionMessageId int 4
ActionMessageIdString nvarchar 50
ActionRecipientId int 4
ActionRecipientIdString nvarchar 50


Tracks when (RecipientSentTime) a specific email marketing email (RecipientMessageId) was sent to a specific recipient (RecipientKey, RecipientName, RecipientEmailAddress), the tag values for that email (RecipientTags), and a tracking key (RecipientSecret).

Field name Data type Length
RecipientId int 4
RecipientKey nvarchar 255
RecipientName nvarchar 255
RecipientEmailAddress nvarchar 255
RecipientMessageId int 4
RecipientSentTime datetime 8
RecipientErrorMessage nvarchar Max
RecipientErrorTime datetime 8
RecipientTags nvarchar Max
RecipientSecret nvarchar 50