jump to navigation

How to Track Email Open Rates March 4, 2010

Posted by Joe Kamenar in web analytics.
Tags: ,
trackback

The email open rate is a metric that is not always accurate, but seems to be one of the main metrics that those who manage email campaigns want to know. The accuracy can be off because in order to measure if an email is opened, a tracking pixel is embedded in the body content of the email message.  Some email reader clients turn off images by default, so unless images are enabled, the tracking pixel won’t register, and thus the email won’t count as being opened, even if the visitor clicks on any links in the email that go back to the website. Other issues, such as preview panes, also affect the accuracy of the open rate, but overall, analyzing the email open rate to look for trends or spikes can give you some insight to how well you are either segmenting or personalizing your messages or using enticing headlines to get people to open them.

Depending on your budget, you may or may not have an email service that gives you open rate statistics. If you think that a standard web analytics package will give you this, think again. Since most analytic packages only measure what happens on your website, they are not privy to knowing if a recipient simply opens your email, but does not click through to any links to get to your site. So, how do you measure the email open rate? If you have the ability to create a simple PHP, JSP or ASP page with a MySQL database, you can create a tracking system that can be as simple or as complex as you would like. You also need to know how to create the email subject and body content, and be able to send it using the “mail” function of your server. The body content will contain your email message, along with a line of tracking code.

To track email open rates, you need to embed the tracking code in your email body content.  Here is a sample that I used for a project I am developing:

<img border=’0′ src=’http://yoursite.com/track.php?MID=1111&SID=2222&#8242; width=’1′ height=’1′>

What this does is to call a PHP script titled “track.php” and it passes a couple parameters that are unique to the email. One is the Merchant ID (MID), and the other is the Subscriber ID (SID). For my project, I want to track the open rates for all my participating merchants when they send out emails to their subscribers. You can use any tracking parameters that you want, based on your needs. If you simply want to know who opened your emails, you can append this – ?email=email_address to the end of your php page name. Of course, you do need the ability to seed each email message with the proper email address. Or, you can simply use – ?campaign=campaign_name and can hard code this into the tracking tag in the email body. To do this, you may need to be using a “mail” client on your PHP, JSP or ASP server. I am not sure what you would do if you simply type up some content send out an email blast using your AOL or Gmail account. You would need to embed some HTML into the message to get your tracking to work.

Now, you need to be able to track these emails when  they are opened. To do that, you will create a simple script that writes your data to a simple database table. If you have never created a database table, you need to first learn how to do that, and that is beyond the scope of this post. Simply create a table that has an auto-increment ID field, plus a field for each tracking variable you wish to track. Then, create a simple script, such as this PHP script that I wrote that would be saved as “track.php”:

<?php
// This code is called by the tracking image call in the email.

// Initialize the database, using the protocol given by your web host:
$username = “dbo2666651512”;
$db_password = “98Qst38Z”;
$database = “db8765431512”;

// Set a variable that gets the current date and time (optional):
$now = time();
$date_added = date(“n/j/y”,time());

//Get the parameters from your email tracking code. These are my parameters:
$MID = $_GET[‘MID’];
$SID = $_GET[‘SID’];

// Database code. The table I created is named ’email_table’
mysql_connect(“db660.perfora.net”,$username,$db_password);
@mysql_select_db($database) or die( “Unable to select database”);

$query = “INSERT INTO email_table VALUES (”,’$date_added’,’$MID’,’$SID’)”;
mysql_query($query) or die( mysql_error() );
mysql_close();
exit;
?>

What will happen is this – when someone opens my email, the value for the Merchant ID ( MID) and Subscriber ID  (SID) are entered into the table named “email_table”. Ideally, you would want to first check to see if that MID and SID combination had already been entered, so you don’t duplicate the count if someone opens the email a second time. I also store the date added, so I can do an analysis of opens over time. Every times someone opens an email sent by my merchant clients, that combination along with the date the email was opened will be entered as a new entry to the table. With this information, if I also track the number of emails that were sent by each merchant, I can calculate the open rate (number of opens / number of emails sent). I could also append a campaign ID to the tracking code, so I can then determine which campaigns had better open rates for the merchant.

As long as you have the appropriate programming background, you can do any types of analysis that you wish on the data your store. The main point of this post was simply how to track the email open rates.

If you have been struggling with how to monitor email open rates, I hope this post will give you some ideas on how to do it and what you can actually track.

Advertisements

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: