Mailster – Email Newsletter Plugin for WordPress

Mailster – Email Newsletter Plugin for WordPress

Mailster – Email Newsletter Plugin for WordPress

an advanced plugin to send, manage and track your email campaigns

Item Page Support More Templates

Thank you for purchasing my item. If you have any questions that are beyond the scope of this help file, please use my knowledge base as starting point. Thanks so much!


The Mailster Newsletter Plugin for WordPress is an advanced plugin which sends, manages and tracks your email campaigns.

Visit the Mailster Newsletter Plugin Homepage




While this explains how to get the plugin running you should consider to check out all features, read this documentation and send test campaigns to get familiar with the plugin and its possibilities.

To get this plugin working you have to follow these steps

  1. extract the download zip
  2. log in to your WordPress site
  3. goto “Plugins” => “Add new” => “Upload”
  4. Select the extracted zip archive “”
  5. Click “Upload” and wait until the file was uploaded and extracted.
  6. Click “Activate Plugin”
  7. Click on “Newsletter” in the menu

Please go to the Settings page and configure the plugin before you start sending your first campaign!

Your First Campaign

If you have successfully activated the plugin you can create your first campaing like a regular post. Click on “New Campaign” in the “Newsletter” Menu 

The Details

First choose a title for your campaign. The subject could be the same as the title but it’s totally up to you.

All templates are prepared for “Preheaders“. Please see this section for more info about preheaders.

You can define the senders email address, name and the address people can reply to.

The Template

This how the template looks when you start a new campaign. There’s currently no content except the header and the footer part

The Optionbar

The optionbar is divided into 6 buttons:

Adding Content

To add new content you have to add new modules and fill them with content.

You can find the modules of you current template in the module bar on the right (or on the left if you’re  using a RTL language).

You can either click on a module or drag it into the editor to add it to you current campaign. You can rearrange modules by draging them into the new possion or using the arrows on the right.

The modules in the module bar contain screenshots of the module. If you can only see the name of the module the screenshots havn’t been created yet.

It can take several minutes before the screenshots show up.


You can add four types of content:

Automatic insertion

Some modules offer an  button on the right side to insert whole posts including headline, content, button with link to the article and the feature images (if exists)

You can use different type of placeholder tags in your newsletter. Check out this section for more info.

The Options

You can change the colors of your newsletter with the color option on the right. Click the arrows to the right to reset each field or save your newly created color schema to reuse it later.

If you like to set up a background you can select one of the included background in the dropdown. To include your own background just upload them in the mailster directory located at


They will get prepended to the dropdown list.

If you don’t like to embed images – which reduce the file size – you can uncheck the option as well


The Delivery Meta Box is separated into two options: Regular Campaign and Auto responder

Regular Campaign

A Regular Campaign is a campaign which get sent once to each subscriber. The receivers can get defined in the Receivers Meta Box

If you don’t check the “Send this Campaign” checkbox you wont be able to send your campaign.

You can define any date in the future or leave the current date to send the campaign immediately when you hit the save button (Please check out the Cron Job section to know how campaigns get sent in Mailster)

To test your campaign with your email client enter your email and hit the send button.

Auto responder

Please check the Auto responder section for more information

All emails will get sent with your servers time! Please check compare your local time with the time at your server


On the Receivers Meta Box you can limit the receivers for the current campaign 

You can either send to specific lists or send to all available subscribers (List doesn’t matter)

Furthermore you can limit the Receivers by choosing several conditions.

Password protected Web version

To protect the webversion with a password simple add it to the given box. Users are forced to enter this password in order to see the web version

Auto responder

With auto responders you can send campaigns to subscribers after a specific time and after a certain event. There are six types of auto responders available:

  1. Subscriber based auto responder
  2. Action based auto responder
  3. Time based auto responder
  4. User time based auto responder
  5. Follow up auto responder
  6. Action Hook based auto responder

1) Subscriber based auto responders

Subscriber base auto responders a triggered if an event to a specific subscriber occurs. A mail is sent only to a single subscriber if it matches the conditions and is in at least one list.

