diff --git a/check_couchdb b/check_couchdb
index 38388c0877696569feb2d6373ce2e2bbdb1499be..1774c17057c779bd9dbefc31e0c1cafc9ee62e93 100755
--- a/check_couchdb
+++ b/check_couchdb
@@ -16,13 +16,15 @@
 # 2023-08-28  v0.1  <axel.hahn@unibe.ch>  first lines
 # 2023-08-28  v0.2  <axel.hahn@unibe.ch>  first check "up"
 # 2023-08-28  v0.3  <axel.hahn@unibe.ch>  add check "replication"
+# 2023-08-28  v0.4  <axel.hahn@unibe.ch>  add check "pending"
 # ======================================================================
 
 . $(dirname $0)/inc_pluginfunctions
 
-export self_APPVERSION=0.3
+export self_APPVERSION=0.4
 
 cfgfile=/etc/icingaclient/.couchdb
+export RESPONSE
 
 # ----------------------------------------------------------------------
 # FUNCTIONS
@@ -49,6 +51,7 @@ OPTIONS:
     MODE is one of
       up           show general couchdb status
       replication  show last replication status
+      pending      show count of pending updates for nodes, dbs and users
 
 EXAMPLE:
 $_self -m up
@@ -59,21 +62,18 @@ EOF
 
 # get couchdb status by given url and a filter
 # The check aborts here if no data were found.
+# Response is written into global var RESPONSE
+#
 # param  string  url to request; the part behind couchdb base url
 # param  string  string to search for in the content
-function get(){
-        _path="$1"
-        curl -s "${COUCH_URL}${_path}" 
-}
-
 function abortOnWrongResponse(){
-        _response="$1"
-        _path="$2"
-        _filter="$3"
+        _path="$1"
+        _filter="$2"
 
-        if ! grep "$_filter" <<< "$_response" >/dev/null ; then
+        RESPONSE=$( curl -s "${COUCH_URL}${_path}" )
+        if ! grep "$_filter" <<< "$RESPONSE" >/dev/null ; then
                 echo "ERROR: Wrong response from $_path - it does not contain $_filter"
-                curl -si "${COUCH_URL}${2}"
+                curl -si "${COUCH_URL}${_path}"
                 ph.abort
         fi
 }
@@ -105,29 +105,31 @@ fi
 
 if [ -z "$COUCH_URL" ]; then
     echo "ERROR: I have no couchdb url + authentication yet."
-    echo "Maybe you need to add -t /etc/telegraf/telegraf.conf."
+    echo "set 'export COUCH_URL=http://USER:PW@localhost:5984' in $cfgfile"
     ph.abort
 fi
 
 # ----------------------------------------------------------------------
 
 case "${sMode}" in
+    # ............................................................
     "up")
-        response=$( get "/_up" )
-        abortOnWrongResponse "$response" "/_up" '"status":"'
+        REQ=/_up
+        abortOnWrongResponse "${REQ}" '"status":"'
 
-        _status=$( jq '.status' <<< "${response}" | tr -d '"')
+        _status=$( jq '.status' <<< "${RESPONSE}" | tr -d '"')
         if ! echo "$_status" | grep "ok" >/dev/null; then
                 ph.setStatus critical
         fi
-        ph.status "Couchdb status (value 'status' in /_up is '$_status')"
-        echo "Reponse: "; echo "${response}" | jq
+        ph.status "Couchdb :: health status (value 'status' in ${REQ} is '$_status')"
+        echo "Reponse of ${REQ}: "; echo "${RESPONSE}" | jq
         ;;
+    # ............................................................
     "replication")
-        response=$( get "/_up" )
-        abortOnWrongResponse "$response" "/_up" '"status":"'
+        REQ=/_up
+        abortOnWrongResponse "${REQ}" '"status":"'
 
-        _status=$( jq '.seeds[] | .last_replication_status'  <<< "${response}" | grep -v "null" | tr -d '"')
+        _status=$( jq '.seeds[] | .last_replication_status' <<< "${RESPONSE}" | grep -v "null" | tr -d '"')
 
         # there can be multiple sections "seeds" and multiple line responses.
         # remove all lines with "ok" and check if there is any "bad content" left
@@ -135,12 +137,37 @@ case "${sMode}" in
         if [ -n "$_nonok" ]; then
                 ph.setStatus critical
         fi
-        if ! echo "$_status" | grep "ok" >/dev/null; then
-                ph.setStatus critical
-        fi
-        ph.status "Couchdb replication"
-        echo "Reponse: "; echo "${response}" | jq
+
+        ph.status "Couchdb :: replication (values 'last_replication_status' in ${REQ} are '$_status')"
+        echo "Reponse: of ${REQ}"; echo "${RESPONSE}" | jq
+        ;;
+    # ............................................................
+    "pending")
+        REQ=/_up
+        abortOnWrongResponse "${REQ}" '"status":"'
+
+        _status=$( jq '.seeds[] | .pending_updates' <<< "${RESPONSE}" | grep -v "null" | tr -d '"')
+        
+        typeset -i _iSumme
+        typeset -i _iTotal
+
+        _iTotal=0
+        for myvar in _nodes _dbs _users
+        do
+            _iSumme=0
+            for myvalue in $( grep "$myvar" <<< "$_status" | cut -f 2 -d ':' | tr -d ',')
+            do
+                _iSumme+=$myvalue
+                test "$myvalue" -gt 0  && ph.setStatus warning
+            done
+            ph.perfadd "$myvar" "$_iSumme"    "" ""
+            _iTotal+=$_iSumme
+        done
+
+        ph.status "Couchdb :: pending updates: $_iTotal (values below 'pending_updates' in ${REQ})"
+        echo "Reponse: of ${REQ}"; echo "${RESPONSE}" | jq
         ;;
+    # ............................................................
     *)
         echo "ERRROR: [${sMode}] is an INVALID mode"
         showHelp