Sometimes you’re in the need to add some custom dynamic content to your newsletters. You may use it for coupon codes, custom status or even the weather in a specific region. To achieve that you can start with this snippet

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

If you add this to your themes function.php you can now use  {mytag} in your newsletters.
If you like to add options to the tag like {mytag:my_option} you find this value in the $option variable
To define a fallback value in your tag use {mytag|my_fallback} or {mytag:my_option|my_fallback} to add ‘my_fallback’ in the $fallback variable

Using different content for each subscriber

Sometimes you like to display unique content for each subscriber which you don’t like to store in custom fields or create on demand. Here’s an example on how to use coupon codes in a dynamic tag.

Create a source

First you have to define a source where your data is coming from. In our case it’s function which generates the code but it can be a database table or a simple array.

Let’s create a get_subscriber_coupon method which needs the subscriber ID to get the same unique code for each individual subscriber.

function get_subscribers_coupon( $subscriber_id ) {
    $seed = AUTH_SALT;
    $length = 10;
    $code = substr( strtoupper( base_convert( md5( $seed . $subscriber_id ), 16, 36 ) ), 0, $length );
    return $code;

This method creates a 10 characters long, uppercase string based on the subscriber ID. It uses the AUTH_SALT constant as a seed so you don’t get the same code on every website.

You should create your own custom method if you like to make sure nobody can just guess your coupon code.

The dynamic tag

Now we need a dynamic tag which we can use in our campaign to display the generated code. We create a new function for a {coupon} tag.

mailster_add_tag( 'coupon', function( $option, $fallback, $campaignID = null, $subscriberID = null ) {
    // make sure the subscriber ID is set
    if ( ! is_null( $subscriberID ) ) {
        return get_subscribers_coupon( $subscriberID );

    // return the fallback "NOCOUPONCODE4U"
    return $fallback;
}, 10, 4 );

This method will first check if a subscriber is set and will return the code for this subscriber. If not set it will return the $fallback which is an empty string by default or the content you define in your code.

You can now use following code in your campaigns:

{coupon} => no fallback will be displayed

{coupon|NOCOUPONCODE4U} => “NOCOUPONCODE4U” will be displayed if no user is defined

You can also hardcode a fallback into your function if you prefer this.

This is a very basic example of getting custom content for your subscribers.