There are two events when this autoresponder is used

Create a new auto responder

Create a new auto responder campaign like a regular campaign and select the autorespnder tab in the Delivery box

Now you can define when the autoresponder get send after which event. Furthermore you can define some conditions which must be true before the campaign get sent.

In this example the autoresponder campaign get send 15 minutes after user signed up

You can also check your custom field which you can define on the “Subscriber” tab in the settings.










2) Action based auto responders

Action based auto responders are usefull if you would like to send your latest post to your subscribers right after they get published.

You can send any post type including custom post types.

In this example an new campaign – based on the auto responder – is created after a new Post as been published but only if the post was published in any Category or with any Tag or as any Format which basically means every single post.

Please note that always 2 releases should get skipped. That means that the campaign doesn’t get created until you have published the third post with the matching conditions.

You can use the {issue} tag anywhere in your auto responder campaign to count them. This number get increased once a new copy of the campaign has been created.

The counter at the bottom shows the amount of already published posts and is used to calculate the skipped property. You can check the reset counter checkboy and save the campaign to reset the number.


















3) Time based auto responders

To send a campaign with an interval (like daily, every week or yearly) you need time based auto responders

4) User Time based auto responders

If you like to send Birthday wishes you have to choose this type of autoresponder.

This autoresponder requires a custom “Date” field

5) Follow Up auto responders

If you like to send a follow up campaign after a subscriber opens a campaign or clicks a link you need this type of auto responder

6) Action Hook auto responders

If you have a custom application and need to send a campaign when a certain event get triggered you can choose this type.

Call the do_action('your_custom_hook') method to trigger this campaign.

You can add the ID of a subscriber to send the campaign only to the passed IDs:

do_action('your_custom_hook', $ID) or

do_action('your_custom_hook', array($ID1, $ID2,...))

Prepare your auto responder

This is how your autoresponder campaign can look like:

You notice many dynamic tas which get replaced when the campaign get sent.

A dynamic tag is wrapped in brackets like the other tags and start with the post type followed by an underscore and the content to display. After a colon can be a negative integer like -3 which represents the third latest entry of the selected post type.

You can also use absolute values like 23 to use the content from the post with the ID 23

relative tag and absolute tag explained

Some examples:


Instead of “post_” and “page_” you can use custom post types too

Campaign Statuses

Depending on your delivery date and if you have marked the campaign to delivery, each campaign can have up to five statuses.


If a campaign was saved without the “Send this campaign” checkbox checked or a running campaign as been paused


If the campaign is waiting for dispatch


If the campaign is progression or right before to send


If all newsletters where sent the campaign is “finished” the date shows when the campaign has been finished


If you duplicate a campaign it’s initial status is “Draft”

If you don’t have the capability to send campaigns a sixth status is available: “Pending”. This requires someone with the right authority to send this campaign


At the table view of the campaigns you get an overview of your campaigns


The Frontpage displays your newsletter as a “webversion”. It provides a top bar with a link to your homepage, the title of the displayed campaign, a next and previous button to display the next or previous campaign (if exists), an optional share button and a button to close the frame.

With the share button users can share the newsletter via different social media services, bookmark services, via email or via link

Create a custom frontpage

You can create a custom frontpage and include it in your themefolder.

copy the single-newsletter.php file located at


to the root directory of your theme folder. Now you can modify the code and add additional stylesheets to the page.

The plugin will automatically choose this template to display the webversion of the newsletter

Newsletter Homepage

If you activate the plugin you have to create a new homepage for the newsletter. This page handles subscribes and unsubscriptions.

This page must be linked on the settings page “Frontend”

This is the content of this page:

[newsletter_signup]Signup for the newsletter[newsletter_signup_form id=1][/newsletter_signup]
[newsletter_confirm]Thanks for your interest![/newsletter_confirm]
[newsletter_unsubscribe]Do you really like to unsubscribe?[/newsletter_unsubscribe]

There are four shortcode in use:


The content of this shortcode is displayed if the user regular visits the page. By default it includes the [newsletter_signup_form] shortcode


