Using Offline and Online data to drive Google Analytics Remarketing

The Google Analytics platform has been changing from a web analytics tool to a user-centric digital measurement tool (we’ve been calling it Universal Analytics). This evolution includes a number of changes to the system and completely new features. But what can you do when you put all of these pieces together? I wanted to write […]

Using Offline and Online data to drive Google Analytics Remarketing is a post from: Analytics Talk by Justin Cutroni

The post Using Offline and Online data to drive Google Analytics Remarketing appeared first on Analytics Talk.

The Google Analytics platform has been changing from a web analytics tool to a user-centric digital measurement tool (we’ve been calling it Universal Analytics). This evolution includes a number of changes to the system and completely new features. But what can you do when you put all of these pieces together?

I wanted to write a quick post about how a business could use the entire platform to better market to users on the web based on non-website activities. We’ll explore how to use offline and online data to create remarketing lists in Google Analytics.

Before I start a hat-tip to my buddy Dan Stone – a product manager at Google Analytics who often talks about this type of usage.

Influencing Display Advertising using Email Behavior

Businesses interact with users via many different channels – search, display, social, email, etc. And they’re always looking to better understand how one channel impacts another channel. That’s why we have attribution modeling.

But sometime we want to take direct action, or even automated action, in a channel based on user behavior in a separate channel.

For example, I may want to change my search or display strategy for users on my email list. Perhaps I want them to see different display ads because I have a better relationship with them.

Here’s an example.

With Analytics we can collect data from email marketing tools, send it to Google Analytics and then use that information to change display campaigns.

We can send data from email marketing tools, to Google Analytics, then use the data to drive Remarketing.

We can send data from email marketing tools, to Google Analytics, then use the data to drive Remarketing.

The Implementation

With some of the new features in Google Analytics it is very possible to change a user’s display advertising experience based on behavior in other digital environments.

The first thing we need to do is bind the data in Google Analytics to the data in our own systems. This might be the data in a CRM or some other customer system. We’re going to use an old-school method that I describe in the post integrating Google Analytics with a CRM.

Here’s a summary…

When a user visits your site (or your app) Google Analytics sets a unique, anonymous identifier. This identifier is called the Client ID or cid for short.

What we need to do is extract the client ID value from the Google Analytics cookies and pass it to your CRM system. Once it’s in your systems you should be able to join your internal customer IDs with the GA ID. I should note – this is not some task you finish in an afternoon. You need some nerd help and it could take a while.

You can extract the GA identifier from the tracking cookie and send it to your own system.

You can extract the GA identifier from the tracking cookie and send it to your own system.

Make sure you check out these two posts for more information:
Integrating Google Analytics with a CRM
Understanding Cross Device Measurement and the User-ID

Now that we have the two data sets joined we can do something really cool – we can send user-specific data to Google Analytics from other systems. This means that when we send out an email, or some other user-specific actions happens in our system, we can send that behavioral data to Google Analytics. How?

To send data to GA from other systems we use the measurement protocol. This technology let’s us send data to Google Analytics from any system that can connect to the internet. It defines how to send data to GA. We’ll use the measurement protocol to send data about email activities.

When we send an email to a user we will also send a measurement protocol hit to Google Analytics.

When an email is sent from your system, you can send a hit to Google Analytics using the measurement protocol.

When an email is sent from your system, you can send a hit to Google Analytics using the measurement protocol.

Specifically, we’ll send an event piece of data. The event will indicate that an email was sent to this user and the type of email:

www.google-analytics.com/collect?v=1&tid=UA-XX-Y&cid [UniqueID]&t=event&ec=Email&ea=Send&el=BackToSchool2014

If we want to be really fancy then we can also send a second hit to Google Analytics when the user receives the email and another hit when the user opens the email. For example, if the user opens the email then we can trigger a pixel within the email that sends a hit to Google Analytics.

www.google-analytics.com/collect?v=1&tid=UA-XX-Y&cid=[UniqueID]&t=event&ec=Email&ea=Open&el=BackToSchool2014

I need to stress, you need to write a bunch of code that generates these hits. The implementation will really depend on your systems.

The data in the above hits indicates that this email was part of the BackToSchool2014 campaign (look for the event data ec for Event Category, el for Event Label, ea for Event Actions. If we looked in Google Analytics the data would look something like this:

Offline email actions can be captured with the measurement protocol as events.

Offline email actions can be captured with the measurement protocol as events.

All of these hits include a specific parameter named cid. This is the Client ID for the particular recipient of the email that I discussed earlier. When Google Analytics processes these hits they will be merged with the dame user data from the website – because they have the same cid value.

OK, now we have user data coming from two separate systems and Goole Analytics is merging it together.

Here’s where the fun comes in.

Because all of this data is in one place, we can segment users in Analytics based on behavior, then use that list of users for remarketing.

You can join the Google Analytics ID, called CID, with your own ID. But then you can collect off-site actions in GA and tie them to other GA data.

after all of our work, we’re using the GA data measuring sent emails to create a remarketing list.

For those that have not use Remarketing, this is one of my favorite features in Google Analytics. Remarketing let’s you segment user on your website then send that list of users to Google AdWords (or DoubleClick if you use Analytics Premium) for use as a remarketing list.

The remarketing segment would look like this:

Segmenting users that received and opened an email.

Segmenting users that received and opened an email.

This segment is all users that opened the back-to-school email. I could also add a condition that the user received the email, but that’s not really necessary.

Now we can use this list of users in AdWords. How? I may want to use the same creative for their ads. Or perhaps I offer them the same deal that was in the email.

This technique is not just for email – you can use the measurement protocol to send data from any system. That means behavioral information from other digital experiences can be used to drive remarketing lists.

Hopefully this example gives you some idea of how multiple Google Analytics features can be used together to drive real business results.

Using Offline and Online data to drive Google Analytics Remarketing is a post from: Analytics Talk by Justin Cutroni

The post Using Offline and Online data to drive Google Analytics Remarketing appeared first on Analytics Talk.

The Essential Guide To Error Tracking Using Google Analytics

Oft overlooked, error tracking is one of the most valuable ways to use Google Analytics. This essential guide covers how to use Google Analytics to track:

(click a link to jump ahead)

Using:

  • Google Tag Manager
  • Universal Analytics
  • Classic Google Analytics

404 Errors

Tracking 404s is great for:

  • Finding broken links (internal and external)
  • Proactively catching broken functionality
  • Tidying up older site architecture

Use Events to capture the previous page of the visit and the complete location of where the 404 occured. These are available at document.referrer and document.location.href, respectively. These two pieces of information can let you track down exactly where the offending link happens to be; capture these instead of relying on the ‘Page’ or ‘Full Referrer’ dimension in Google Analytics. Those values can easily be altered by filters, campaign parameters, or by other features built into Google Analytics.

FOR GOOGLE TAG MANAGER:

If you’re using Google Tag Manager, checking the title element for the default ‘404’ text is a sturdy test to fire a tracking event. Something like {{title}} equals '404 Page' or {{title}} contains '404 Page', as recommended by Samantha Barnes in her excellent guide to capturing 404 metrics with Google Tag Manager. You can also reference other tags that are on the page – be creative and find a standard value to watch for.

If that’s not possible, you’ll need to get your developers to populate the dataLayer with an event that you can watch for in Tag Manager, like:

var dataLayer = dataLayer||[];
dataLayer.push({'event':'404 Error'});

Then, you add a rule that watches for the 404 Error event, like so:

Then you create a Google Analytics Event tag and populate the Event Action and Event Label with the full URL of the page and the referrer.

As a best practice, I recommend that you try and decouple the mechanism that fires the event into Google Analytics from the actual event. Doing this means you can use a single ‘generic event’ tag to handle the processing of all of your events, and instead just push data into the dataLayer for the event tag to reference. For example:

In the above, each macro simply returns a corresponding dataLayer variable for an event value. It watches for ‘event’:’eventFired’ in the dataLayer. To generate a 404 event, all that needs to happen is the following be pushed into the dataLayer:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
dataLayer.push({
  'event': 'eventFired',
  'eventCategory': '404 Error',
  'eventAction': document.location.href,
  'eventLabel': referrer,
  'eventValue': 0,
  'eventNonInteraction': true
});

This pattern makes adding future events a snap – all you have to do is push the ‘eventFired’ event into the dataLayer with the corresponding data; no need to create a whole new Google Analytics event tag.

If you’re not using Google Tag Manager, you’ll have to manually fire these events into Google Analytics. You can either include the following code as part of the 404 page template, or add it wrapped in a test into the header of each page on your site, e.g.:

if (document.title === 'Oops! You've found a 404 Page') {
  // Appropriate event tracking code from below goes here
}

FOR UNIVERSAL ANALYTICS:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
ga('send', 'event', '404 Error', document.location.href, referrer, 0, {'nonInteraction': true});

FOR CLASSIC GOOGLE ANALYTICS:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
_gaq.push(['_trackEvent','404 Pages', document.location.href, referrer, 0, true]);

JavaScript Errors

JavaScript errors are errors that the browser throws while executing the code that you’ve delivered to it. There are many common causes for JavaScript errors – browser compatibility, coding mistakes, and namespace collisions, to name a few. Tracking JavaScript errors can help you ensure a consistent user experience across browsers, catch bugs that were missed during development, and gauge the impact an error is truly having on users so that a fix can be appropriately prioritized.

FOR GOOGLE TAG MANAGER:

It’s your lucky day. Google Tag Manager offers a JavaScript Error Listener right out of the box. Just select ‘JavaScript Error Listener’ from the ‘Event Listeners’; I recommend you add this to every page.

Then, you’ll need to add another tag that listens for ‘gtm.pageError’ and uses the associated values to populate an Event for Analytics. I recommend reusing the pattern above for events, like this:

dataLayer.push({
  'event':'eventFired',
  'eventCategory': 'JS Errors',
  'eventAction': {{gtm.errorMessage}},
  'eventLabel': URL: {{href}} | File: {{gtm.errorUrl}} | Line: {{gtm.errorLineNumber}},
  'eventValue': 0,
  'eventNonInteraction': true
});

Otherwise, you’ll have to create another tag specifically for turning errors into events, like this:

I make the Event Action the gtm.errorMessage value and the Event Label URL: {{href}} | File: {{gtm.errorUrl}} | Line: {{gtm.errorLineNumber}}. This makes an for an easy-to-read format that can be drilled into for deeper context.

FOR UNIVERSAL ANALYTICS & CLASSIC ANALYTICS:

To track errors in the browser, you’ll need to bind an event listener to the window.onerror event that will generate a hit to send to Google Analytics. Doing this in a 100% backwards-compatible, error-free way can be super tricky, but here’s a copy-and-paste-friendly snippet you could utilize that should work with most browsers and Google Analytics configurations. Feel free to copy and modify to your tastes:

if (typeof window.onerror === 'object' && window.onerror === null) {  // Checks if this seat is taken/exists
  window.onerror = function(message, file, lineNumber) {
    if (typeof ga === 'object') {  // Detects Universal Analytics
      ga('send','event','JS Error', message, 'URL: ' + document.location.href + '| File: ' + file + '| Line: ' + lineNumber, 0, {'nonInteraction': true});
    } else if (typeof _gaq === 'object') {  // Detects Classic Analytics
      _gaq.push(['_trackEvent','JS Error', message, 'URL: ' + document.location.href + '| File: ' + file + '| Line: ' + lineNumber, 0, true]);
    }
  }
}

Server-side Errors

Sending application error data into Google Analytics directly from your server let’s you connect backend performance with front-end behavior. It can also contextualize seemingly unconnected issues across your site.

FOR GOOGLE TAG MANAGER:

Although technically not server-side, you could expose some error information into the dataLayer and then pass it into Google Analytics. On your server, this might look something like:

var dataLayer = dataLayer||[];
<?php
foreach ( $err in $errors ) { ?>
  dataLayer.push({
    'event': 'eventFired',
    'eventCategory': 'Server Error',
    'eventAction': '<?php echo $err->errno . $err->errstr ?>',
    'eventLabel': 'URL: ' + {{href}} + '| File: <?php echo $err->errfile ?> | Line: <?php echo $err->errline ?>';
  });
<?php } ?>

And on the client, you’d see:

<script>
  var dataLayer = dataLayer||[];
  dataLayer.push({
    'event': 'eventFired',
    'eventCategory': 'Server Error',
    'eventAction': 'Fatal error: Undefined class constant "MYSQL_ATTR_USE_BUFFERED_QUERY"'
    'eventLabel': 'URL: http://example.com/test/ | File: /local/www/example.com/includes/database/mysql/database.inc | Line: 43',
    'eventValue': 0,
    'eventNonInteraction': true
  });
</script>

Sidenote:

You’ll notice me using the syntax var dataLayer = dataLayer||[]; and then using dataLayer.push({}) in order to populate the dataLayer in my code; I recommend this as best practice to avoid accidentally overwriting needed information in the dataLayer. Basically, this is read by the browser as ‘The dataLayer is equal to itself, or it’s an empty array’. If the dataLayer doesn’t exists, the next section of the ‘OR’ (||) statement is evaluated, namely ‘dataLayer is an empty array’. In this way, if it exists, it will preserve itself, and if it doesn’t, it will create a new array named dataLayer for us to use.

Not instantiating dataLayer in this way can lead to problems if your code gets messy. For example, if you’re loading the dataLayer at the top of the page, then server errors inside the <content> of the page, this could happen:

<!-- Other HTML -->
<script>
  var dataLayer = [{'PageType':'Local'}, {'timestamp': 2849200492}];
  console.log(dataLayer); // Logs '[ { "PageType": "Local" }, {'timestamp': 2849200492} ]'
</script>
<!-- Other HTML -->
<script>
  var dataLayer = [{'event': 'Server Error'}];
  console.log(dataLayer); // Logs '[ { "event": "Server Error" } ]'
</script>

Should you need to reference either the PageType or timestamp values later, they would return undefined. Using dataLayer = dataLayer||[]; and then dataLayer.push() instead of just instantiating the dataLayer prevents this from happening.

FOR UNIVERSAL ANALYTICS:

The Universal Analytics Measurement Protocol provides a relatively painless way to send hits to Google Analytics directly from your server. All it takes is a POST request, which can be pretty simple to put together. Here’s a quick and dirty example using NodeJS:

var http = require('http');

function fireMeasurementProtocolEvent(category, action, label, value, nonInteraction, cid) {

  var ni = !nonInteraction ? '1' : '0';

  var eventData = "?v=1&tid=UA-XXXXXXX-XX&t=event&cid=" + cid + "&ec=" + category + "&ea=" + action + "&el=" + label + "&ev=" + value + "&ni=" + ni;

  var payload = {

    'hostname': 'www.google-analytics.com',
    'path': '/collect' + eventData,
    'method': 'POST'

  };

  var req = http.request(payload);
  req.end();

};

FOR CLASSIC GOOGLE ANALYTICS:

The truly intrepid can manufacturer fake __utm.gif requests – all you need to do is generate a GET request to http://www.google-analytics.com/__utm.gif with the correct parameters appended to the request. Here’s a great reference from Google on how to do just that.

Modal & Dialog Errors

Finally, a great ‘error’ type that I like to catch is any kind of modal or error dialog presented to a user. Even mundane error messages can reveal more sinister patterns lurking underneath. Tracking and analyzing common site messages is essential for good site hygiene.

FOR GOOGLE TAG MANAGER:

Either create an event tag and a macro to grab the text of the modal, or using the generic tracking event outlined above:

var modal = document.getElementById('modal-message');
dataLayer.push({
  'event': 'eventFired',
  'eventCategory': 'Error Modal',
  'eventAction': modal.textContent,
  'eventLabel': '',
  'eventValue':0,
  'eventNonInteraction': true
});

FOR UNIVERSAL ANALYTICS:

var modal = document.getElementById('modal-message');
ga('send', 'event', 'Error Modal', modal.textContent, '', 0, {'nonInteraction': true});

FOR CLASSIC GOOGLE ANALYTICS:

var modal = document.getElementById('modal-message');
_gaq.push(['_trackEvent','Error Modal', modal.textContent, '', 0, true]);

Have any error-collecting techniques of your own that I missed? Tweet them to me at @notdanwilkerson.

Oft overlooked, error tracking is one of the most valuable ways to use Google Analytics. This essential guide covers how to use Google Analytics to track:

(click a link to jump ahead)

Using:

  • Google Tag Manager
  • Universal Analytics
  • Classic Google Analytics

404 Errors

Tracking 404s is great for:

  • Finding broken links (internal and external)
  • Proactively catching broken functionality
  • Tidying up older site architecture

Use Events to capture the previous page of the visit and the complete location of where the 404 occured. These are available at document.referrer and document.location.href, respectively. These two pieces of information can let you track down exactly where the offending link happens to be; capture these instead of relying on the 'Page' or 'Full Referrer' dimension in Google Analytics. Those values can easily be altered by filters, campaign parameters, or by other features built into Google Analytics.

FOR GOOGLE TAG MANAGER:

If you're using Google Tag Manager, checking the title element for the default '404' text is a sturdy test to fire a tracking event. Something like {{title}} equals '404 Page' or {{title}} contains '404 Page', as recommended by Samantha Barnes in her excellent guide to capturing 404 metrics with Google Tag Manager. You can also reference other tags that are on the page - be creative and find a standard value to watch for.

If that's not possible, you'll need to get your developers to populate the dataLayer with an event that you can watch for in Tag Manager, like:

var dataLayer = dataLayer||[];
dataLayer.push({'event':'404 Error'});

Then, you add a rule that watches for the 404 Error event, like so:

Then you create a Google Analytics Event tag and populate the Event Action and Event Label with the full URL of the page and the referrer.

As a best practice, I recommend that you try and decouple the mechanism that fires the event into Google Analytics from the actual event. Doing this means you can use a single 'generic event' tag to handle the processing of all of your events, and instead just push data into the dataLayer for the event tag to reference. For example:

In the above, each macro simply returns a corresponding dataLayer variable for an event value. It watches for 'event':'eventFired' in the dataLayer. To generate a 404 event, all that needs to happen is the following be pushed into the dataLayer:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
dataLayer.push({
  'event': 'eventFired',
  'eventCategory': '404 Error',
  'eventAction': document.location.href,
  'eventLabel': referrer,
  'eventValue': 0,
  'eventNonInteraction': true
});

This pattern makes adding future events a snap - all you have to do is push the 'eventFired' event into the dataLayer with the corresponding data; no need to create a whole new Google Analytics event tag.

If you're not using Google Tag Manager, you'll have to manually fire these events into Google Analytics. You can either include the following code as part of the 404 page template, or add it wrapped in a test into the header of each page on your site, e.g.:

if (document.title === 'Oops! You've found a 404 Page') {
  // Appropriate event tracking code from below goes here
}

FOR UNIVERSAL ANALYTICS:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
ga('send', 'event', '404 Error', document.location.href, referrer, 0, {'nonInteraction': true});

FOR CLASSIC GOOGLE ANALYTICS:

var referrer = document.referrer;
if (referrer === '') {
  referrer = 'No Referrer';
}
_gaq.push(['_trackEvent','404 Pages', document.location.href, referrer, 0, true]);

JavaScript Errors

JavaScript errors are errors that the browser throws while executing the code that you've delivered to it. There are many common causes for JavaScript errors - browser compatibility, coding mistakes, and namespace collisions, to name a few. Tracking JavaScript errors can help you ensure a consistent user experience across browsers, catch bugs that were missed during development, and gauge the impact an error is truly having on users so that a fix can be appropriately prioritized.

FOR GOOGLE TAG MANAGER:

It's your lucky day. Google Tag Manager offers a JavaScript Error Listener right out of the box. Just select 'JavaScript Error Listener' from the 'Event Listeners'; I recommend you add this to every page.

Then, you'll need to add another tag that listens for 'gtm.pageError' and uses the associated values to populate an Event for Analytics. I recommend reusing the pattern above for events, like this:

dataLayer.push({
  'event':'eventFired',
  'eventCategory': 'JS Errors',
  'eventAction': {{gtm.errorMessage}},
  'eventLabel': URL: {{href}} | File: {{gtm.errorUrl}} | Line: {{gtm.errorLineNumber}},
  'eventValue': 0,
  'eventNonInteraction': true
});

Otherwise, you'll have to create another tag specifically for turning errors into events, like this:

I make the Event Action the gtm.errorMessage value and the Event Label URL: {{href}} | File: {{gtm.errorUrl}} | Line: {{gtm.errorLineNumber}}. This makes an for an easy-to-read format that can be drilled into for deeper context.

FOR UNIVERSAL ANALYTICS & CLASSIC ANALYTICS:

To track errors in the browser, you'll need to bind an event listener to the window.onerror event that will generate a hit to send to Google Analytics. Doing this in a 100% backwards-compatible, error-free way can be super tricky, but here's a copy-and-paste-friendly snippet you could utilize that should work with most browsers and Google Analytics configurations. Feel free to copy and modify to your tastes:

if (typeof window.onerror === 'object' && window.onerror === null) {  // Checks if this seat is taken/exists
  window.onerror = function(message, file, lineNumber) {
    if (typeof ga === 'object') {  // Detects Universal Analytics
      ga('send','event','JS Error', message, 'URL: ' + document.location.href + '| File: ' + file + '| Line: ' + lineNumber, 0, {'nonInteraction': true});
    } else if (typeof _gaq === 'object') {  // Detects Classic Analytics
      _gaq.push(['_trackEvent','JS Error', message, 'URL: ' + document.location.href + '| File: ' + file + '| Line: ' + lineNumber, 0, true]);
    }
  }
}

Server-side Errors

Sending application error data into Google Analytics directly from your server let's you connect backend performance with front-end behavior. It can also contextualize seemingly unconnected issues across your site.

FOR GOOGLE TAG MANAGER:

Although technically not server-side, you could expose some error information into the dataLayer and then pass it into Google Analytics. On your server, this might look something like:

var dataLayer = dataLayer||[];
<?php
foreach ( $err in $errors ) { ?>
  dataLayer.push({
    'event': 'eventFired',
    'eventCategory': 'Server Error',
    'eventAction': '<?php echo $err->errno . $err->errstr ?>',
    'eventLabel': 'URL: ' + {{href}} + '| File: <?php echo $err->errfile ?> | Line: <?php echo $err->errline ?>';
  });
<?php } ?>

And on the client, you'd see:

<script>
  var dataLayer = dataLayer||[];
  dataLayer.push({
    'event': 'eventFired',
    'eventCategory': 'Server Error',
    'eventAction': 'Fatal error: Undefined class constant "MYSQL_ATTR_USE_BUFFERED_QUERY"'
    'eventLabel': 'URL: http://example.com/test/ | File: /local/www/example.com/includes/database/mysql/database.inc | Line: 43',
    'eventValue': 0,
    'eventNonInteraction': true
  });
</script>

Sidenote:

You'll notice me using the syntax var dataLayer = dataLayer||[]; and then using dataLayer.push({}) in order to populate the dataLayer in my code; I recommend this as best practice to avoid accidentally overwriting needed information in the dataLayer. Basically, this is read by the browser as 'The dataLayer is equal to itself, or it's an empty array'. If the dataLayer doesn't exists, the next section of the 'OR' (||) statement is evaluated, namely 'dataLayer is an empty array'. In this way, if it exists, it will preserve itself, and if it doesn't, it will create a new array named dataLayer for us to use.

Not instantiating dataLayer in this way can lead to problems if your code gets messy. For example, if you're loading the dataLayer at the top of the page, then server errors inside the <content> of the page, this could happen:

<!-- Other HTML -->
<script>
  var dataLayer = [{'PageType':'Local'}, {'timestamp': 2849200492}];
  console.log(dataLayer); // Logs '[ { "PageType": "Local" }, {'timestamp': 2849200492} ]'
</script>
<!-- Other HTML -->
<script>
  var dataLayer = [{'event': 'Server Error'}];
  console.log(dataLayer); // Logs '[ { "event": "Server Error" } ]'
</script>

Should you need to reference either the PageType or timestamp values later, they would return undefined. Using dataLayer = dataLayer||[]; and then dataLayer.push() instead of just instantiating the dataLayer prevents this from happening.

FOR UNIVERSAL ANALYTICS:

The Universal Analytics Measurement Protocol provides a relatively painless way to send hits to Google Analytics directly from your server. All it takes is a POST request, which can be pretty simple to put together. Here's a quick and dirty example using NodeJS:

var http = require('http');

function fireMeasurementProtocolEvent(category, action, label, value, nonInteraction, cid) {

  var ni = !nonInteraction ? '1' : '0';

  var eventData = "?v=1&tid=UA-XXXXXXX-XX&t=event&cid=" + cid + "&ec=" + category + "&ea=" + action + "&el=" + label + "&ev=" + value + "&ni=" + ni;

  var payload = {

    'hostname': 'www.google-analytics.com',
    'path': '/collect' + eventData,
    'method': 'POST'

  };

  var req = http.request(payload);
  req.end();

};

FOR CLASSIC GOOGLE ANALYTICS:

The truly intrepid can manufacturer fake __utm.gif requests - all you need to do is generate a GET request to http://www.google-analytics.com/__utm.gif with the correct parameters appended to the request. Here's a great reference from Google on how to do just that.

Modal & Dialog Errors

Finally, a great 'error' type that I like to catch is any kind of modal or error dialog presented to a user. Even mundane error messages can reveal more sinister patterns lurking underneath. Tracking and analyzing common site messages is essential for good site hygiene.

FOR GOOGLE TAG MANAGER:

Either create an event tag and a macro to grab the text of the modal, or using the generic tracking event outlined above:

var modal = document.getElementById('modal-message');
dataLayer.push({
  'event': 'eventFired',
  'eventCategory': 'Error Modal',
  'eventAction': modal.textContent,
  'eventLabel': '',
  'eventValue':0,
  'eventNonInteraction': true
});

FOR UNIVERSAL ANALYTICS:

var modal = document.getElementById('modal-message');
ga('send', 'event', 'Error Modal', modal.textContent, '', 0, {'nonInteraction': true});

FOR CLASSIC GOOGLE ANALYTICS:

var modal = document.getElementById('modal-message');
_gaq.push(['_trackEvent','Error Modal', modal.textContent, '', 0, true]);

Have any error-collecting techniques of your own that I missed? Tweet them to me at @notdanwilkerson.

Understanding Cross Device Measurement and the User-ID

One of the fundamental new features of Universal Analytics is user-centric measurement. This includes measurement across multiple devices – computers, smart phones, tablets, kiosks, etc. But this change introduces a number of new challenges for analysts and marketers. In order to do cross device measurement you need to understand some of the challenges and limitation. […]

Understanding Cross Device Measurement and the User-ID is a post from: Analytics Talk by Justin Cutroni

The post Understanding Cross Device Measurement and the User-ID appeared first on Analytics Talk.

One of the fundamental new features of Universal Analytics is user-centric measurement. This includes measurement across multiple devices – computers, smart phones, tablets, kiosks, etc.

The User-ID feature let's you measure the user journey across multiple devices - and even in stores.

But this change introduces a number of new challenges for analysts and marketers. In order to do cross device measurement you need to understand some of the challenges and limitation. Let’s begin our exploration of cross device data with a discussion about how it works.

How Cross Device Measurement Works

You’ll recall that most analytics tools set an anonymous identifier to measure users. On websites the JavaScript code creates the identifier and stores it in a cookie. On mobile apps the SDK creates the identifier and stores it in a database on the device. (We call this default ID the Client-ID).

We actually discussed this concept in our Google Analytics Platform Principles course. Skip to 21 seconds for details – but the whole video is helpful :)

