Campaigns
Build the message, select recipients, choose the delivery account, validate the content, and execute tracked sends from one editor.
Campaigns Are Reusable Working Assets
In Virtual Mailer, a campaign is designed to be reused over time rather than treated as a one-time send record. You can return to the same campaign, change the selected mailing lists, update the message content, adjust sender settings, modify attachments, and send it again as often as needed.
Each time a campaign is executed, Virtual Mailer stores a separate execution history record for that run. This means one campaign can support repeated sends while still preserving a detailed audit trail for every execution.
- Reusable setup: keep a campaign as an ongoing working asset for newsletters, announcements, promotions, reminders, or other repeat sends.
- Editable between runs: mailing targets, message content, and related settings can be changed before each new execution.
- Per-run history: every campaign execution is stored separately, so past runs are not overwritten when the campaign is updated later.
- Message-level detail: history can be drilled down from the campaign level to each run, and then down again to the individual message sent to each recipient for that run.
What a Campaign Does
A Campaign is the reusable send definition used by Virtual Mailer at execution time. It stores the selected mailing lists, sender identity, mail account, subject, HTML or plain-text body, attachments, tracking flags, unsubscribe behavior, optional recurrence settings, and advanced message options such as CC, BCC, Reply-To, and receipts.
Audience
Campaigns pull recipients from one or more mailing lists. Virtual Mailer removes duplicate addresses and excludes disabled or unsubscribed contacts before sending.
Content
Campaigns support rich HTML design, direct HTML source editing, preview mode, text-version editing, and a plain-text-only format when HTML is not needed.
Execution
When a campaign runs, Virtual Mailer personalizes the content per recipient, injects tracking and unsubscribe elements when enabled, sends through the selected account, and records a full execution history with per-message results.
Working in the Campaigns Module
- Create: use
Newto create a fresh campaign and open the Campaign Editor. - Edit: double-click an existing campaign row to reopen the editor.
- Filter Row: narrow the campaign grid when you manage multiple brands, clients, or recurring sends.
- Delete: remove unused campaigns only after confirming their history is no longer needed. Campaign-related run history and linked send records are treated as part of that campaign's operational footprint.
- History access: campaign execution history can be reviewed from inside the editor after the campaign has been saved at least once, including drill-down to individual run and message detail.
Recommended Campaign Creation Workflow
- Create the campaign and give it a clear internal name in the properties dialog.
- Select the target mailing lists with
To:. - Choose the Mail Account that will deliver the campaign.
- Set the sender identity with
From:and enter the subject line. - Choose HTML or Plain Text format.
- Write or import the message content, then review the Text Version or Plain Text body.
- Enable tracking or unsubscribe only if the selected account is configured for those features.
- Add attachments, CC, BCC, Reply-To, recurrence, or advanced settings as required.
- Save the campaign, preview it, and run
Check HTMLfor HTML campaigns. - Execute a small test send before using a live list at volume.
How the Campaign Editor Is Organized
Top Form Fields
- To: opens the mailing list selector used to choose one or more recipient lists.
- Mail Account: selects the delivery profile the campaign will use when executed.
- From: opens the sender identity editor for the display name and From address.
- Subject: sets the message subject stored with the campaign.
- Attachments: shows the files currently attached to the campaign.
Bottom Workspace
- Content area: the HTML editor or the plain-text editor, depending on message format.
- Edit mode tiles: Design, Source, Preview, and Text Version for HTML campaigns.
- Auto-generate Text Version: controls whether a text alternative should be generated from HTML.
- Save and Execute: the main action buttons on the right side of the editor footer.
- Status bar: shows progress, execution status, and a Cancel option during send operations.
Using the To Field and Mailing List Selection
The To: button opens the campaign list selection dialog. When you confirm the selection, Virtual Mailer replaces the campaign's current selected lists with the new set and updates the summary label immediately.
- Multiple lists are supported: one campaign can target several mailing lists.
- Duplicates are removed: the recipient summary is based on distinct addresses across the selected lists.
- Disabled and unsubscribed contacts are excluded: the summary label shows how many addresses are sendable after exclusions.
- Summary behavior: the editor reports how many unique addresses will receive the campaign, plus how many were excluded because they are disabled or unsubscribed.
Choosing the Delivery Account and From Identity
The selected Mail Account controls the transport used during execution. The campaign's From identity is stored separately, which allows a campaign to reuse an account while still using a different sender name or address when that is valid for the provider.
- Mail Account: determines the send method, authentication, pacing, tracking URL availability, and account-level delivery settings.
- New Mail Account: opens the Mail Account editor directly from the campaign so you can create and select a new account without leaving the workflow.
- From: opens an email properties dialog for the campaign's sender display name and email address.
- SendGrid safeguard: if the selected account uses SendGrid SMTP, Virtual Mailer checks whether the campaign's From address matches the account's required verified sender address. You can accept the correction, continue with the mismatch, or cancel the save.
What Each Campaign Editor Command Does
| Command | Purpose | Operational Notes |
|---|---|---|
| Properties | Edit high-level campaign properties such as campaign name and related metadata. | Use this first so the campaign is clearly identified in grids and history. |
| Priority | Set message importance to Low, Normal, or High. | This affects the message priority headers generated during send. |
| Sync Tracking | Download open-tracking and unsubscribe logs for the campaign's selected account. | Open tracking sync depends on license capabilities, a valid Tracking URL, and configured FTP, FTPS, or SFTP transfer settings. Unsubscribe sync runs separately as part of the same action. |
| Advanced Settings | Open the advanced campaign settings dialog. | Used for unsubscribe footer text, tagline behavior, and read or delivery receipt options. |
| CC / BCC / Reply-To | Toggle and configure additional message headers. | Each toggle opens an email properties dialog when enabled. If you cancel the dialog, the toggle is automatically turned back off. |
| Recurrence | Schedule the campaign for recurring execution. | Turning the option on opens the recurrence editor. Turning it off clears recurrence without reopening the dialog. |
| Attach | Add one or more physical files to the campaign. | Attachments are stored with the campaign and are included on send. |
| Import Template | Load an existing template into the current campaign. | Best used before final campaign-specific editing. |
| Save Template | Save the current campaign content as a reusable template. | HTML campaigns can capture a preview thumbnail when saved as a template. |
| Check HTML | Run HTML validation against the current HTML content. | Validation results are written to the log. The dialog can open the log file directly when issues are found. |
| History | Open execution history for the current campaign. | The campaign must be saved first because history is keyed to the campaign record. |
HTML, Plain Text, and the Editor Modes
| Mode | Use It For | What Virtual Mailer Does |
|---|---|---|
| HTML Format | Rich email design with layout, inline images, links, and preview. | Enables the Campaign Email Editor, template features, HTML validation, Preview mode, and Text Version editing. |
| Plain Text Format | Simple text-only campaigns. | Hides the HTML editor and disables template import, template save, HTML validation, Preview, and Text Version mode. |
| Design | Visual editing of HTML content. | Restores the editable HTML view. |
| Source | Direct HTML source editing. | Shows the underlying markup for precise control. |
| Preview | Check how the message will render when campaign-specific decorations are applied. | Builds a display-only preview that includes the unsubscribe block and the created-by tagline when those features are enabled. |
| Text Version | Review or edit the HTML alternative text body. | Uses the editor's alternative text channel rather than the plain-text-only format. |
Working Efficiently in Design and Source Mode
Design Mode
- Best for visual content editing, basic formatting, image placement, and table-based layout adjustments.
- Use it when you want to work like a traditional visual email editor instead of writing raw HTML.
- Images and layout changes are easier to review here before moving to Preview.
Source Mode
- Best for precise HTML cleanup, direct token placement, and structural adjustments.
- Switching between Source and Design is supported, so you can make code-level changes and then immediately review the visual result.
- Use Source when fine control matters more than drag-and-drop convenience.
Helpful Editor Shortcuts
Ctrl + S: save the campaign.Ctrl + F: search within the HTML source editor.Ctrl + H: replace within the HTML source editor.Shift + Ctrl + F: format the current HTML in Source mode.
How Campaign Content Is Stored and Prepared
- HTML sanitization: when the campaign is bound back to the entity, Virtual Mailer removes outer
html,head, andbodywrappers so only the useful body content is stored. - Temporary image paths: editor-local
file:///image paths are converted back to relative values before saving. - Font normalization: pasted
ptfont sizes are normalized topxfor more consistent rendering. - Text version: the campaign stores a separate HTML text alternative. If auto-generation is enabled, the text version can be regenerated from the HTML on save.
- Plain text body: plain-text campaigns use the dedicated plain text editor instead of the HTML body.
Including Files and Reusing Designs
Attachments
- Use
Attachor the attachment controls to add one or more files. - Regular file attachments are sent as visible paperclip attachments.
- Inline images used by the HTML editor are stored separately from normal file attachments.
- Attachments become part of the campaign and are included in every sent message.
- Files can also be added by drag-and-drop when supported by the editor workflow.
Templates
Import Templateloads an existing reusable design into the campaign.Save Templatestores the current campaign as a reusable template if licensing allows additional custom templates.- Saving a template can capture a preview thumbnail of the current HTML design.
- Template functions are disabled for plain-text-only campaigns.
Campaign-Level Tracking Controls
The campaign editor includes checkboxes for Enable Open Tracking and Include Unsubscribe Option. These are campaign-level decisions, but they still depend on the selected Mail Account having the correct tracking deployment and URL configuration.
- Open tracking: when enabled and the account has a tracking URL, Virtual Mailer injects a 1x1 tracking image into the HTML body during execution.
- Unsubscribe: when enabled and the account has a tracking URL, Virtual Mailer builds a message-specific unsubscribe URL and appends the unsubscribe footer block during rendering.
- Preview support: Preview mode shows the unsubscribe block using a placeholder preview URL so the operator can review the layout before sending.
- No tracking URL: if the account does not provide a valid tracking URL, the preview still shows a harmless placeholder link, but the live send will not have a valid tracking or unsubscribe destination.
When the Sync Tracking Command Is Available
The Sync Tracking command is available only when the selected Mail Account is operationally ready for synchronization.
- Required for unsubscribe sync: a valid Tracking URL plus transfer configuration.
- Required transfer settings: transfer host, transfer user, and a valid FTP, FTPS, or SFTP protocol.
- Open tracking license rule: Basic edition still skips open-log sync even when transfer settings are complete.
- Preflight behavior: if the account is incomplete and sync is forced from stale UI state, the editor now shows a clear readiness warning instead of a vague sync failure.
What the Advanced Settings Dialog Controls
The Advanced Settings dialog is where you adjust per-campaign behaviors that are important but not always changed on every send.
| Setting | Purpose | Notes |
|---|---|---|
| Unsubscribe Prefix Text | Text shown before the unsubscribe link. | Defaults are supplied automatically if the campaign has no custom values. |
| Unsubscribe Linked Text | The clickable unsubscribe text. | Must be non-empty when unsubscribe is enabled for the campaign. |
| Created By Tagline | Controls whether the Virtual Mailer branding footer is added. | Some licenses require the tagline and lock this option on. |
| Delivery Receipt | Requests a delivery receipt header where supported by recipients or servers. | Not all recipient systems honor receipt requests. |
| Read Receipt | Requests a read confirmation header where supported. | This is not the same as open tracking and is often ignored by clients. |
Recurrence and Scheduled Execution
The recurrence toggle controls whether the campaign is configured for scheduled or repeated execution. When you turn recurrence on, Virtual Mailer opens the recurrence editor. When you turn it off, the campaign's recurrence value is cleared immediately.
- License-aware: recurrence is subject to licensing. If the current license does not allow the feature, the product notifies the user and limits the configuration accordingly.
- Stored with the campaign: recurrence parameters are part of the campaign record, not a separate scheduler object.
- Operational guidance: recurrence should only be used after the campaign content and recipient scope are stable.
When Save and Execute Become Available
The Campaign Editor continuously synchronizes UI changes back into the campaign entity and uses the campaign's dirty-state logic to determine whether the form has unsaved changes.
- Save enabled: the
Savebutton is enabled when the campaign is dirty. - Execute enabled: the
Execute Campaignbutton is enabled only when there are no unsaved changes. - Revert-aware behavior: if you make a change and then revert it back to the original value, the campaign can return to a clean state.
- Close prompt: if the form is closed while changes are unsaved, Virtual Mailer prompts you to save, discard, or cancel the close operation.
What Happens When You Save
- The editor content and toggle state are synchronized back into the campaign record.
- HTML content is sanitized and normalized for storage.
- If HTML format is in use and auto-generation is enabled, the text alternative can be regenerated from the HTML.
- Provider-specific validation runs, including the SendGrid verified-sender check.
- The campaign is written to the database and the dirty-state snapshot is reset.
What Happens When You Click Execute Campaign
- Virtual Mailer verifies that the campaign has a From address, at least one selected mailing list, a subject, and a Mail Account.
- The form enters execution mode, disables editing controls, and shows the progress bar and Cancel option.
- The selected Mail Account is reloaded fresh from the database so account changes made while the campaign was open are respected.
- If Pickup Directory is the send method, Virtual Mailer checks the folder and warns if existing
.emlfiles are already present. - The recipient set is built from the selected mailing lists, then distinct addresses are materialized so duplicate recipients are sent only once.
- Disabled and unsubscribed contacts are excluded before sending.
- Licensing limits are applied. If the license allows only part of the send, the campaign can be truncated to the permitted number of recipients.
- A Campaign Pass record is created to represent the execution run.
- For each recipient, the content is personalized, unsubscribe options are rendered if enabled, the branding tagline is applied if enabled, and the tracking pixel is injected when tracking is active.
- The message is sent through SMTP, DirectSend MX, Pickup Directory, SendGrid SMTP, or Outlook Interop according to the Mail Account.
- Progress is updated during the run and per-message outcomes are recorded.
- When execution completes or fails, the status bar is updated and editing controls are restored.
Recipient Filtering, Personalization, and Message Assembly
- Distinct recipient logic: if the same address exists in multiple selected lists, the address is sent once.
- Suppression logic: any address marked unsubscribed or disabled in the selected memberships is excluded.
- Per-recipient message ID: each outbound message receives a unique GUID-based identifier.
- Unsubscribe URL: the unsubscribe link includes the message GUID so future unsubscribe processing can tie the request back to the sent message.
- Tracking pixel: the tracking image includes both the message GUID and campaign ID.
- Attachments: regular file attachments and embedded campaign images are included automatically.
- Receipts: read and delivery receipt headers are applied only when enabled in Advanced Settings.
Execution Status, Cancel, and History
- Status bar: shows progress activity while the campaign is running and completion or failure text afterward.
- Cancel: sets a cancellation flag so the current execution loop can stop safely.
- Form closing protection: the editor cannot be closed while execution is actively in progress unless the run finishes or is canceled first.
- History: use the History command to review past passes for the saved campaign.
Common Pre-Send Checks
- Confirm the correct mailing lists are selected and that the summary count looks reasonable.
- Verify the campaign is saved before attempting execution.
- Check that the Mail Account supports the selected send method and has valid credentials.
- For SendGrid, ensure the campaign From address matches the account's verified sender requirement.
- For HTML campaigns, run
Check HTMLand review the log if warnings or errors are reported. - Preview the campaign with tracking and unsubscribe enabled so footer layout can be reviewed before a live send.
- If using tracking, run
Sync Trackingonly after the tracking scripts, Tracking URL, and transfer settings have been configured on the account.
Read These Next
- Mail Accounts for delivery setup, tracking deployment credentials, and provider-specific configuration.
- Tracking and Unsubscribe for deployment, sync, and hosted unsubscribe behavior.
- Deliverability and Compliance before production sends at scale.
- SendGrid Setup when the selected Mail Account uses SendGrid SMTP.