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 synergy effects where you can:
- Select recipients based on dynamic criteria - like login timestamps or website behavior
- Incorporate actual content/products from your solution in your campaigns
- Register unsubscribes directly and instantly on your user accounts, no manual labour required
- Etc.
So how do you create an email?
- First you create a page in the content tree – e.g. under an Emails folder – which supplies the content of the email
- Then you create an email inside the Email Marketing tool and send it to a list of recipients
As should be apparent, this means that you must create email templates like you create regular page templates, with the added note that you cannot rely on local styling or data which will not be available when the email is rendered in the email client of the user.
The Email Marketing tool is accessed from the Marketing tree (Figure 1.1).
To create an email, you'll need a campaign folder. Below, these campaign folders are described in more detail and how a lot of time can be saved by configuring the folder e.g. by preconfiguring the settings that are inherited by all emails inside the folder.
If you already have a campaign folder and quickly want to create an email, you can skip to the Email section here.
Campaign folders
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).

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.

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)
Below Campaigns, you’ll find the Automation node (Figure 3.1). This node has two folders:
- The Active folder contains the emails currently in the scheduled state from all campaigns
- The Inactive folder contains the emails that has been sent using scheduling

Emails
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 a campaign folder or subfolder and click Create new email.
This opens the email configuration view (Figure 4.1) – this is where you select recipients, specify senders, and so on.

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 4.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.

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 4.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.

For more advanced scenarios, you can use the tools on the Advanced ribbon bar tab (Figure 5.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.

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.
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 6.1).

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 6.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. A setting allows you to disregard the email allowed flag.
- 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). Recipients are counted as unresponsive if they don't open the email. Some email clients, like Outlook, won't render images by default which means we cannot render the tracking pixel and cannot register the email as opened. Instead we set the recipient as responsive if they click any link in the 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 6.3)

Delivery Providers
Dynamicweb ships with a default delivery provider - the Dynamicweb send provider - which is used to send out emails. However, it's also possible to use the following external providers:
- Mandrill
- Sendgrid
To configure an external provider:
- Go to Settings > Marketing > Email Marketing > Delivery providers
- Click New in the toolbar
- Fill in the required details - these vary depending on the provider you select
- Save
Once a delivery provider has been created it can be set as the default provider for any topfolder by editing the topfolder settings, or for a specific email from the Advanced tab.
The Dynamicweb save provider is a provider which saves all emails to disc instead of sending them - this is useful in debugging scenarios.
Statistics
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 8.1).

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 8.2) – you can also see who unsubscribed. The Export button allows you to export email statistics in part or in full.

EmailDeliveryProvider
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 |
EmailMarketingTopFolder
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 | |
TopFolderDescription | nvarchar | Max |
EmailMarketingFolder
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 |
EmailMarketingEmail
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 |
EmailMarketingEngagementIndex
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 |
EmailMarketingSplitTest
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 |
EmailMessage
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 |
EmailMessageTag
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 |
EmailAction
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 |
EmailRecipient
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 |