The User-ID feature lets you override this default behavior. So rather than letting the tracking code create the a Client-ID, YOU can create and use your own identifier. How do you do that?

Well, your business needs to have some way of identifying users. Don’t worry, most businesses do. A CRM system or customer database usually has a User-ID that you can use.

The important thing is that you can create the technology that moves the ID from your database into your website, app or other digital experience where your users interact with your content.

The User-ID value must originate from your systems. It must eventually appear in the tracking code on your site or in your app. The User-ID will then be sent to Google Analytics  with each data hit.

The User-ID value must originate from your systems. It must eventually appear in the tracking code on your site or in your app. The User-ID will then be sent to Google Analytics with each data hit.

In the above diagram the company would need to create code that pulls the User-ID from the database, then passes it through the web servers, and finally places it in the Google Analytics Tracking code that appears on the website.

I know – that seems like a lot of work! But a good tech person can make this happen.

After you add all the necessary code, and set up the User-ID feature in Google Analytics, then the actual id value that you supply is sent to Google Analytics with each hit (see my post on hits, sessions and users to learn about all the different hit types in Google Analytics.)

Then, as Google Analytics processes the data, it groups hits with the same User-ID together. It does not matter if the hits come from a website, mobile app or some other device.

Hits from the same user can be grouped together as long as each hit has the same User-ID.

Hits from the same user can be grouped together as long as each hit has the same User-ID.

In the above image there would be three unique users – one user with a User-ID=1, one user with a User-ID=2 and one user with a User-ID=5. Again – it doesn’t matter where the hits come from (mobile, web, kiosk, etc.).

But what about instances when the User-ID is not present? For example, what if the user is not logged in and we can not retrieve the User-ID? Good question.

In this case, Google Analytics will go back to its default behavior and generate it’s own User-ID (again, this is called a Client-ID, because the ID is specific to the client or device). Obviously this ID can not be used to measure across devices as it will only exist on the device where it is set.

But now we have a scenario where a user might have two different User-ID numbers for a single user? Isn’t this going to have an impact on the data? Aren’t we trying to avoid that? This sucks!

Well – it’s not that simple. Let’s talk about something called Session Unification.

Session Unification

The above scenario is very common. You will not always be able to set the User-ID in Google Analytics – even for known users. The result is some hits and sessions will have a User-ID value, and some with an automatically generated User-ID value.

It's not always possible to send your own User-ID to Google Analytics.

It’s not always possible to send your own User-ID to Google Analytics.

