Gmail Tracking with Google Analytics and Apps Script

This Google Script inserts the Google Analytics code in your outgoing email messages to help you track delivery and opens. When the email is opened, the tracking image (__utm.gif) – a 1×1 pixels transparent GIF file – is downloaded on the visitor’s computer and the visit gets logged as an event in Google Analytics.

You can use this technique to track email newsletters and other platforms where the standard JavaScript based Analytics code cannot be added.

Google Analytics tracking URL supports several parameters but this Apps Script function only uses only the essential ones that are required for logging an event (utmt is set as event and not page which is the default) into Google Analytics.

Also see: Tracking Email Clicks with Analytics

/* Written by Amit Agarwal */

function getTrackingGIF(account, email, subject) {

  var imgURL = ""
    + "v=1&t=event"
    + "&tid=" + account
    + "&z="   + Math.round((new Date()).getTime()/1000).toString()
    + "&cid=" + Utilities.getUuid()
    + "&ec=" + encodeURIComponent("Email Open")
    + "&ea=" + encodeURIComponent(subject.replace(/'/g, ""))
    + "&el=" + encodeURIComponent(email);

  return "<img src='" + imgURL + "' width='1' height='1'/>";


function sendMail(draftId, analyticsID) {

  var draft = GmailApp.getMessageById(draftId);
  var body = draft.getBody();
  body += getTrackingGIF(analyticsID, draft.getTo(), draft.getSubject());  
  GmailApp.sendEmail(draft.getTo(), draft.getSubject(), email, {
    htmlBody: email, cc: draft.getCc(), bcc: draft.getBcc()