diff --git src/includes/core/actions.php src/includes/core/actions.php
index f3395d5..4ce609d 100644
--- src/includes/core/actions.php
+++ src/includes/core/actions.php
@@ -254,6 +254,43 @@ add_action( 'bbp_unspammed_reply',  'bbp_update_reply_walker' );
 add_action( 'bbp_approved_reply',   'bbp_update_reply_walker' );
 add_action( 'bbp_unapproved_reply', 'bbp_update_reply_walker' );
 
+// Update forum topic/reply counts
+add_action( 'bbp_new_reply',        'bbp_increase_forum_reply_count'        );
+add_action( 'bbp_new_topic',        'bbp_increase_forum_topic_count'        );
+add_action( 'bbp_trashed_reply',    'bbp_decrease_forum_reply_count'        );
+add_action( 'bbp_trashed_topic',    'bbp_decrease_forum_topic_count'        );
+add_action( 'bbp_trashed_topic',    'bbp_increase_forum_topic_count_hidden' );
+add_action( 'bbp_untrashed_reply',  'bbp_increase_forum_reply_count'        );
+add_action( 'bbp_untrashed_topic',  'bbp_increase_forum_topic_count'        );
+add_action( 'bbp_untrashed_topic',  'bbp_decrease_forum_topic_count_hidden' );
+add_action( 'bbp_spammed_reply',    'bbp_decrease_forum_reply_count'        );
+add_action( 'bbp_spammed_topic',    'bbp_decrease_forum_topic_count'        );
+add_action( 'bbp_spammed_topic',    'bbp_increase_forum_topic_count_hidden' );
+add_action( 'bbp_unspammed_reply',  'bbp_increase_forum_reply_count'        );
+add_action( 'bbp_unspammed_topic',  'bbp_increase_forum_topic_count'        );
+add_action( 'bbp_unspammed_topic',  'bbp_decrease_forum_topic_count_hidden' );
+add_action( 'bbp_approved_reply',   'bbp_increase_forum_reply_count'        );
+add_action( 'bbp_approved_topic',   'bbp_increase_forum_topic_count'        );
+add_action( 'bbp_approved_topic',   'bbp_decrease_forum_topic_count_hidden' );
+add_action( 'bbp_unapproved_reply', 'bbp_decrease_forum_reply_count'        );
+add_action( 'bbp_unapproved_topic', 'bbp_decrease_forum_topic_count'        );
+add_action( 'bbp_unapproved_topic', 'bbp_increase_forum_topic_count_hidden' );
+
+// Update topic reply counts
+add_action( 'bbp_new_reply',        'bbp_increase_topic_reply_count'        );
+add_action( 'bbp_trashed_reply',    'bbp_decrease_topic_reply_count'        );
+add_action( 'bbp_trashed_reply',    'bbp_increase_topic_reply_count_hidden' );
+add_action( 'bbp_untrashed_reply',  'bbp_increase_topic_reply_count'        );
+add_action( 'bbp_untrashed_reply',  'bbp_decrease_topic_reply_count_hidden' );
+add_action( 'bbp_spammed_reply',    'bbp_decrease_topic_reply_count'        );
+add_action( 'bbp_spammed_reply',    'bbp_increase_topic_reply_count_hidden' );
+add_action( 'bbp_unspammed_reply',  'bbp_increase_topic_reply_count'        );
+add_action( 'bbp_unspammed_reply',  'bbp_decrease_topic_reply_count_hidden' );
+add_action( 'bbp_approved_reply',   'bbp_increase_topic_reply_count'        );
+add_action( 'bbp_approved_reply',   'bbp_decrease_forum_reply_count_hidden' );
+add_action( 'bbp_unapproved_reply', 'bbp_decrease_forum_reply_count'        );
+add_action( 'bbp_unapproved_reply', 'bbp_increase_topic_reply_count_hidden' );
+
 // Users topic & reply counts
 add_action( 'bbp_new_topic',     'bbp_increase_user_topic_count' );
 add_action( 'bbp_new_reply',     'bbp_increase_user_reply_count' );