Google Analytics has a feature called Session Unification. When activated, it will unify, or group, hits with the manually set User-ID and hits with an auto-generated User-ID together. This means that Google Analytics can associate some hits that were received prior to setting the User-ID.

Here’s the definition of Session Unification from the Google Analytics Help center (I think it’s pretty good!):

Session unification allows hits collected before the User-ID is assigned to be associated with the ID, as long as those hits happen within the same session in which a specific ID value is assigned for the first time.

This means that Google Analytics will only associate hits collected in the same session AND it must be in the first session where the User-ID is set.

This functionality is sometimes called “stitching” – and it differs from one tool to another.

Google Analytics will not go back in time and stitch every single session from a given user together. I can hear the groans now – and the comparisons to other tools. I hope to write about session unification in a later post. But I think a lot of people that are going to complain about this are missing the point. It’s not “can we stitch data together” it’s “should we stitch data together?”. Rant over.

So how does Session Unification impact the data? Well, to understand that we need to talk about another topic the User-ID View and reports.

The User-ID View

We all know the basic hierarchy of a Google Analytics account. Within your account you can create a number of properties. Under a property you can create a number of views – which were formerly called profiles.

Now you can designate certain views as User-ID views. This means that the view will be filtered and the only data in this view is data that contains hits where you set the User-ID value.

Only a Google Analytics view with User-ID enabled will display information about cross-device users.

Only a Google Analytics view with User-ID enabled will display information about cross-device users.

Obviously this view will have less data than a standard view where the User-ID is not enabled. But the idea is that this view will be able to provide deeper insights into how users who are logged in – a VERY valuable segment of your users – interact with your business across multiple devices.

To view all of the data, hits with and without a User-ID, you would use a standard view.

Let’s also consider the scenario from above – when a manually set User-ID is present in some sessions, but not others. The result is that the data from sessions without your User-ID will not be in the User-ID view.

Only hits that contain a manually set User-ID will be included in a User-ID view.

Only hits that contain a manually set User-ID will be included in a User-ID view.

There are also some other significant differences between views that do, and do not, have User-ID feature enabled.

1. Certain metrics are calculated differently. Obviously if a User-ID view contains different data, then certain metrics will be calculated differently.

For example, the number of Users is calculated based on the number of unique User-ID values. This will provide a fairly accurate view of the number of users. It will probably be less than the number of users in a standard view because that that view will also include users where you do not set a User-ID.

2. Cross device reports. This is the HUGE benefit of a User-ID view. These reports provide some awesome insights into how users access your content from multiple devices. More info about the reports below.

3. Limited date range. When working with a User-ID view you can only change the date range to the past 90 days. This is consistent with the standard 90-day user look-back window in other features, like Multi-Channel Funnels and user segments.

Implementing Cross Device Measurement

Implementing the User-ID feature can be involved, depending on your specific infrastructure. Here’s a brief overview of the process.

1. First, you need to “turn on” the user ID feature for a given property.

2. Second, you need to add the actual user ID value to the data collection. For website, this means you need to modify the JavaScript tracking code. For mobile apps you need to change the SDK.

3. Third, create a User-ID view. This is a special data view that includes new reports.

Let’s get into a bit more detail.

1. Enable User-ID Feature

This is really important to read and understand the terms. For example, it’s important to note that you can not use personally identifiable information as the User-ID. This includes an email address, name, etc.

To use the User-ID feature you must read the User-ID policy and agree to the terms.

To use the User-ID feature you must read the User-ID policy and agree to the terms.

You also really need to take a look at your own privacy policy and make sure it complies with the following:

You will give your end users proper notice about the implementations and features of Google Analytics you use (e.g. notice about what data you will collect via Google Analytics, and whether this data can be connected to other data you have about the end user). You will either get consent from your end users, or provide them with the opportunity to opt-out from the implementations and features you use.

2. Implement User-ID in your Tracking Code

Now for the coding! Go get your nerds and Red Bull! Just kidding.

As I mentioned above, the User-ID value must come from you. You must generate the ID from one of your systems. Once you do that you must place it inside the tracking code. The hard part is writing the code that moves the User-ID from your systems and puts it in {{ USER_ID }} in the code snippets below..

Let’s look at some of the most common code formats.

Adding the User-ID to website tracking

Adding a User-ID to the JavaScript code is fairly easy – it’s a single line.

ga('create', 'UA-XXXX-Y', 'auto');
ga('set', '&uid', {{ USER_ID }});
ga('send', 'pageview');

Remember, the User-ID needs to be set before any hits are sent to Google Analytics. So make sure you call the set command before a pageview, event, transaction, etc. is sent.

It’s also recommended that you include the set method on ALL of the pages, not just one page.

See the developer docs for more about JavaScript information.

Adding the User-ID to the Android SDK

t.set("&uid", {{ USER_ID }});

See the developer docs for more Android information.

Adding the User-ID to the iOS SDK

[tracker set:@"&uid" value:{{ USER_ID }}];

See the developer docs for more iOS information.

For both the Android code and the iOS code, you only need to set the User-ID once. Once it is set once the User-ID will be sent with all subsequent hits. But try to set it before any hit is sent to Google Analytics.

Adding the User-ID to the Measurement Protocol

Adding the User-ID to a measurement protocol hit is actually really easy. All you need to do is add the uid parameter in each hit. So a hit might look something like this:

http://www.google-analytics.com/collect?v=1&_v=j16&a=164718749&t=pageview&_s=1&dl=http%3A%2F%2Fcutroni.com%2F&ul=en-us&uid=hsjfy4782jduyth6k4

Adding the User-ID via Google Tag Manager

A quick note that you can also set the User-ID with Google Tag Manager. You’ll find the setting in the ‘More Settings > Fields to set’. You’ll also need to create a macro to pull the actual User-ID value from a cookie or the data layer.

You can set the User-ID value with Google Tag Manager.

You can set the User-ID value with Google Tag Manager.

In addition to adding the User-ID to your data collection code, you must also choose if you want to use Session Unification. See above for more information on session unification.

The second step in setting up the User-ID is to add the actual identifier to the tracking code for your site or app.

The second step in setting up the User-ID is to add the actual identifier to the tracking code for your site or app AND configuring the session unification setting.

Now it’s time to add a User-ID view.

3. Create a User ID View

As mentioned above, a User-ID view is a filtered view of your data. It only includes hits in which you have set the User-ID value. This view also contains reports that show cross device usage and other user-centric metrics.

Please note, this view is in ADDITION to the other views that you have for a property. This means that you will need to configure things like goals, filters custom reports, dashboards, etc. on this new view.

You must create a new User-ID view to see the Google Analytics cross device reports.

You must create a new User-ID view to see the Google Analytics cross device reports.

That’s really it. I don’t want to oversimplify the implementation. But most of the work is really creating the code that pulls your User-ID from your systems and then places it in the correct tracking code.

Data and Reports

We finally made it, let’s look at some data and figure out how we can use this.

Remember, in all of these reports we’re trying to understand the behavior of our users. And we’re not just looking at the behavior of everyone – we’re looking at the behavior of those users that have self identified. This is really important as this group is naturally very valuable.

User-ID Coverage

Let’s start by understanding what percentage of our users are actually logged in.

Remember, you’ll have two different profiles with data. One profile will just be all of the data, the other will be a User-ID profile that only contains information about logged in users.

The Coverage Report identifies the data that has a User-ID associate with it vs. the data that does not have a User-ID.

The User-ID Coverage report shows what percentage of your sessions have a User-ID associated with them.

The User-ID Coverage report shows what percentage of your sessions have a User-ID associated with them.

Remember, you’re probably not going to get 100% User-ID coverage – unless your online experience requires authentication. But this depends on your specific business and your specific implementation.

You can use this data to get a better understanding of how big your data pool is – will you be making decisions on 1% of sessions or 50%?

Device Overlap

Ok this is where we start to get into the really interesting data. Here’s a visualization that shows the device overlap. That means the percentage of users that use various combinations of devices.

Device overlap shows the number of users and the value of users based on combinations of devices.

Device overlap shows the number of users and the value of users based on combinations of devices.

Rather than just looking at how many people use certain combinations of devices, let’s look at the associated revenue from those combinations. Notice that you can change the display using the selector at the top of the chart?

The Device overlap report also includes detailed information about how combinations of devices drive value.

The Device overlap report also includes detailed information about how combinations of devices drive value.

So what’s the actionability here?

Do people who use a certain combination of devices behave differently than others? Are people who use tablet and desktop more valuable than those that use tablet and phone? If so – how do we encourage more of that behavior? Is it via marketing? Changes to the platform?

And don’t forget, you need to add a LOT of context to this data. You need to keep in mind your marketing initiatives along with the user experience that you offer your users on each device.

Device Pathing

Now let’s move on to device pathing. This report shows the device used for a sequence of sessions.

Device Pathing shows the user sequence of devices.

Device Pathing shows the user sequence of devices.

You can look at a specific path prior to, or after, a user action. The action could be a goal conversion, a pageview, a transaction or an event.

You can view the device path prior to, or after, specific user actions.

You can view the device path prior to, or after, specific user actions.

What’s the actionability here? Let’s look at a use-case.

If you have a SaaS business you may offer your users a free trial. In this case the user would create an account for the trial and then use your service. At the end of the trial they would need to upgrade to a real account.

The first thing you could do is look at the user’s device behavior after creating their free trial account. Did they perform any specific tasks on a specific device? Was one device more popular than another? If so maybe you can simplify the workflow on that device.

You could also look at the device path at the end of their trial, when they upgraded to a paying account. Did they perform the upgrade on a certain device? Or, more importantly, was the conversion rate higher on on a certain type of device? If so, you might want to simplify or optimize the process on that type of device.

Don’t forget to look back at the Device Overlap report to understand if a certain combination of devices yielded a more valuable customer.

Also notice that there are a lot of ways that you can configure this report to view different paths. One of the most important things to note is that you can not choose specific instances of each item. For example, if a user generates multiple transactions you can not choose a specific transaction.

You can choose to view the device path before or after various user actions.

You can choose to view the device path before or after various user actions.

My suggestion is to create a goal, page or unique event for the most important user actions – the ones that represent the transition from one phase of the customer lifecycle to another. That way you will always be able to see the device path before and after the action.

