diff --git a/workflow/main.nf b/workflow/main.nf
index cd95d388e353a18fcacb2a308b9d7350078fc6ef..93b24b0b9463baaf171de15346229847b0c15415 100755
--- a/workflow/main.nf
+++ b/workflow/main.nf
@@ -89,10 +89,43 @@ process trackStart {
   
   aws dynamodb put-item \
     --table-name pipeline.tracking \
-      --item \
-        '{"sessionId": {"S": "${workflow.sessionId}"}, "pipeline": {"S": "cellranger_count"}, "projectDir": {"S": "${workflow.projectDir}"}, "start": {"S": "${workflow.start}"}, "astrocyte": {"BOOL": ${params.astrocyte}}}'
+    --item '{ \
+      "sessionId": {"S": "${workflow.sessionId}"}, \
+      "pipeline": {"S": "cellranger_count"}, \
+      "projectDir": {"S": "${workflow.projectDir}"}, \
+      "start": {"S": "${workflow.start}"}, \
+      "astrocyte": {"BOOL": ${params.astrocyte}"}, \
+      "status": {"S": "started"}}'
   """
-  }
+}
+
+workflow.onError{
+  errorScript = """singularity run 'docker://bicf/awscli:1.1' \ 
+    aws dynamodb update-item \
+      --table-name pipeline.tracking \
+      --key '{ \
+        "sessionId": {"S": "${workflow.sessionId}"}, \
+        "projectDir": {"S": "${workflow.projectDir}"}}' \
+      --update-expression 'SET #status = :status'  \
+      --expression-attribute-names '{"#status": "status"}' \
+      --expression-attribute-values '{":status": {"S":"error"}}'
+  """
+  errorResult = errorScript.execute().text
+}
+
+workflow.onComplete{
+  completeScript = """singularity run 'docker://bicf/awscli:1.1' \ 
+    aws dynamodb update-item \
+      --table-name pipeline.tracking \
+      --key '{ \
+        "sessionId": {"S": "${workflow.sessionId}"}, \
+        "projectDir": {"S": "${workflow.projectDir}"}}' \
+      --update-expression 'SET #status = :status'  \
+      --expression-attribute-names '{"#status": "status"}' \
+      --expression-attribute-values '{":status": {"S":"complete"}}'
+  """
+  completeResult = completeScript.execute().text
+}
 
 /*
  * checkDesignFile: check design file for errors