diff --git src/includes/forums/functions.php src/includes/forums/functions.php
index c6ae18b..4d6a949 100644
--- src/includes/forums/functions.php
+++ src/includes/forums/functions.php
@@ -1089,6 +1089,55 @@ function bbp_bump_forum_topic_count( $forum_id = 0, $difference = 1, $update_anc
 }
 
 /**
+ * Increase the total topic count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_topic_count() To bump forum topic count
+ */
+function bbp_increase_forum_topic_count( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_topic( $forum_id ) ) {
+		$topic_id = $forum_id;
+		$forum_id = bbp_get_topic_forum_id( $topic_id );
+
+		// If this is a new, unpublished, topic, increase hidden count and bail
+		if ( 'bbp_new_topic' === current_action() && ( ! bbp_is_topic_published( $topic_id ) && ! bbp_is_topic_closed( $topic_id ) ) ) {
+			bbp_increase_forum_topic_count_hidden( $forum_id );
+			return;
+		}
+	}
+
+	bbp_bump_forum_topic_count( $forum_id );
+}
+
+/**
+ * Decrease the total topic count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_topic_count() To bump forum topic count
+ */
+function bbp_decrease_forum_topic_count( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_topic( $forum_id ) ) {
+		$forum_id = bbp_get_topic_forum_id( $forum_id );
+	}
+
+	bbp_bump_forum_topic_count( $forum_id, -1 );
+}
+
+/**
  * Bump the total hidden topic count of a forum
  *
  * @since bbPress (r3825)
@@ -1116,6 +1165,48 @@ function bbp_bump_forum_topic_count_hidden( $forum_id = 0, $difference = 1 ) {
 }
 
 /**
+ * Increase the total hidden topic count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_topic_count_hidden() To bump forum hidden topic count
+ */
+function bbp_increase_forum_topic_count_hidden( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_topic( $forum_id ) ) {
+		$forum_id = bbp_get_topic_forum_id( $forum_id );
+	}
+
+	bbp_bump_forum_topic_count_hidden( $forum_id );
+}
+
+/**
+ * Decrease the total hidden topic count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_topic_count_hidden() To bump forum hidden topic count
+ */
+function bbp_decrease_forum_topic_count_hidden( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_topic( $forum_id ) ) {
+		$forum_id = bbp_get_topic_forum_id( $forum_id );
+	}
+
+	bbp_bump_forum_topic_count_hidden( $forum_id, -1 );
+}
+
+/**
  * Bump the total topic count of a forum
  *
  * @since bbPress (r3825)
@@ -1165,6 +1256,54 @@ function bbp_bump_forum_reply_count( $forum_id = 0, $difference = 1, $update_anc
 	return (int) apply_filters( 'bbp_bump_forum_reply_count', (int) $total_reply_count + (int) $difference, $forum_id, (int) $difference, (bool) $update_ancestors );
 }
 
+/**
+ * Increase the total reply count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_reply_count() To bump forum topic count
+ */
+function bbp_increase_forum_reply_count( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $forum_id ) ) {
+		$reply_id = $forum_id;
+		$forum_id = bbp_get_reply_forum_id( $reply_id );
+
+		// Don't update if this is a new, unpublished, reply
+		if ( 'bbp_new_reply' === current_action() && ! bbp_is_reply_published( $reply_id ) ) {
+			return;
+		}
+	}
+
+	bbp_bump_forum_reply_count( $forum_id, 1 );
+}
+
+/**
+ * Decrease the total reply count of a forum by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $forum_id Optional. Forum id.
+ * @uses bbp_get_forum_id() To get the forum id
+ * @uses bbp_bump_forum_reply_count() To bump forum topic count
+ */
+function bbp_decrease_forum_reply_count( $forum_id = 0 ) {
+	if ( empty( $forum_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $forum_id ) ) {
+		$forum_id = bbp_get_reply_forum_id( $forum_id );
+	}
+
+	bbp_bump_forum_reply_count( $forum_id, -1 );
+}
+
 /** Forum Updaters ************************************************************/
 
 /**
@@ -1622,10 +1761,14 @@ function bbp_update_forum( $args = '' ) {
 	}
 
 	// Counts
-	bbp_update_forum_subforum_count    ( $r['forum_id'] );
-	bbp_update_forum_reply_count       ( $r['forum_id'] );
-	bbp_update_forum_topic_count       ( $r['forum_id'] );
-	bbp_update_forum_topic_count_hidden( $r['forum_id'] );
+	bbp_update_forum_subforum_count( $r['forum_id'] );
+
+	// Only update topic count if we're deleting a topic, or in the dashboard
+	if ( in_array( current_action(), array( 'bbp_deleted_topic', 'save_post' ) ) ) {
+		bbp_update_forum_reply_count(        $r['forum_id'] );
+		bbp_update_forum_topic_count(        $r['forum_id'] );
+		bbp_update_forum_topic_count_hidden( $r['forum_id'] );
+	}
 
 	// Update the parent forum if one was passed
 	if ( !empty( $r['post_parent'] ) && is_numeric( $r['post_parent'] ) ) {
diff --git src/includes/replies/functions.php src/includes/replies/functions.php
index a4698d0..98c51f0 100644
--- src/includes/replies/functions.php
+++ src/includes/replies/functions.php
@@ -984,9 +984,13 @@ function bbp_update_reply_walker( $reply_id, $last_active_time = '', $forum_id =
 				}
 
 				// Counts
-				bbp_update_topic_voice_count       ( $ancestor );
-				bbp_update_topic_reply_count       ( $ancestor );
-				bbp_update_topic_reply_count_hidden( $ancestor );
+				bbp_update_topic_voice_count( $ancestor );
+
+				// Only update reply count if we're deleting a reply, or in the dashboard
+				if ( in_array( current_action(), array( 'bbp_deleted_reply', 'save_post' ) ) ) {
+					bbp_update_topic_reply_count(        $ancestor );
+					bbp_update_topic_reply_count_hidden( $ancestor );
+				}
 
 			// Forum meta relating to most recent topic
 			} elseif ( bbp_is_forum( $ancestor ) ) {
@@ -1010,7 +1014,10 @@ function bbp_update_reply_walker( $reply_id, $last_active_time = '', $forum_id =
 				}
 
 				// Counts
-				bbp_update_forum_reply_count( $ancestor );
+				// Only update reply count if we're deleting a reply, or in the dashboard
+				if ( in_array( current_action(), array( 'bbp_deleted_reply', 'save_post' ) ) ) {
+					bbp_update_forum_reply_count( $ancestor );
+				}
 			}
 		}
 	}
diff --git src/includes/topics/functions.php src/includes/topics/functions.php
index c23e4b3..ee3f9aa 100644
--- src/includes/topics/functions.php
+++ src/includes/topics/functions.php
@@ -2347,6 +2347,57 @@ function bbp_bump_topic_reply_count( $topic_id = 0, $difference = 1 ) {
 }
 
 /**
+ * Increase the total reply count of a topic by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $topic_id Optional. Forum id.
+ * @uses bbp_is_reply() To check if the passed topic id is a reply
+ * @uses bbp_get_reply_topic_id() To get the topic id
+ * @uses bbp_bump_topic_reply_count() To bump topic reply count
+ */
+function bbp_increase_topic_reply_count( $topic_id = 0 ) {
+	if ( empty( $topic_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $topic_id ) ) {
+		$reply_id = $topic_id;
+		$topic_id = bbp_get_reply_topic_id( $reply_id );
+
+		// If this is a new, unpublished, reply, update hidden count and bail
+		if ( 'bbp_new_reply' === current_action() && ! bbp_is_reply_published( $reply_id ) ) {
+			bbp_increase_topic_reply_count_hidden( $topic_id );
+			return;
+		}
+	}
+
+	bbp_bump_topic_reply_count( $topic_id );
+}
+
+/**
+ * Decrease the total reply count of a topic by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $topic_id Optional. Topic id.
+ * @uses bbp_is_reply() To check if the passed topic id is a reply
+ * @uses bbp_get_reply_topic_id() To get the topic id
+ * @uses bbp_bump_topic_reply_count() To bump topic reply count
+ */
+function bbp_decrease_topic_reply_count( $topic_id = 0 ) {
+	if ( empty( $topic_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $topic_id ) ) {
+		$topic_id = bbp_get_reply_topic_id( $topic_id );
+	}
+
+	bbp_bump_topic_reply_count( $topic_id, -1 );
+}
+
+/**
  * Bump the total hidden reply count of a topic
  *
  * @since bbPress (r3825)
@@ -2373,6 +2424,50 @@ function bbp_bump_topic_reply_count_hidden( $topic_id = 0, $difference = 1 ) {
 	return (int) apply_filters( 'bbp_bump_topic_reply_count_hidden', (int) $new_count, $topic_id, (int) $difference );
 }
 
+/**
+ * Increase the total hidden reply count of a topic by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $topic_id Optional. Topic id.
+ * @uses bbp_is_reply() To check if the passed topic id is a reply
+ * @uses bbp_get_reply_topic_id() To get the topic id
+ * @uses bbp_bump_topic_reply_count_hidden() To bump topic hidden reply count
+ */
+function bbp_increase_topic_reply_count_hidden( $topic_id = 0 ) {
+	if ( empty( $topic_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $topic_id ) ) {
+		$topic_id = bbp_get_reply_topic_id( $topic_id );
+	}
+
+	bbp_bump_topic_reply_count_hidden( $topic_id );
+}
+
+/**
+ * Decrease the total hidden reply count of a topic by one
+ *
+ * @since bbPress ()
+ *
+ * @param int $topic_id Optional. Topic id.
+ * @uses bbp_is_reply() To check if the passed topic id is a reply
+ * @uses bbp_get_reply_topic_id() To get the topic id
+ * @uses bbp_bump_topic_reply_count_hidden() To bump topic hidden reply count
+ */
+function bbp_decrease_topic_reply_count_hidden( $topic_id = 0 ) {
+	if ( empty( $topic_id ) ) {
+		return;
+	}
+
+	if ( bbp_is_reply( $topic_id ) ) {
+		$topic_id = bbp_get_reply_topic_id( $topic_id );
+	}
+
+	bbp_bump_topic_reply_count_hidden( $topic_id, -1 );
+}
+
 /** Topic Updaters ************************************************************/
 
 /**