Device Acquisition Report

Finally we have the Acquisition Device report. This is similar to the Device Overlap report in that it helps you understand the value of users on a certain device. But the difference is that it shows the value based on the first device type.

Use the Device Acquisition report to understand if users acquired on a certain device generate revenue on the same device or different devices.

Use the Device Acquisition report to understand if users acquired on a certain device generate revenue on the same device or different devices.

What’s the actionability here? Do users acquired on a specific type of device generate more value on the same device or on other devices? If so how can you drive more of that behavior?

Segmentation

One final thing to mention. You may have noticed that you can apply segmentation to all of these reports. Segmentation will work the same in these reports as it does in all other GA reports.

If you create a session based segment then Google Analytics will show all the paths that include a session that meets your criteria.

If you create a user based segment then Google Analytics will show all of the paths generated from users that match your criteria.

Did you make it to the end? I hope this post gave you some insights into how Cross Device Measurement works. There’s going to be a lot of chatter about User-ID and cross device measurement – some positive, some negative. And I have a lot more to say – but this post is long enough!

Understanding Cross Device Measurement and the User-ID is a post from: Analytics Talk by Justin Cutroni

The post Understanding Cross Device Measurement and the User-ID appeared first on Analytics Talk.

Universal Analytics: Now out of beta!

We’ve been talking about Universal Analytics for a long time – over a year. In that time Universal has always been in beta because it was not 100% compatible with the existing version of GA. Sure, various parts of the Universal platform have rolled out, like the Measurement Protocol and Dimension Widening, but we were […]

Universal Analytics: Now out of beta! is a post from: Analytics Talk by Justin Cutroni

The post Universal Analytics: Now out of beta! appeared first on Analytics Talk.

We’ve been talking about Universal Analytics for a long time – over a year. In that time Universal has always been in beta because it was not 100% compatible with the existing version of GA. Sure, various parts of the Universal platform have rolled out, like the Measurement Protocol and Dimension Widening, but we were missing things like Remarketing and Audience data. But no more :)

I’m excited to say that as of today, April 2, 2014, Universal Analytics is out of beta!

Universal Analytics: The next generation of Google Analytics

Let’s run through everything you need to know about the announcement.

100% Feature Compatibility

Universal Analytics now supports all standard Google Analytics features. This includes:

Remarketing with Google Analytics. This is one of my favorite analytics features – and it made me very sad that Universal Analytics did not support it. But that’s in the past – You can now use the remarketing feature with Universal Analytics.

Audience reporting. The audience reports are an awesome way to understand who is using your site. They include data like gender and interest categories. This can be incredible helpful when trying to understand if the correct audience is using your site. Now you can use this feature with Universal Analytics.

Premium SLA Support. For all of those using Google Analytics Premium, all of your standard SLAs now apply to Universal Analytics. This includes data collection, data processing, etc.

Full Google Tag Manager support. Google Tag Manager now fully supports all Universal Analytics features, this includes audience data and the new User ID feature (discussed below).

I’ve said it many, many times – I’m a big fan of tag management. If you are going to migrate to Universal Analytics you might as well migrate to Tag Manager (or any tag management solution) now!

Universal Analytics is Google Analytics – and vice versa. Everything that Google Analytics can do, Universal Analytics can do – and more :)

Cross Device Measurement

In addition to complete feature compatibility, cross device measurement, via the User-ID feature, is now available.

The User-ID feature let's you measure the user journey across multiple devices - and even in stores.

The User-ID feature let’s you measure the user journey across multiple devices – and even in stores.

As you recall, this feature lets businesses use their own User-ID to measure customers across multiple devices. This feature includes some awesome reports to help businesses understand which devices and behaviors generate value. Here’s a quick overview:

Device Overlap: This report can help you identify what types of devices your users use to access your service or content.

The Device Overlap report shows what percentage of users access your content from multiple devices.

The Device Overlap report

Device Paths: This report will show the last five devices that were used prior to a conversion. It’s a bit like the Multi-Channel Funnels report – but for devices.

The Device Path report shows the last five devices that were used prior to a conversion.

The Device Path report

Acquisition Device: This report shows revenue based on the device that generated the first conversion. It’s can help you understand if users on a certain device have a larger impact on revenue.

The Acquisition Device Report.

The Acquisition Device Report

Understanding cross device measurement, and implementing it correct, is a huge topic – way more than I can cover in one post. I’ll be publishing a few other articles that explain cross device measurement in Google Analytics ASAP.

Time-zone Based Processing

In addition to the above features, there’s one more piece that is rolling out today. Google Analytics users can now specify the time-zone where their data is processed. In the past all data was processed in the Pacific Timezone (because that’s there Google is).

But now data processing will occur in the time zone of each data view.

The time zone setting in a view now controls when your data is processed.

The time zone setting for a view now controls when your data is processed.

While most people will not notice a big difference, this is a HUGE improvement for many users in Australia, Japan and other parts of Asia.

This also means that, for some users, automated daily reports will arrive on the correct day!

Do you need to migrate?

Ok, so that’s a brief overview of what’s happening today. But the big question that everyone will ask is, “do I need to migrate to Universal Analytics?”

No, you do not need to migrate to Universal Analytics – at least not now.

However, you need to start planning to migrate.

Universal Analytics is the new platform – all new features will be developed for UA. So if you want to use the new shiny things in the future you need to be on UA.

But migrating t can be a lot of work depending on your specific measurement plan. I’ll address that in another post.

Ok, that’s it for this post. But there is a lot more on Universal Analytics coming.

Universal Analytics: Now out of beta! is a post from: Analytics Talk by Justin Cutroni

The post Universal Analytics: Now out of beta! appeared first on Analytics Talk.

Advanced Content Tracking with Universal Analytics

A while ago I wrote Advanced Content Tracking – a post about how to measure if users are actually reading your content. I’ve been getting a lot of requests to update this code for Universal Analytics. So here it is – an updated script specifically for use with Universal Analytics. This Google Analytics customization collects […]

Advanced Content Tracking with Universal Analytics is a post from: Analytics Talk by Justin Cutroni

The post Advanced Content Tracking with Universal Analytics appeared first on Analytics Talk.

A while ago I wrote Advanced Content Tracking – a post about how to measure if users are actually reading your content. I’ve been getting a lot of requests to update this code for Universal Analytics.

So here it is – an updated script specifically for use with Universal Analytics.

This Google Analytics customization collects data as users scroll down a page. It uses events to track when a post loads, when the user scrolls more than 150 pixels, when the user reaches the bottom of the content and when the user reaches the bottom of the page.

This technique uses Google Analytics events to track a user as they scroll down a page of content.

This technique uses Google Analytics events to track a user as they scroll down a page of content.

The end result is some cool data about how many users actually read content. Here’s a sample of what the data looks like. This is just an basic event report with the Event Action and Event Label.

You can access the Reading data in your Event reports. Here we see a single article and how often users scrolled, read the whole article and got to the bottom of the page.

You can access the Reading data in your Event reports. Here we see a single article and how often users scrolled, read the whole article and got to the bottom of the page.

The Scroll Tracking Code

Here is the JavaScript code that measures user scrolling.


TIP – You can use the tabs at the top of the code window to try the script. Just click on Result.

What’s changed in this version?

First, the blog post title is now collected as part of the event. Specifically I’m pulling the page title from the HTML and putting it into the event label. This makes it easier to drill down and see which pages people are reading. This was possible before using the Page Title dimension, but using the event label makes it just a bit easier. See the image above.

Another thing I change is I now use a Custom Dimension rather than a Custom Variable, to collect the ‘reader type’. Custom variables do not exist in Universal Analytics.

This change will impact your data! You will no longer see data in the Custom Variables report – because you’re not using Custom Variables. Custom Dimensions are only available in Custom Reports and Custom Dashboards.

I also changed how the Custom Dimensions are set. This script will set a Custom Dimension when the user reaches the bottom of the post content – not the bottom of the page. When they reach the bottom of the content they are categorized as a scanner or a reader.

  • A scanner is someone that simple scrolls to the bottom of the content in less than 60 seconds.
  • A reader is someone that take more than 60 seconds to reach the bottom of the content.

This is hardly a scientific way to categorize users, but it works for me :)

Finally, I added three custom metrics to store the time metrics: time to scroll, time to content bottom and time to page bottom.

Remember, in order to configure Custom Dimensions and Custom Metric you must first add them via your Google Analytics admin settings.

Other than the above changes the functionality is still the same.

Implementing the code

Step 1: There are a few code changes that you must make in order for this code to work on YOUR site.

1. Turn off debugging: This flag will display alert messages, rather than send GA data, when the user scrolls, reaches the bottom of the content and reaches the bottom of the page. If you do not set this to FALSE your users will get all sorts of alert messages :)

2. Decide how far you want for scroll depth: I send an event after the user scrolls 150 px. You can change this value, but I believe it works fine and does capture user engagement.

3. Specify where the bottom of your content is: This is the most important setting. This script sends an event when the user gets to the bottom of a post. That’s determined by the HTML. For me, the HTML is identified as .entry-content, as shown in this code.

