diff --git a/gracedb/api.py b/gracedb/api.py
index bd24a887dd182b81720796cf31025eb2c724c880..30dd018bfb6569c83a0ffaf3e93703e005122d31 100644
--- a/gracedb/api.py
+++ b/gracedb/api.py
@@ -1847,6 +1847,13 @@ class VOEventList(APIView):
         skymap_filename = request.data.get('skymap_filename', None)
         skymap_image_filename = request.data.get('skymap_image_filename', None)
 
+        vetted = request.data.get('vetted', 0)
+        open_alert = request.data.get('open_alert', 0)
+        hardware_inj = request.data.get('hardware_inj', 0)
+        CoincComment = request.data.get('CoincComment', None)
+        ProbHasNS = request.data.get('ProbHasNS', None)
+        ProbHasRemnant = request.data.get('ProbHasRemnant', None)
+
         if (skymap_filename and not skymap_type) or (skymap_type and not skymap_filename):
             msg = "Both or neither of skymap_time and skymap_filename must be specified."
             return Response({'error': msg}, status = status.HTTP_400_BAD_REQUEST)
@@ -1864,7 +1871,9 @@ class VOEventList(APIView):
         try:
             voevent_text, ivorn = buildVOEvent(event, voevent.N, voevent_type, request,
                 skymap_filename = skymap_filename, skymap_type = skymap_type,
-                skymap_image_filename = skymap_image_filename, internal = internal)
+                skymap_image_filename = skymap_image_filename, internal = internal,
+                vetted=vetted, open_alert=open_alert, hardware_inj=hardware_inj, CoincComment=CoincComment, ProbHasNS=ProbHasNS, ProbHasRemnant=ProbHasRemnant)
+
         except VOEventBuilderException, e:
             msg = "Problem building VOEvent: %s" % str(e)
             return Response({'error': msg}, status = status.HTTP_400_BAD_REQUEST)
diff --git a/gracedb/buildVOEvent.py b/gracedb/buildVOEvent.py
index 9e3e3bdbc91eabd83825e429918d53b6605ac921..0b276813c44710c2f95d047f4f95317ada0b86df 100755
--- a/gracedb/buildVOEvent.py
+++ b/gracedb/buildVOEvent.py
@@ -49,7 +49,7 @@ def get_voevent_type(short_name):
     return None
 
 def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filename=None,
-    skymap_type=None, skymap_image_filename = None, internal=1):
+    skymap_type=None, skymap_image_filename=None, internal=1, vetted=0, open_alert=0, hardware_inj=0, CoincComment=0, ProbHasNS=None, ProbHasRemnant=None):
 
 # XXX Branson commenting out. Reed's MDC events do not have FAR for some reason.
 #    if not event.far:
@@ -59,7 +59,7 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
         raise VOEventBuilderException("Cannot build a VOEvent because event has no gpstime.")
 
     if not voevent_type in VOEVENT_TYPE_DICT.keys():
-        raise VOEventBuilderException("voevent_type must be preliminary, initial, update, or retraction")
+        raise VOEventBuilderException("voevent_type must be preliminary, initial, update, or retraction TEST")
 
     # Let's convert that voevent_type to something nicer looking
     voevent_type = VOEVENT_TYPE_DICT[voevent_type]
@@ -126,6 +126,8 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
             h.add_Description("L1: LIGO Livingston 4 km gravitational wave detector")
         if 'V1' in instruments:
             h.add_Description("V1: Virgo 3 km gravitational wave detector")
+        if CoincComment==1:
+            h.add_Description("A gravitational wave trigger identified a possible counterpart GRB")
         v.set_How(h)
 
     ############ What ############################
@@ -190,6 +192,28 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
         Description=["Set to true if the event is retracted."]))
 
     # Shib protected event page
+    # Whether the event is a hardware injection or not
+    w.add_Param(Param(name="HardwareInj",
+        dataType="string",
+        ucd="meta.code",
+        unit="",
+        value=hardware_inj,
+        Description=['Indicates that this event is a hardware injection if 1, no if 0']))
+
+    w.add_Param(Param(name="Vetted",
+        dataType="string",
+        ucd = "meta.code",
+        unit="",
+        value=vetted,
+        Description=['Indicates whether this candidate has undergone basic vetting by humans']))
+    
+    w.add_Param(Param(name="OpenAlert",
+        dataType="string",
+        ucd="meta.code",
+        unit="",
+        value=open_alert,
+        Description=['Indicates that this event is an open alert if 1, no if 0']))
+
     w.add_Param(Param(name="EventPage",
         ucd="meta.ref.url",
         value=get_url(request, objid, "view2"),
@@ -242,6 +266,8 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
         if not skymap_filename:
             raise VOEventBuilderException("Skymap filename not provided.")
 
+    if skymap_filename != None: #preliminary alerts can now include skymaps
+
         fits_name = skymap_filename
         fits_path = os.path.join(event.datadir(), fits_name)
         if not os.path.exists(fits_path):
@@ -328,6 +354,24 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
             mass = float(event.mass)
             # calculate eta = (mchirp/total_mass)**(5/3)
             eta = pow((mchirp/mass),5.0/3.0)
+
+            # EM-Bright mass classifier information for CBC event candidates
+            if ProbHasNS!=None:
+                w.add_Param(Param(name="ProbHasNS",
+                    dataType="float",
+                    ucd="stat.probability",
+                    unit="",
+                    value=ProbHasNS,
+                    Description=["Probability that at least one object in the binary is less than 3 solar masses"]))
+
+            if ProbHasRemnant!=None:
+                w.add_Param(Param(name="ProbHasRemnant",
+                    dataType="float",
+                    ucd="stat.probability",
+                    unit="",
+                    value=ProbHasRemnant,
+                    Description=["Probability that there is matter in the surroundings of the central object"]))
+
 # XXX
 #            w.add_Param(Param(name="ChirpMass", 
 #                dataType="float", 
@@ -476,7 +520,7 @@ def buildVOEvent(event, serial_number, voevent_type, request=None, skymap_filena
     v.set_WhereWhen(ww)
 
     ############ Citation ############################
-    if event.voevent_set.count()>1 and voevent_type != 'preliminary':
+    if event.voevent_set.count()>1:
         c = Citations()
         for ve in event.voevent_set.all():
             # Oh, actually we need to exclude *this* voevent.
@@ -537,3 +581,4 @@ def submitToSkyalert(event, validate_only=False):
     return result
 
 
+