This displays the signup form which can be defined on the settings page. You can add and “id” attribute to use a different form [newsletter_signup_form id=123]


This content is displayed if the new subscriber confirms its email address and clicks on the link in the email. 


This content is displayed before the unsubscribe form is displayed. The unsubscribe form is a single email input field or only a button if the user clicks the unsubscribe ink from a campaigns newsletter. You can add ?unsubscribe to the URL to see this content

Finished Campaigns

If your campaign is finished or currently progressing you are not able to edit it.

You can expand up to four section to reveal more details:

Total Recipients

Gives you a detailed list of all receivers. Subscribers which haven’t received the campaign yet are not included. You can filter the list and define the ordering


Overview of clicked links, including amount and percentage starting with most clicked links.


Overview of used Devices and version. All devices are devided in either Desktop, Mobile or WebClient

Geo Location

Provides an overview of the location where your campaings has been openend *. You can click on an individual country to get the city data (requires track geo lcoations in the settings)

* Geodata is provided by


You can find small boxes  over the links which were clicked. More clicks means a higher percentage.


You can use two types of widgets in Mailster

Newsletter Signup Form

Display you signup form within your sidebar or any other widget ready area. You can use the form which should get displayed and the title of the widget.

Furthermore you can define a static text before or after the form

Newsletter List

Dispaly links to your most recent campaigns. Choose the number to limit the results. Campaings must either be active or finished to get displayed


Tags are placeholder for your newsletter. You can set them anywhere in your newsletter template with the format {tagname}. Custom field tags are induvidual for each subscriber.

You can set alternative content with {tagname|alternative content} which will be uses if [tagname] is not defined. All unused tags will get removed in the final message

Check out the “Tags” Tab on the Settings page!

Dynamic Tags

A dynamic tag is wrapped in brackets like the other tags and start with the post type followed by an underscore and the content to display. After a colon can be a negative integer like -3 which represents the third latest entry of the selected post type.

You can also use absolute values like 23 to use the content from the post with the ID 23

relative tag and absolute tag explained

Some examples:


Instead of “post_” and “page_” you can use custom post types too

Reserved Tags

Following tags are reserved and cannot be used as custom tags:

{unsub}, {unsublink}, {webversion}, {webversionlink}, {forward}, {forwardlink}, {subject}, {preheader}}, {profile}, {profilelink}, {headline}, {content}, {link}, {email}, {firstname}, {lastname}, {fullname}, {year}, {month}, {day}, {share}, {tweet}


Mailster Newsletter Plugin allows you to manage subscribers from the Subscribers overview page.

If you activate your plugin you’ll find only the first and the last name field for the contacts. The users image is provided by

To add more custom field you have to open the “subscribers” tab on the newsletter settings page.


You can make each custom field required and it will be displayed on the subscription form on your website. Use the tag to use this data in your newsletter.

WordPress Users

Mailster Subscribers and WordPress Users can work closely together in Mailster. There’s a dedicate settings page to define all options.

Sync WordPress Users

To keep data of your WordPress Users and your subscribers in sync you can define which fields should get synchronized when data has been updated

You can manually sync them for existing Users/subscribers as well To add Users automatically to you subscribers you have three options

Automatically add new WordPress Users to Mailster

Mailster can add new WordPress Users to your subscribers list

Registered Users

Add the User if he sign ups to your blog via the native registration form provided by WordPress

New Comments

appends a checkbox for users who add a comment to your blog entries


All users added via the backend or with a third party plugin.

Manage Subscribers

If you have a list of subscribers you can simple import them on the “Manage Subscribers” page.

Import Subscribers

You can either upload your CSV file or paste the content directly from Excel into the textarea on the right


If you data has been uploaded to your server you get a raw preview of your contacts.

Only the first ten entries and the last one are shown

You can define to which list you like to add the subscribers and the status they get when they are imported. If you choose “pending” all imported contact will receive an opt-in message to confirm their subscription)

If an subscriber already exits you can choose between three options how Mailster handle the import:

Make sure you have the permission to import your email addresses!

