diff --git a/jenkins/gerrit-verifier-change.groovy b/jenkins/gerrit-verifier-change.groovy
index b769aea..772d412 100644
--- a/jenkins/gerrit-verifier-change.groovy
+++ b/jenkins/gerrit-verifier-change.groovy
@@ -32,29 +32,50 @@
   static int myAccountId = 1022687
   static int waitForResultTimeout = 10000
   static Map buildsList = [:]
+
+  static def ciTag(String operation) {
+    " \"tag\" : \"autogenerated:gerrit-ci:$operation\" "
+  }
+
+  static String addReviewerTag = ciTag("addReviewer")
+  static String addVerifiedTag = ciTag("addVerified")
+  static String addCommentTag = ciTag("comment")
 }
 
 
 def gerritPost(url, jsonPayload) {
+  def error = ""
   def gerritPostUrl = Globals.gerrit + url
-  def curl = ['curl', '-n', '-s', '-S',
-    "-X", "POST", "-H", "Content-Type: application/json",
-    "--data-binary", jsonPayload,
+  def curl = ['curl', '--silent',
+  '--output', '/dev/stderr',
+  '--write-out', '%{http_code}',
+  '-n', '-s', '-S',
+  '-X', 'POST', '-H', 'Content-Type: application/json',
+  '--data-binary', jsonPayload,
     gerritPostUrl ]
+  println "CURL/EXEC> $curl"
   def proc = curl.execute()
   def sout = new StringBuffer(), serr = new StringBuffer()
   proc.consumeProcessOutput(sout, serr)
   proc.waitForOrKill(Globals.curlTimeout)
   def curlExit = proc.exitValue()
   if(curlExit != 0) {
-    println "$curl ** FAILED ** with exit code $curlExit"
+    error = "$curl **FAILED** with exit code = $curlExit"
+    println error
+    throw new IOException(error)
   }
-  if(!serr.toString().trim().isEmpty()) {
-    println "--- ERROR ---"
-    println serr    
+  def httpStatus = sout.toString().trim()
+  if(httpStatus != "200") {
+    error = "$curl **FAILED** with HTTP STATUS = $httpStatus"
+    println error
+    throw new IOException(error)
   }
 
-  return curlExit
+  if(!serr.toString().trim().isEmpty()) {
+    println "CURL/OUTPUT> $serr"
+  }
+
+  return 0
 }
 
 def gerritReview(buildUrl,changeNum, sha1, verified, msgPrefix) {
@@ -63,7 +84,7 @@
   }
 
   def addReviewerExit = gerritPost("a/changes/" + changeNum + "/reviewers", '{ "reviewer" : "' +
-                                   Globals.gerritReviewer + '" }')
+                                   Globals.gerritReviewer + "\" , ${Globals.addReviewerTag} }")
   if(addReviewerExit != 0) {
     println "**** ERROR: cannot add myself as reviewer of change " + changeNum + " *****"
     return addReviewerExit
@@ -71,7 +92,7 @@
 
   def jsonPayload = '{"labels":{"Code-Review":0,"Verified":' + verified + '},' +
                     ' "message": "' + msgPrefix + 'Gerrit-CI Build: ' + buildUrl + '", ' +
-                    ' "notify" : "' + (verified < 0 ? "OWNER": "OWNER_REVIEWERS") + '" }'
+                    ' "notify" : "' + (verified < 0 ? "OWNER": "OWNER_REVIEWERS") + "\" , ${Globals.addVerifiedTag} }"
   def addVerifiedExit = gerritPost("a/changes/" + changeNum + "/revisions/" + sha1 + "/review",
                                    jsonPayload)
 
@@ -85,7 +106,7 @@
 
 def gerritComment(buildUrl,changeNum, sha1, msgPrefix) {
   return gerritPost("a/changes/$changeNum/revisions/$sha1/review",
-                    "{\"message\": \"$msgPrefix Gerrit-CI Flow: $buildUrl\", \"notify\" : \"NONE\" }")
+                    "{ \"message\": \"$msgPrefix Gerrit-CI Flow: $buildUrl\", \"notify\" : \"NONE\", ${Globals.addCommentTag} }")
 }
 
 def waitForResult(b) {
