diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml
index 86a55e88ab277d9a43b7196e394825931c4b68ca..a5fd46cffc2160a314a209a195939d04c67199b8 100644
--- a/.gitlab/ci/review-apps/main.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml
@@ -105,4 +105,4 @@ review-stop:
   stage: deploy
   needs: []
   script:
-    - delete_k8s_release_namespace
+    - delete_namespace
diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml
index b08964f26f16a884630e1930c48d38838b8dbb1b..db8046fee07e8083bc056b89f5921688ee66089d 100644
--- a/.gitlab/ci/review.gitlab-ci.yml
+++ b/.gitlab/ci/review.gitlab-ci.yml
@@ -9,12 +9,13 @@ review-cleanup:
     action: stop
   before_script:
     - source scripts/utils.sh
+    - source scripts/review_apps/review-apps.sh
     - source scripts/review_apps/gcp_cleanup.sh
     - install_gitlab_gem
     - setup_gcp_dependencies
   script:
     - delete_release
-    - delete_k8s_release_namespace
+    - delete_namespace
     - ruby -rrubygems scripts/review_apps/automated_cleanup.rb
     - gcp_cleanup
 
diff --git a/scripts/review_apps/review-apps.sh b/scripts/review_apps/review-apps.sh
index 88913b4e972dc2b39145abaf7612179fe3793f63..191b20eff3e308b87131b4fb0b6405a053a19636 100755
--- a/scripts/review_apps/review-apps.sh
+++ b/scripts/review_apps/review-apps.sh
@@ -1,5 +1,23 @@
 [[ "$TRACE" ]] && set -x
 
+function namespace_exists() {
+  local namespace="${1}"
+  local namespace_exists
+
+  echoinfo "Checking if ${namespace} exists..." true
+
+  kubectl describe namespace "${namespace}" >/dev/null 2>&1
+  namespace_exists=$?
+
+  if [ $namespace_exists -eq 0 ]; then
+    echoinfo "Namespace ${namespace} found."
+  else
+    echoerr "Namespace ${namespace} NOT found."
+  fi
+
+  return $namespace_exists
+}
+
 function deploy_exists() {
   local namespace="${1}"
   local release="${2}"
@@ -73,17 +91,20 @@ function delete_failed_release() {
     # Cleanup and previous installs, as FAILED and PENDING_UPGRADE will cause errors with `upgrade`
     if previous_deploy_failed "${namespace}" "${release}" ; then
       echoinfo "Review App deployment in bad state, cleaning up namespace ${release}"
-      delete_k8s_release_namespace
+      delete_namespace
     else
       echoinfo "Review App deployment in good state"
     fi
   fi
 }
 
-function delete_k8s_release_namespace() {
+function delete_namespace() {
   local namespace="${CI_ENVIRONMENT_SLUG}"
 
-  kubectl delete namespace "${namespace}" --wait
+  if namespace_exists "${namespace}"; then
+    echoinfo "Deleting namespace ${namespace}..." true
+    kubectl delete namespace "${namespace}" --wait
+  fi
 }
 
 function get_pod() {
@@ -170,9 +191,10 @@ function check_kube_domain() {
 function ensure_namespace() {
   local namespace="${1}"
 
-  echoinfo "Ensuring the ${namespace} namespace exists..." true
-
-  kubectl describe namespace "${namespace}" || kubectl create namespace "${namespace}"
+  if ! namespace_exists "${namespace}"; then
+    echoinfo "Creating namespace ${namespace}..." true
+    kubectl create namespace "${namespace}"
+  fi
 }
 
 function label_namespace() {