After the import has been finished you can see which emails are not imported.

Export Subscribers

You can export all of your subscribers into a CSV file. The file has to be prepared on your server and can take a while before it’s accessible.

You can drag and drop the columns to define the order

Delete Subscribers

You can delete subscribers one by one or use this bulk delete option. Simple select which lists you would like to empty and click on the Delete Subscribers button. This cannot be undo!


The Mailster Newsletter Plugin comes with a flexible template. To get more templates check out this page

To upload a Mailster compatible template drag the ZIP file into the upload field


The Form

The subscribption form can be defined on the “Form” tab in the settings.

All forms are cached and comes default classes. Depending on your settings the form markup is this:

<form action="" method="post" class="mailster-form mailster-form-submit" id="mailster-form-X">
    <div class="mailster-form-info">
    <div class="mailster-email-wrapper">
        <label for="mailster-email-X">Email <span class="required">*</span></label><input id="mailster-email-X" name="userdata[email]" type="text" value="" class="input mailster-email required" tabindex="1">
    <div class="mailster-firstname-wrapper">
        <label for="mailster-firstname-X">First Name</label><input id="mailster-firstname-X" name="userdata[firstname]" type="text" value="" class="input mailster-firstname" tabindex="2">
    <div class="mailster-lastname-wrapper">
        <label for="mailster-lastname-X">Last Name</label><input id="mailster-lastname-X" name="userdata[lastname]" type="text" value="" class="input mailster-lastname" tabindex="3">
    <div class="mailster-custom-field-wrapper">
        <label for="mailster-custom-field-X">Custom Field</label><input id="mailster-custom-field-X" name="userdata[custom-field]" type="text" value="" class="input mailster-custom-field" tabindex="4">
    <div class="mailster-lists-wrapper">
            <li><label title="Description"><input class="mailster-list-wordpress-users" type="checkbox" name="lists[]" value="wordpress-users" checked> WordPress Users
                <span class="mailster-list-description mailster-list-description-wordpress-users">Description</span>
            <li><label title=""><input class="mailster-list-2nd-list" type="checkbox" name="lists[]" value="2nd-list" checked> 2nd List</label></li>
    <div class="mailster-submit-wrapper form-submit">
        <input name="submit" type="submit" value="Subscribe" class="submit-button button" tabindex="5">

Depending on your settings the markup can look different. X is the ID of the form starting from 0.

There are three ways to embed the form:

  1. Use the [newsletter_signup_form id=X] shortcode
  2. Use mailster_form( $id = 0, $tabindex = 1, $echo = true, $classes = '' ); function in your code
  3. Use the included widgets


Preheaders are small phrases (up to 80 letters) which should help increasing your clickthrough rate. Many email clients display the first letters of an email in their preview area.

Preheaders are invisible in the normal email view and show up only in the preview pane of some clients


Outlook 2007 + 2010

Google Mail


Usefull resources

Cron Job

All of your campaigns are sent via a cronjob. There are two cron services available:


This is the cron service which is built right into WordPress. If you choose this option you don’t have to set up anything else to get your campaign sent. You only have to visit your blog (backend or frontend) regularly to trigger the cron.

Read more about the WordPress cron service here

This type of service is not reccomended for many subscribers!

Real cron service

Much better is a real cron service offerd by your hosting provider.

You have to call a specific URL which looks like:


You can find your URL in the Newsletter Settings page within the “Cron” tab

You can trigger the cron in three ways:
A) open the mentioned link in a browser – which refreshes every x minutes and triggers the job for you
B) let a third part site trigger (which opens the page like your did) which are sometimes free.
C) Tell your provider or host to trigger them for you (same thing but technically slightly different)

There are also some free service out there:

Auto responders  use always the wp_cron service!

For Developers

You can check for Mailster with

    //do stuff with Mailster

Adding new subscribers in Mailster 2 works with the “add” method of the subscribers class.

$subscriber_id = mailster('subscribers')->add($entry, $overwrite);

$subscriber_id holds the ID of the inserted subscriber or a WP_Error object if it fails.

