diff --git a/static/js/ep_email.js b/static/js/ep_email.js
index 35af671..a690027 100644
--- a/static/js/ep_email.js
+++ b/static/js/ep_email.js
@@ -1,15 +1,50 @@
 exports.postAceInit = function(){
 
+  
   // after 10 seconds if we dont already have an email for this author then prompt them
-  setTimeout(function(){askClientToEnterEmail()},10000);
+  setTimeout(function(){init()},10000);
+}
+
+function init(){
+  if(clientHasAlreadyRegistered){ // if the client has already registered for emails on this pad.
+    showAlreadyRegistered(); // client has already registered, let em know..
+  }else{
+    askClientToEnterEmail(); // ask the client to register
+  }
+}
+
+function showAlreadyRegistered(){ // the client already registered for emails on this pad so notify the UI
+  $.gritter.add({
+    // (string | mandatory) the heading of the notification
+    title: "Email subscription",
+    // (string | mandatory) the text inside the notification
+    text: "You are already registered for emails for this pad",
+    // (bool | optional) if you want it to fade out on its own or just sit there
+    sticky: false
+  });
+
+}
+
+function clientHasAlreadyRegistered(){ // Has the client already registered for emails on this?
+  // Given a specific AuthorID do we have an email address in the database?
+  // Given that email address is it registered to this pad?
+  // need to pass the server a message to check
+  var userId = pad.getUserId();
+  var message = {};
+  message.type = 'USERINFO_AUTHOR_EMAIL_IS_REGISTERED_TO_PAD';
+  message.userInfo = {};
+  message.userInfo.userId = userId;
+  pad.collabClient.sendMessage(message);
+
+
 }
 
 function askClientToEnterEmail(){
   $.gritter.add({
     // (string | mandatory) the heading of the notification
-    title: "Recieve Email notifications for this pad",
+    title: "Email notifications for this pad",
     // (string | mandatory) the text inside the notification
-    text: "<form id='ep_email_form'><label for='ep_email'><input type=text id='ep_email'><input type=submit></form>",
+    text: "<form id='ep_email_form'><label for='ep_email'><input id='ep_email' placeholder='your@email.com' value='foo@bar.com' type=email><input type=submit></form>",
     // (bool | optional) if you want it to fade out on its own or just sit there
     sticky: true,
     // (int | optional) the time you want it to be alive for before fading out
@@ -38,7 +73,7 @@ function sendEmailToServer(){
   var message = {};
   message.type = 'USERINFO_UPDATE';
   message.userInfo = {};
-//  message.userInfo.colorId = "#0000";
+  message.padId = pad.getPadId();
   message.userInfo.email = email;
   message.userInfo.userId = userId;
 
diff --git a/update.js b/update.js
index 0af6166..d57c589 100644
--- a/update.js
+++ b/update.js
@@ -1,4 +1,4 @@
- var  db = require('../../src/node/db/DB').db;
+ var  db = require('../../src/node/db/DB').db,
      API = require('../../src/node/db/API.js'),
    async = require('../../src/node_modules/async'),
 settings = require('../../src/node/utils/Settings');
@@ -10,25 +10,69 @@ var timers = {};
 
 // When a new message comes in from the client
 exports.handleMessage = function(hook_name, context, callback){
-  console.warn(context);
   if (context.message && context.message.data){
-    if (context.message.data.type == 'USERINFO_UPDATE' ) { // if it smells okay..
+    if (context.message.data.type == 'USERINFO_UPDATE' ) { // if it's a request to update an authors email
       if (context.message.data.userInfo){
-console.warn("foo",context.message.data.userInfo);
+        console.debug("userInfo",context.message.data.userInfo);
         if(context.message.data.userInfo.email){ // it contains email
-          exports.setAuthorEmail(
-            context.message.data.userInfo.userId, 
-            context.message.data.userInfo.email, callback);
+          // console.warn(context.message.data.userInfo.userId);
+
+          console.debug(context.message);
+
+          db.get("emailSubscription:"+context.message.data.padId, function(err, userIds){ // does email Subscription already exist for this user?
+
+            console.debug("UserIds subscribed by email to this pad:", userIds);
+
+            if(userIds){ //  THIS NEEDS TO BE AN OBJECT :: TODO
+              // This user ID is already assigned to this padId so don't do anything except tell the user they are already subscribed somehow..
+
+              context.client.json.send({ type: "COLLABROOM",
+                data:{
+                  type: email_subscription_success,
+                  payload: false
+                }
+              });
+
+            }else{
+
+              // console.warn ("WRITE MY GOODNESS TO THE DATABASE!",context.message.data.userInfo.email);
+
+              exports.setAuthorEmail(
+                context.message.data.userInfo.userId, 
+                context.message.data.userInfo.email, callback
+              );
+
+              exports.setAuthorEmailRegistered(
+                context.message.data.userInfo.userId,
+                context.message.data.padId, callback
+              );
+ 
+              context.client.json.send({ type: "COLLABROOM",
+                data:{
+                  type: email_subscription_success,
+                  payload: true
+                }
+              });
+
+            }
+          });
+
+          callback(null); // don't run onto passing colorId or anything else to the message handler
 
-          console.warn ("WRITE MY GOODNESS TO THE DATABASE!",context.message.data.userInfo.email);
         }
       }
-      console.warn ("LORDAMERCI!");
     }
   }
   callback();
 }
 
+exports.doesPadIdEmailAssociationAlreadyExist = function (padId, email){
+  var found = false;
+  db.get("emailSubscription:"+padId, function(err, value){
+    return value;
+  });
+}
+
 exports.padUpdate = function (hook_name, _pad) {
 
   var pad = _pad.pad;
@@ -122,8 +166,11 @@ exports.createInterval = function(padId){
 }
 
 // Updates the database with the email record
-exports.setAuthorEmail = function (author, email, callback)
-{
+exports.setAuthorEmail = function (author, email, callback){
   db.setSub("globalAuthor:" + author, ["email"], email, callback);
 }
 
+// Write email and padId to the database
+exports.setAuthorEmailRegistered = function(author, padId, callback){
+  db.set("emailSubscription:" + padId, author);
+}