if (bottom >= $('.entry-content').scrollTop() + $('.entry-content').innerHeight() && !endContent) {

You must change this line of code to identify a piece of HTML on your site that signifies the end of the content. This is the hardest part of the implementation.

Step 2: Add the code before the closing on your site. Make sure it appears AFTER the Universal Analytics page tag. It should look something like this when complete:

<head>

... all sorts of tags ...

<script>
  //
  // Universal Analytics page tag
  //
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXX-YY');
  ga('send', 'pageview');

  //
  // Scroll tracking script
  //
  jQuery(function($) {
    // Debug flag
    var debugMode = true;

    // Default time delay before checking location
    var callBackTime = 100;

    // # px before tracking a reader
    var readerLocation = 150;

    // Set some flags for tracking & execution
    var timer = 0;
    var scroller = false;
    var endContent = false;
    var didComplete = false;

... More code here ...

</script>

That should be it. You should see data instantly in the Real Time Event reports.

I encourage you to read the instructions in my original post.

Finally, a lot of people have asked me about implementing this script with Google Tag Manager. This really warms my heart :) I love tag management!

You can use this script with Google Tag Manager – but it takes a bit of work. I’ll write a separate post on that topic.

That’s it. I hope you find this script useful. Feel free to modify it to fit your needs. I’ve really enjoyed the data that it generates – it’s helped me better understand my readers and content.

Advanced Content Tracking with Universal Analytics is a post from: Analytics Talk by Justin Cutroni

The post Advanced Content Tracking with Universal Analytics appeared first on Analytics Talk.

10 Valentine’s Day Marketing Ideas for Ecommerce Websites

Oh, Valentine’s Day! One of the finest days of the year, a day when ecommerce businesses can drive some serious revenue. If you are on the hunt for some fresh ecommerce marketing ideas or you just need some inspiration for … Continue reading

Oh, Valentine’s Day!

One of the finest days of the year, a day when ecommerce businesses can drive some serious revenue.

If you are on the hunt for some fresh ecommerce marketing ideas or you just need some inspiration for your Valentine’s Day Marketing campaign, you came to the right place.

Before we go into the list, you should also check out our 2 other articles about Valentine’s Day:

Now, let’s get back to our list.

10 Valentine’s Day Ecommerce Marketing Ideas

1. Increase your email list on the short term

Even though you shouldn’t be lazy and you should be focused on collecting email leads at a good rate throughout the whole year, we forgive you if you didn’t, and we offer you a solution to get a huge amounts of subscribers on the short term.

What you should do is use PadiAct and target visitors with a pop-up and a clever copy.

Here’s an example of what targeting rules you can use:

returning_visitors

You can remove the targeting rule about timing if you want to target people as soon as they enter the website, but depending on the website, sometimes is better to leave people some time before you show them the pop-up.

Here’s a pop-up subscription box example and a copy related to your targeting rules:

pop-up-overlay

The Pop-up looks pretty simple, I know, but I’m sure it can drive great results, as eConsultancy reports that a pop-up overlay will increase opt-ins by up to 400%.

To maximize your results from this, consider A/B testing certain scenarios against each other, so that you use the best subscription form for your website.

2. Create a last-minute package

Design a last-minute package for the late birds who didn’t realize that Valentine’s Day is knocking at their door.

You could send out emails a few days before Valentine’s Day to be sure you can also deliver in time any orders.

Extra tip: think about a similar package for the early birds. You need to make everyone happy.

3. Create an ebook called “How to save Valentine’s Day”

How to Save Valentine's Day

“How to Save Valentine’s Day – an Amazon Bestseller”

Offer it as an incentive to people who didn’t order to get their products delivered on time, but will get their products 1 or 2 days after the V Day. Maybe you’ll save a few relationships.

4. Run an online Kissing Booth Content

People can upload pictures of them and their loved ones kissing and they can win products, coupons or they can get different offers at a great price.

To make everyone a winner what you could do is to offer a small discount to all participants.

5. Run A Black-Friday Type of V Day Flash Sale

This year’s Valentine’s Day falls on Friday, so you can use that” excuse” to organize a Flash Sale at midnight with huge discounts or incredible promo offers.

Use this opportunity to get rid of unnecessary stock and or sell bundles.

Maybe you can use this opportunity to drive more revenue from your email list, by making this Flash Sale only available to your email subscribers.

6. Create an Valentine’s Day web app

The app should allow people to send love themed e-cards to their loved ones.

Also, together with the e-cards people can also send a voucher or can subscribe their loved ones to your newsletter.

With this one, you are hitting 2 birds with one stone, making people happy and also getting closer to a sale.

7. Offer free luxurious wrapping to available on Valentine’s Day

Insert a tick-box in your checkout process that allows people to check it if they want their order to be gift wrapped in a luxurious paper.

People don’t want to loose too much time with the gift wrapping, so you are saving them time and money and also closing a sale for yourself. Sweet, right?

8. Create gender specific showcases

Help your customers by telling them what gifts are right for their loved ones. We all know, searching for a gift can be a very complicated tasks, nobody wants to screw it up, so this would definitely make your customers’ life easier.

Also considering that the average spent in the US is $130/gift, this will be a great chance to sell more expensive items.

Here’s how Ralph Lauren did it.

Valentines-Day-Website-Example

Example via PrestaShop Blog.

9. Create specific showcase based on FB relationship status

Thanks to Facebook, people now probably care more about their relationship status than ever. So, you can leverage this to create some kind of specific lists based on FB relationship status.

I think this might appeal to a younger audience, so if you catering to teens this might be an exciting opportunity for you.

10. Rebrand your live chat into “Cupid’s Hotline”

For until you consider Valentine’s Day done as a holiday rebrand your live chat into Cupid’s Hotline.

Instruct your customer representatives on how to suggest gift ideas to your customers. Teach them how to up-sell, cross-sell and how to provide added-value.

This way you make the idea of live chat way more appealing to your customers, and also, you are capitalizing on your customer representatives communication skills to drive more sales.

Final thoughts

As you can see, there are plenty of things you can try to drive more sales on Valentine’s Day, to get your business noticed or to make your customers happy.

You just need to pick a few ideas, adapt them to fit your needs, and push them hard so that you maximize your efforts.

Please let us know if you enjoyed any of our ideas, or if you have an idea of yours, please share it with us.

 

How to Increase Your Open Rates on Valentine’s Day

Everyone wants a piece of the pie that it’s called Valentine’s Day. With men expected to spend more than $130 on average and women to spend on average at least $50, online marketers are dying to get a share of … Continue reading

Everyone wants a piece of the pie that it’s called Valentine’s Day.

With men expected to spend more than $130 on average and women to spend on average at least $50, online marketers are dying to get a share of a period that topped 18.6 billion dollars in 2013.

But wait, there’s more…

In 2011 the online sales reached 2.65 billion dollars. So yeah, we have the premises to achieve incredible results, and because email it’s still the best channel to drive sales, we need to take email marketing seriously.

But for that we need to come up with some smart email subject lines to get our emails opened.

7 Email Subject Lines Ideas

Sean Platt in an article for Copyblogger says this subject line is the most effective he ever met. He saw open rates of over 90%, and in some tests of over 100%, that means some users opened the email more than once.

He didn’t use it for Valentine’s Day, but I’m sure if you can target a specific segment, e.g. the single segment of your list, you can achieve the same results as Sean Platt did.

You will never guess what subject line he is talking about: “You are not alone”.

Retail Email Blog does a very good job of documenting the most interesting subject lines that are used on Valentine’s Day email marketing campaigns. Our favorite selection from their Season Finale Post Series are:

What’s better than flowers or candy for Valentine’s Day?
Used by Fredericks of Hollywood in their 2011 Valentine’s Day campaign.

Cupid made us do it – 14% OFF EVERYTHING! Just today
Used by Norm Thompson also in 2011.

Love at First Sight, Plus Complimentary Shipping‏
Used by Tiffani in 2010.

20% Off + Tips to Create a Mood in the Bedroom
Used by Art.com in 2007

Pizza Restaurant, via Inbox Vision, teaches us a great lesson on copywriting with 2 excellent subject lines:

You had me at hello.
Clever use of the famous catchphrase from Jerry Maguire.

The greatest love lines of all times and pizza to share this weekend.
Nothing more cheesy, yet effective, than great love lines from the movies and a pizza :).

Achieve High Open Rates: Mailchimp Style

The guys from Mailchimp have a great habit on creating really inspiring posts.

In a particular one, they’ve talked about the best and the worst email subject lines that were delivered through their platform.

The secret to getting stellar open rates is very simple, some people may consider it almost stupid simple: “Describe the subject of your email”.

The best email subject lines that described the subject of the email achieved open rates of over 60%, up to over 87%.

The worst email subject lines, achieved between 1 and 14%.

If you are a Mailchimp user you can capitalize on their Subject Line Researcher that helps you find great ideas for your headline by referencing to how the words you chose performed in other campaigns. Cool, right?

Creating your own formula

If you are trying to create a stellar subject line based on what you read in this article, then you should check out this small guideline I’ve assembled for your:

1. Make me curious

If you want me to open your email, appeal to my curiosity, nothing makes me more curious than a good question, an inciting copy or a great offer that waits to be unveiled.

2. Incentivize me

One great method to get me to click on your email is to incentivize me by offering me a discount, tips & tricks, or something that I can talk about with my friends.

3. Talk about love

It’s Valentine’s Day so you got to talk to me about love, why it matters and yes, you can also say that you love me (even though you probably love me more for my money :P ).

4. Don’t get me confused

You already read Mailchimp’s formula for achieving stellar open rates, so it’s imperative that I understand that your email is about Valentine’s Day. I understand that you probably are a fancy copywriter, but nothing makes you happier than me reading your email and eventually buying something from you. That’s what I call copywriting and a love connection.

Final thoughts

There’s not really much to do with this email subject line thing. Create something relevant and incredibly attractive for your prospects. You already know this, but you probably only needed a few ideas to get ideas flowing through your head.

I hope you got some insights from this article and I’m sure if you planned your campaign correctly and tailored a great email subject line, you can get the most from this Valentine’s Day.

Your email content must also be  great in order to get conversions, but your first obstacle it will always be, to get the email opened and viewed by your list.

Hits, Sessions & Users: Understanding Digital Analytics Data

We talk about data every day – sessions, visits, conversions, pages, hits, etc. etc. etc. But sometimes we fail to understand how all of these metrics fit together and where they come from. Let’s take a look at how digital analytics tools organize data. All digital analytics data is organized into a general hierarchy of […]

Hits, Sessions & Users: Understanding Digital Analytics Data is a post from: Analytics Talk by Justin Cutroni

The post Hits, Sessions & Users: Understanding Digital Analytics Data appeared first on Analytics Talk.

We talk about data every day – sessions, visits, conversions, pages, hits, etc. etc. etc. But sometimes we fail to understand how all of these metrics fit together and where they come from. Let’s take a look at how digital analytics tools organize data.

All digital analytics data is organized into a general hierarchy of users, sessions and hits. It doesn’t matter where the data comes from, it could be a website or a mobile app or a kiosk. This model works for web, apps or anything else.

Digital analytics data is organized into a hierarchy of hits, sessions and users.

Digital analytics data is organized into a hierarchy of hits, sessions and users.

Sometimes we use the terms visitors instead of users and visits instead of sessions – they’re analogous. The onset of mobile devices (and other devices, like set top boxes) have prompted us to introduce new terms into our vocabulary.

It’s important to understand each piece of the hierarchy and how it builds on the other to create a view of our customers and potential customers. Because, at the end of the day, we need to use this data to evaluate our decisions and look for new business opportunities.

Let’s start at the bottom, with hits, and work our way up to users.

Hits

A hit is the most granular piece of data in an analytics tool. It’s how most analytics tools send data to a collection server. In reality, a hit is a request for a small image file. This image request is how the data is transmitted from a website or app to the data collection server.

All data is sent using a hit. Most hits are actually the request for an invisible image file.

All data is sent using a hit. Most hits are actually the request for an invisible image file.

There are many different kinds of hits depending on your analytics tool. Here are some of the most common hits in Google Analytics:

Pageviews/Screenviews: A pageview (for web, or screenview for mobile) is usually automatically generated and measures a user viewing a piece of content. A pageview is one of the fundamental metrics in digital analytics. It is used to calculate many other metrics, like Pageviews per Visit and Avg. Time on Page.

Events: An event is like a counter. It’s used to measure how often a user takes action on a piece of content. Unlike a pageview which is automatically generated, an event must be manually implemented. You usually trigger an event when the user takes some kind of action. The action may be clicking on a button, clicking on a link, swiping a screen, etc. The key is that the user is interacting with content that is on a page or a screen.

Transactions: A transaction is sent when a user completes an ecommerce transaction. You must manually implement ecommerce tracking to collect transactions. You can send all sorts of data related to the transaction including product information (ID, color, sku, etc.) and transactional information (shipping, tax, payment type, etc.)

Social interaction hit: A social interaction is whenever a user clicks on a ReTweet button, +1 button, or Like button. If you want to know if people are clicking on social buttons then use this feature! Social interaction tracking must be manually implemented.

Customized user timings:User timings provide a simple way to measure the actual time between two activities. For example, you can measure the time between when a page loads and when the user clicks a button. Custom timings must be implemented with additional code.

That’s a lot of hit types!

All hit types are sent to Google Analytics via a tracking code. The tracking code variation depends on what you are tracking. If you are tracing a website then JavaScript code, named analytics.js, generates the hits. If you are tracking a mobile app then an SDK (either Android or iOS) generates the hits. If you are tracking a kiosk, then YOU generate the hits with the measurement protocol.

Regardless of the hit type, the hits are all formatted in a similar manner. They are a request for an invisible image and contain data in query string parameters.

http://www.google-analytics.com/collect?v=1&_v=j16&a=164718749&t=pageview&_s=1&dl=http%3A%2F%2Fcutroni.com%2F&ul=en-us&de=UTF-8&dt=Analytics%20Talk%20-%20Digital%20Analytics%20for%20Business&sd=24-bit&sr=1920x1080&vp=1308x417&je=1&fl=12.0%20r0&
_utma=32856364.1751219558.1391525474.1391525475.1391525475.1&
_utmz=32856364.1391525475.1.1.utmcsr%3D(direct)
%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)&_utmht=1391525534970&
_u=cACC~&cid=1751219558.1391525474&tid=UA-91817-11&z=378275262