$entry can be a single email as string or a assoc array with field => values pairs

$overwrite overwrites the subscriber with the same email if exists

$subscriber_id = mailster('subscribers')->add(array(
    'firstname' => 'John',
    'lastname' => 'Doe',
    'email' => '',
    'status' => 1, //1 = subscribed (default) , 0 = pending, 2 = unsubscribed, 3 = hardbounced
    'custom-field' => 'Custom Value',
    'referer' => 'Your referer' //default = $_SERVER['REQUEST_URI']
), $overwrite );

To assign lists you can use the assign_lists method like

$success = mailster('subscribers')->assign_lists($subscriber_ids, $lists, $remove_old = false);

$subscriber_ids is either a single id or an array with id’s of subscribers

$lists is either a single id or an array with id’s of lists

$remove_old will remove all assigned lists before assigning the new once

$success is boolean


To work with lists you can use the Lists class with mailster(‘lists’)

Get a list of all lists

$lists = mailster('lists')->get();

a list object look like

   [ID] => 2,
   [parent_id] => 0,
   [name] => 'Wordpress Users',
   [slug] => 'wordpress-users',
   [description] => 'The description',
   [added] => 1411541385,
   [updated] => 1411541385

To get a single list add the $ID as first argument:

$my_lists = mailster('lists')->get($ID);

Basic Example Integration

This is a quick example how to implement a subscribe feature to your plugin

//check if Mailster 2 exits
        //prepare the userdata from a $_POST request. only the email is required
        $userdata = array(
                'email' => $_POST['email'],
                'firstname' => $_POST['firstname'],
                'lastname' => $_POST['lastname'],
                'custom-field' => $_POST['custom-field'],
                'referer' => 'Your referer',
                'status' => 0, //0 forces a confirmation message
        $overwrite = true;
        //add a new subscriber and $overwrite it if exists
        $subscriber_id = mailster('subscribers')->add($userdata, $overwrite);
        //if result isn't a WP_error assign the lists
            //your list ids
            $list_ids = array(123, 456);
            mailster('subscribers')->assign_lists($subscriber_id, $list_ids);
           //actions if adding fails. $subscriber_id is a WP_Error object

Adding Subscribers from WordPress User

You can easily add new subscribers from an existing WordPress User with

$subscriber_id = mailster('subscribers')->add_from_wp_user($user_id, $userdata = array());

$user_id is the ID of the WordPress user

$userdata is an optinal array with user fields which overwrites the values from the WordPress user

$subscriber_id holds the ID of the inserted subscriber or a WP_Error object if it fails.


Useful Snippets

Here are some useful snippets to extend the functionality of Mailster:

adding a custom style to every mail

function mystyle_function($color = 'black'){
	return 'a{color:'.$color.' !important}';
mailster_add_style('mystyle_function', 'red');

adding a dynamic tags

function mytag_function($option, $fallback, $campaignID = NULL, $subscriberID = NULL){
	return 'My Tag: Option: '.$option."; Fallback: ".$fallback;
mailster_add_tag('mytag', 'mytag_function');

use: {mytag:option|fallback}

new error on form submit

function mailster_submit_errors($object){
	$object['errors'][] = 'new error';
	return $object;
add_filter( 'mailster_submit', 'mailster_submit_errors' );

adding additional form elements

function mailster_form_fields($fields, $formid, $form){
	$pos = count($fields) - 1;
	$fields = array_slice($fields, 0, $pos, true) +
	array("fieldID" => "Fieldcontent") +
	array_slice($fields, $pos, count($fields) - 1, true) ;
	return $fields;
add_filter( 'mailster_form_fields', 'mailster_form_fields', 10, 3 );


You can find the change log online here

Sources and Credits

Files are maybe not included because of the license

Once again, thank you so much for purchasing this plugin. As I said at the beginning, I’d be glad to help you if you have any questions relating to this theme. No guarantees, but I’ll do my best to assist. If you have a more general question relating to the themes on ThemeForest, you might consider visiting the forums and asking your question in the “Item Discussion” section.