You can check for Mailster with

if( function_exists( 'mailster' ) ){
    // do stuff with Mailster

To run your code you should wrap it in the

Mailster Closure

The Mailster Closure ensures your code gets only executed if Mailster is completely loaded. If Mailster is not installed or activated it will simply be ignored.

add_action( 'mailster', function(){

   // add your custom coding here.


You can have multiple Mailster Closures in your plugin.

Adding new subscribers in Mailster is done with the “add” method of the subscribers class.

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

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

$entry can be a single email as a string or an associative 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' => '[email protected]',
    '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, $added = null );

$subscriber_ids is either a single id or an array with id’s of your 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 one

$added timestamp when the user was assigned (true = current time)

$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 looks 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 the first argument:

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

Basic Example Integration

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

add_action( 'mailster', function(){

	// define to overwrite existing users
	$overwrite = true;

	// add with double opt in
	$double_opt_in = true;

	// 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' => $double_opt_in ? 0 : 1,

	// 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
	if ( ! is_wp_error( $subscriber_id ) ) {

		// your list ids
		$list_ids = array( 123, 456 );
		mailster( 'subscribers' )->assign_lists( $subscriber_id, $list_ids );

	} else {
		// 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 optional 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.

Unsubscribe a Subscriber

You can unsubscribe a subscriber via the unsubscribe method.

mailster('subscribers')->unsubscribe( $subscriber_id, $campaign_id = null, $status = null, $index = null );

$campaign_id (optional) is the ID of the campaign if you like to keep track of it.

$status (optional) define a status for this action (e.g. “manual unsubscribe”, “unsubscribed via custom action” to give some context.

$index (optional) is the number of the same $campaign_id if sent more than once (default = 0)

There are some alternative shortcuts too which work the same:

Unsubscribe by user hash

mailster('subscribers')->unsubscribe_by_hash( $hash, ... );

Unsubscribe by user md5 value of the email address

mailster('subscribers')->unsubscribe_by_md5( $md5_email, ... );

Unsubscribe by user email

mailster('subscribers')->unsubscribe_by_mail( $email, ... );