diff --git a/gracedb/alerts/old_alert.py b/gracedb/alerts/old_alert.py
index c08c7fbd1092ffd2b136fef0d45a36fc1589345f..74c7fee6815e16f8cd3af6afa7b15b17b97b2007 100644
--- a/gracedb/alerts/old_alert.py
+++ b/gracedb/alerts/old_alert.py
@@ -147,9 +147,10 @@ def issueAlertForUpdate(event, description, doxmpp, filename="", serialized_obje
     # XXX No emails or phone calls for this.  Argh.
 
 # The only kind of serialized object relevant for a Label is an event.
-def issueAlertForLabel(event, label, doxmpp, serialized_event=None, event_url=None):
+# False - why not just send the labelling object?
+def issueAlertForLabel(event, label, doxmpp, serialized_object=None, event_url=None):
     if doxmpp:
-        issueXMPPAlert(event, "", "label", label, serialized_event)
+        issueXMPPAlert(event, "", "label", label, serialized_object)
     # Email
     profileRecips = []
     phoneRecips = []
diff --git a/gracedb/alerts/superevent_utils.py b/gracedb/alerts/superevent_utils.py
index da8b9daf379cab41f2bf0293845694b7552aa809..3050afcdee0b6c7399898e64ea3f35bc1b1a1bdc 100644
--- a/gracedb/alerts/superevent_utils.py
+++ b/gracedb/alerts/superevent_utils.py
@@ -99,7 +99,7 @@ def issue_alert_for_superevent_label_creation(labelling, request=None):
     # Send alerts
     # NOTE: current alerts don't include an object (change this?)
     issue_alerts(labelling.superevent, alert_type="label", url=url,
-        description=description, serialized_object=None)
+        description=description, serialized_object=serialized_object)
 
 
 def issue_alert_for_superevent_label_removal(labelling, request=None):
@@ -112,7 +112,7 @@ def issue_alert_for_superevent_label_removal(labelling, request=None):
 
     # Send alerts
     issue_alerts(labelling.superevent, alert_type="update", url=url,
-        description=description, serialized_object=None)
+        description=description, serialized_object=serialized_object)
 
 
 def issue_alert_for_superevent_voevent(voevent, request=None):
diff --git a/gracedb/events/view_logic.py b/gracedb/events/view_logic.py
index 9e496d29f134dcb4e0758a987c470a802c4baa82..dab48bc6e2738f2fe74a5c284fba89e9d21ee53b 100644
--- a/gracedb/events/view_logic.py
+++ b/gracedb/events/view_logic.py
@@ -12,7 +12,8 @@ from .models import EMBBEventLog, EMGroup
 from .models import EMObservation, EMFootprint
 from .translator import handle_uploaded_data
 from .view_utils import _saveUploadedFile
-from .view_utils import eventToDict, eventLogToDict, emObservationToDict
+from .view_utils import eventToDict, eventLogToDict, emObservationToDict, \
+    labelToDict
 from .permission_utils import assign_default_event_perms
 
 from alerts.old_alert import issueAlert, issueAlertForLabel, issueAlertForUpdate, \
@@ -214,8 +215,12 @@ def create_label(event, request, labelName, doAlert=True, doXMPP=True):
             logger.exception('Problem saving log message (%s)' % str(e))
             d['error'] = str(e)
 
+        # Serialize the labelling object
+        serialized_label = labelToDict(labelling)
+
         try:
-            issueAlertForLabel(event, label, doXMPP, event_url=event_url)
+            issueAlertForLabel(event, label, doXMPP, event_url=event_url,
+                serialized_object=serialized_label)
         except Exception as e:
             logger.exception('Problem issuing alert (%s)' % str(e))
             d['warning'] = "Problem issuing alert (%s)" % str(e)
@@ -258,11 +263,15 @@ def delete_label(event, request, labelName, doXMPP=True):
             logger.exception('Problem saving log message (%s)' % str(e))
             d['error'] = str(e)
 
+        # Serialize deleted labelling object
+        serialized_label = labelToDict(this_label)
+
         # send an XMPP alert, no email or phone alerts
         try:
             if doXMPP:
-                issueXMPPAlert(event, "", alert_type="label",
-                    description="Label {0} removed".format(label.name))
+                issueXMPPAlert(event, "", alert_type="update",
+                    description="Label {0} removed".format(label.name),
+                    serialized_object=serialized_label)
         except Exception as e:
             logger.exception('Problem issuing alert (%s)' % str(e))
             d['warning'] = "Problem issuing alert (%s)" % str(e)
diff --git a/gracedb/events/view_utils.py b/gracedb/events/view_utils.py
index 0ec4b92c4767ca1e97be1e5acac1cb16a0445979..4e2b9a5f1978a8f360e2f9c222710a1a63da4e46 100644
--- a/gracedb/events/view_utils.py
+++ b/gracedb/events/view_utils.py
@@ -416,14 +416,14 @@ def eventLogToDict(log, request=None):
            }
 
 
-def labelToDict(label, request=None):
+def labelToDict(labelling, request=None):
     return { 
-            "name" : label.label.name,
-            "creator" : label.creator.username,
-            "created" : label.created.strftime(
+            "name" : labelling.label.name,
+            "creator" : labelling.creator.username,
+            "created" : labelling.created.strftime(
                       settings.GRACE_STRFTIME_FORMAT),
             "self" : reverse("labels",
-                args=[label.event.graceid(), label.label.name],
+                args=[labelling.event.graceid(), labelling.label.name],
                 request=request),
            }