For all the nerds out there, the data hits can be sent via a GET request or a POST request. This is really important to know, because the amount of data can change. With a GET request you can only send 2048 characters of data. Technically a post can be any length (it’s a setting on most servers), but it’s around 8000 characters when sending data to Google Analytics.

The information in a hit is transformed into dimensions during processing. Every report is just a single dimension, and the corresponding metrics for each value. that you see in your reports.

Each report in Google Analytics shows all of the values for a single dimension, and the corresponding metrics for each value.

Each report in Google Analytics shows all of the values for a single dimension, and the corresponding metrics for each value.

A quick note on mobile…

The mobile SDKs do not send data in real time. They actually store the hits locally and them send them in bursts. This is called dispatching and it’s used for a couple of reasons. First, mobile devices are not always connected to a network. So analytics must store the hits until it detects a connection and then it sends the hits. Second, sending hits in a bunches can help conserve battery life. Don’t worry, dispatching does not impact session calculations – which we’ll talk about right now :)

Session

A session is simply a collection of hits, from the same user, grouped together. By default, most analytics tools, including Google Analytics, will group hits together based on activity. When the analytics tool detects that the user is no longer active it will terminate the session and start a new one when the user becomes active.

Most analytics tools use 30 minutes of inactivity to separate sessions. This 30-minute period is called the timeout.

A session is a collection of hits. It ends when there has been 30 minutes of inactivity.

A session is a collection of hits. It ends when there has been 30 minutes of inactivity.

Google Analytics, and most tools, use the time between the first hit and the last hit to calculate the time on site. The time between hits is also used to calculate other metrics, like time on page. You can read more in my overview of how Google Analytics performs time calculations.

Most tools let you change the default timeout to better suit your needs. For example, if you have a lot of video on your site you might want to change the timeout – especially if your video last more than 30 minutes.

Why?

If a user is watching a 60 minute video (and by watching I mean that no other hits are sent to analytics) their session will end 30 minutes after the first hit. To insure that the session lasts until the end of the video you could change the timeout to match the longest video length.

OR, a better way to extend the session, would be to send additional hits while the user is watching the video. Think about it – more hits create more data points that can be used to calculate time. Trust me, take 12 minutes to read more about how Google Analytics performs time calculations.

Now that we know that hits are grouped together into sessions, let’s look at how sessions are grouped based on users.

Users

Here’s where things start to get interesting. A user is the tools best-guess of an anonymous person. Users are identified using an anonymous number or a string of characters. The analytics tool normally creates the identifier the first time a user is detected. Then that identifier persists until it expires or is deleted.

The identifier is sent to the analytics tool with every hit of data. Then the analytics tools can group hits (and thus sessions) together using the identifier in the hits.

Make sense?

Sessions from the same user can be grouped together as long as each hit has the same user ID.

Sessions from the same user can be grouped together as long as each hit has the same user ID.

Here’s how users are detected on some of today’s most common digital platforms.

Website Users

To measure a user on a website almost all analytics tools use a cookie. A cookie is a small text file. The cookie contains the anonymous identifier. Every time a hit is sent from the browser back to the analytics server identifier stored in the cookie is sent along with the data.

When measuring a website, the analytics tool usually uses a first party cookie to store an anonymous ID.

When measuring a website, the analytics tool usually uses a first party cookie to store an anonymous ID.

Now let’s have the cookie talk.

Google Analytics uses a first party cookie. A first party cookie is connected to the domain that creates it. A first-party can only be used by the domain that sets it. So on this site, the cookie has a domain of cutroni.com and can only be used by this website.

In Universal Analytics the cookie is named _ga and lasts for two years. In the previous version of Google Analytics the cookie was named __utma.

The good thing about a first party cookie is that almost all browsers will allow a first party cookie. It’s a very reliable piece of technology.

First party cookies are challenging when your site spans multiple domains. When a user leaves your site, and traverses to another site that you own, they do not take their first party cookies. In most situations, unless you configure analytics correctly, analytics will set another cookie when the user lands on the second domain.

Analytics uses a first party cookie to maintain a user ID.

Analytics uses a first party cookie to maintain a user identifier.

Now you have one user with two cookies. That could lead to double counting of users. Plus, if we want to create really cool metrics, like Revenue per user, it becomes very, very hard because we don’t know the true number of users.

The other type of cookie, a third-party cookie, can be set and accessed by domains other than the domain that creates it. Some analytics tools will let you use a third party cookie.

The value of a third party cookie is that the analytics tool can use a third party cookie to identify a user as they move from one domain to another.

A third party cookie can be used by multiple domains.

A third party cookie can be used by multiple domains.

However, third-party cookies are not permitted by most browsers – that means no data.

Google Analytics does not use a third party cookie. You can read all about the Google Analytics cookies in the developer documentation.

So what’s the solution here? How do you correctly identify a user if your website spans multiple domains? In the Google Analytics world we use a feature called Cross Domain Tracking. I’m not going to talk about it in this post, but you can read about it in our support documentation.

Mobile Users

Now let’s move on to mobile platforms – something that is very popular :)

Mobile tracking is similar to web tracking. There is an anonymous identifier stored on the device. The identifier is generated every time the app is installed. So if a user deletes the app the identifier will also be deleted. But if a user updates the app the identifier will not change.

The big difference between mobile and web is that the identifier is not stored in a cookie. It’s stored in a database on the mobile device – but it basically functions the same way as a cookie. The identifier is sent on every hit back to the analytics server. The analytics server then uses the identifier to create metrics like unique users.

Here’s one challenge with user measurement on an app. Many apps are not just an app. They’re a hybrid app/website. They use a browser within the app to “frame” content from a website. This can mess up the data collection.

In this situation we have two technologies with two different user identifiers. The app will measure a user based on the ID stored on the device and the website will use a cookie when a page loads in the app.

Mobile apps that "frame in" content from a website, might be sending duplicate hits to the analytics tool.

Mobile apps that “frame in” content from a website, might be sending duplicate hits to the analytics tool.

There are some ways around this, but it’s a long solution that need it’s own blog post. But just be aware of this potential data issue.

Ok, so now we know about website users and mobile users. But what about other digital touch-points, like a kiosk?

Other Digital Touch-points

In today’s world a user can interact with your digital content on lots of different devices (computers, mobile, kiosks, set top boxes, etc.). And that can cause a lot of issues as tools try to de-duplicate users and get an accurate count of users.

One of the key features of Universal Analytics is the ability to track users on devices other than websites and mobile devices, things like a point-of-sale system or a kiosk. It does this using a technology called the measurement protocol.

But how does it actually work?

The measurement protocol works by – wait for it – collecting hits :) These are the same hits that I described above. The big difference is that you must manually build the hits. So if you want to implement analytics on a kiosk, you must create MORE code to build the hits that are sent to Google Analytics.

But what about measuring users when you use the measurement protocol?

When you create the hit you must insert a user identifier into the hit. Google Analytics will then use this identifier as the unique identifier when it processes the data.

To measure users when tracking other devices, like a kiosk, you must insert your own identifier and generate your own data hits.

To measure users when tracking other devices, like a kiosk, you must insert your own identifier and generate your own data hits.

Unlike websites and mobile apps, there is no cookie or database to store the identifier. So the ID does not persist from one hit to another, or from one session to another. You must manually insert the identifier into every hit in every session.

Your code must control the generation of the identifier and the storage of the identifier.

Let’s end it there. That’s a pretty good overview of digital analytics data.

I know this was a really geeky post, but it’s an important subject and will become more and more important.

Now it’s your turn. Thoughts? Please feel free to leave a comment.

Hits, Sessions & Users: Understanding Digital Analytics Data is a post from: Analytics Talk by Justin Cutroni

The post Hits, Sessions & Users: Understanding Digital Analytics Data appeared first on Analytics Talk.

The Ultimate Guide to Email Marketing on Valentine’s Day

According to US National Retail Federation, in 2012 alone people were willing to spend on average $126.03 on Valentine’s Day for their significant other. In 2013, the spend went up to $130.97, so the total spend related to Valentine’s Day … Continue reading

According to US National Retail Federation, in 2012 alone people were willing to spend on average $126.03 on Valentine’s Day for their significant other.

In 2013, the spend went up to $130.97, so the total spend related to Valentine’s Day in the US was estimated at 18.6 billion dollars. In 2012 it was 17.6 billion dollars.

Just like Christmas, Valentine’s Day is a holiday celebrated by pretty much everyone nowadays. Actually, it isn’t just an american tradition anymore, countries all over the world are celebrating Valentine’s Day, and businesses are looking to leverage this.

As always, email marketing is  probably one of your best bets to capitalize on people’s willingness to spend money on Valentine’s Day.

Add some creative advertising and some engaging social media content to the mix and you got yourself a winning strategy.

Opportunity: checked.

Strategy: this article will help you out with that.

What To Do to Win Valentine’s Day

Your Valentine’s Day to do list should look something like this:

  1. add more subscribers to your email lists
  2. segment your list
  3. schedule when you are going to send the emails
  4. write great subject lines
  5. design amazing emails

Valentine’s Day is all about love and that means you shouldn’t have a “one night stand” with your email list. . (tweet this)

Treat this holiday right, and it can bring you HUGE benefits on long term.

Also, don’t make this holiday about you: make it about your customers and about your audience.

Help them experience a day they’ll never want to forget.

How to grow your email list very fast

I know, Valentine’s day is almost here. Getting more email leads & subscribers in such a short time is not an easy task.

Don’t freak out though, everything is not lost. We’ve got a few tips that can earn you some serious Valentine’s business.

Create a valentine’s Day Business Venture

Partner up with other companies, find companies that are not selling products or services suitable for Valentine’s Day. However, they might have bigger email lists than you do.

By partnering up with them you’ll get to increase the sales of your products and they’ll get a partnership commission out of a holiday which otherwise would bring them no extra sales.

Closing a partnership might take time so get it done right now.

ADD BUcketloads of subscribers by using behavioral targeting

If you are not using PadiAct, maybe this is the best opportunity for you to try it out.

You can start by defining a campaign and target people exclusively for the Valentine’s Day lists.

Here are a few tips to get loads of email subscribers from Day 1:

  • identify the most successful products of last year’s Valentine’s Day and ask people to subscribe while visiting similar products
  • target visitors after spending at least 2 minutes viewing the products (they are still in the researching phase)
  • offer them the best reason to subscribe, so they can’t refuse you: let people know about the Valentine’s Day exclusive emails with tips, gifts and promotions.
Setting up targeting rules inside PadiAct.

Example: How to target visitors with PadiAct.

Segment and clean your lists

On the romantic 14th of February and the days before it, the subscribers are going to receive loads of emails with Valentine’s offers. For them, it will be a tipping point and people will probably “abuse” the Report as spam or Unsubscribe buttons.

That’s why, you need to be one step ahead.

The week of 14th of February should be a week when open rates, click rates and purchases are at their best.

Here are a few segments that you should look into:

  • gender: craft emails respecting the fact men & women have different needs
  • activity: the closer you get to the last emails of your Valentine’s Day campaign, the more you should refrain yourself from sending emails to inactive subscribers
  • interest: use different call to actions in emails to identify user interest. Based on the links they’ve clicked, add subscribers in different buckets
  • age: a 40 year couple will probably have a different idea on how to spend that day compared to an 18 year one

A great way to keep your lists clean, is to allow people to opt-out of the Valentine’s Day emails, but to stay subscribed toyour other lists. A visible copy like the following one with the appropriate link should do the job:

I already found a gift and no longer want to receive Valentine’s Day emails.

Drip your emails

We already told you that love is in the air, a “one night stand” is very a bad idea.

Don’t plan a single email for Valentine’s Day. Avoid the “hit and run” approach.

Build a campaign that reminds people about the big day, a campaign with ideas on how to surprise their partners, makes it easy for them to find a gift and then follow up to make sure everything went well.

Is it your first Valentine’s Day email campaign?

Feel free to use the following Valentine’s Day Marketing Calendar:

20th-22ND January – announce Valentine’s Day

Send an email to all your subscribers reminding them that Valentine’s Day is coming. Tell them to hop on the exclusive Valentine’s day email list.

Give a few hints of presents or things they can do for their special one.

Add up to 3 call to actions in the email, each one of them describing a different user intention.

Future campaigns should be sent to visitors based on what link they clicked.

January 27th – 30th – content aware campaign

Based on expressed intention through the links they’ve clicked in the previous email, send them suggestions of gifts.

Make sure to add a story to each gift idea.

People would rather relate to stories than to product descriptions, so you’ll make their choice easier.

February 3RD – 5th – launch THE OFFER

The period when most people do the purchases. The more they delay, the harder it will be to find and have the perfect gift delivered on time.

Be creative about your incentive. Go beyond the classic discounts.

Discounts are always welcomed, but extravagant wrapping of purchased products can make a strong impression, especially on Valentine’s Day.

10th of February – continue with the promotion

Only send to people that opened at least one email in the last 3 months.

From this moment on, you are playing the safe card and you are keepings unsubscribes and spam reports as low as possible. This email should speak of urgency. It’s the last chance of buying a gift, if it’s not too late already.

13th of February – the day before

It’s probably too late to sell anything and deliver it on time. To the subscribers that did not purchase anything for their loved ones, offer them some tips on how to save the day. To the ones that did purchase, give them tips on how to surprise without actually giving them a gift.

This one email might be the one that actually helps you WIN your email list. If you provide them with great ideas on how to save the day, your subscribers will remember you and they will recommend you to all their friends.

15th of February – the day after

Encourage subscribers to write back their stories. Maybe even through in a prize or some gift cards.

Get as many testimonials & stories as possible.

Create content around your customers’ stories (it can be an article, a video or an infographic), and post it on Pinterest, Facebook and, what the heck, release it even on Google+.

Make it a Valentine’s Day that everyone remembers, and promote it heavily so that your competition will be jealous because they’ve decided to have a “one night stand” instead of actually providing help to their audience

Subject lines your email list will not ignore

One of your biggest challenges will be to get as many subscribers to open your emails. Here is what Experian found in a study they’ve conducted last year:

experian

As you see, subject lines are crucial, so here’s a list that can get you started on writing great emails:

  • Hurry, Cupid’s Counting Down! Send a Special Greeting Card
  • 3 Days Until Valentine’s Day. Find The Perfect Gift Today Or It Could Be Your Last.
  • Order now to avoid heartbreak this Valentine’s
  • For love or money?
  • Get gifts as extraordinary as your Valentine
  • Valentine’s Day gifts for your Rebecca
  • You’ll ❤ Key Pieces for the Season
  • We’ve got a crush (or two). How about you?
  • Ten Ways to Say “I Love You”
  • Wine, Chocolates & $0 Shipping
  • Will You Be Our Valentine? Sweepstakes, News, & More To Show Our LUV
  • Last Chance to Get the Look You Love Before V-Day

By sending up to 6 emails ’till the big day, you’ll have a chance to test a few sets of subject lines to find the best one for you.

Design amazing emails

Once you have subscribers open your emails, the copy and the design are going to be decisive in having people become customers as well.

Check out the following designs that were shared heavily on the web. Click on the images to get the full newsletter:

01-apple

02-perfume

03-pink

04-starbucks

05-restaurants

06-trips

07-jewels

08-furniture

 

How will you approach valentine’s day in 2014?

What are your plans for 2014’s Valentine’s Day?

What worked for you the last year and what do you plan to do better in 2014?

Did we miss something? We would love to hear your opinion on this article.

Collect Email Subscribers & Leads Using BlackMail

Here at PadiAct we are committed to growing your email leads & subscribers lists. This is what we know best, this is what we do for hundreds of online businesses. With this mission in mind we are constantly testing and … Continue reading

Here at PadiAct we are committed to growing your email leads & subscribers lists.

This is what we know best, this is what we do for hundreds of online businesses.

blackmail

With this mission in mind we are constantly testing and experimenting with features, pop-ups and targeting rules to find new and effective ways to get you more emails.

Recently, we developed a design that we think will skyrocket your subscription rates.

We introduce you: BlackMail

Hihi! Gotcha!

I had you worried there for a second.

Blackmail_form

BlackMail is a slick, yet elegant, predesigned subscription form that you can use as a popup, left to right slider and bottom slider, just like the other 2 predesigned styles (Default and Good Old Mail).

Adding the image is very easy, you just need to paste the URL where you hosted the image.

Recommended image width is 200px.

How to Start Using BlackMail

  1. Go and edit your campaign.

  2. Select the style to be BlackMail.

  3. Paste your image URL in the field

  4. Personalize the Interaction Look & Feel

  5. Quick preview it to see if you are happy with the results

  6. Fine tune your copy

  7. Save the campaign.

You’re done. Congratulations.

That’s it. Easy, right?

Now, just sit back, relax, and enjoy “the view” (the reports).

From now on, you will collect email leads and subscribers using “BlackMail”.