Index: bbp-includes/bbp-common-functions.php
--- bbp-includes/bbp-common-functions.php
+++ bbp-includes/bbp-common-functions.php
@@ -689,7 +689,7 @@
  *                        Do not supply if supplying $anonymous_data.
  * @uses get_option() To get the throttle time
  * @uses get_transient() To get the last posted transient of the ip
- * @uses get_user_meta() To get the last posted meta of the user
+ * @uses bbp_get_user_meta() To get the last posted meta of the user
  * @uses current_user_can() To check if the current user can throttle
  * @return bool True if there is no flooding, false if there is
  */
@@ -711,7 +711,7 @@
 	// User is logged in, so check their last posted time
 	} elseif ( !empty( $author_id ) ) {
 		$author_id   = (int) $author_id;
-		$last_posted = get_user_meta( $author_id, '_bbp_last_posted', true );
+		$last_posted = bbp_get_user_meta( $author_id, '_bbp_last_posted', true );
 
 		if ( isset( $last_posted ) && time() < $last_posted + $throttle_time && !current_user_can( 'throttle' ) ) {
 			return false;
Index: bbp-includes/bbp-reply-functions.php
--- bbp-includes/bbp-reply-functions.php
+++ bbp-includes/bbp-reply-functions.php
@@ -592,7 +592,7 @@
  * @uses bbp_get_topic_forum_id() To get the topic forum id
  * @uses update_post_meta() To update the reply metas
  * @uses set_transient() To update the flood check transient for the ip
- * @uses update_user_meta() To update the last posted meta for the user
+ * @uses bbp_update_user_meta() To update the last posted meta for the user
  * @uses bbp_is_subscriptions_active() To check if the subscriptions feature is
  *                                      activated or not
  * @uses bbp_is_user_subscribed() To check if the user is subscribed
@@ -650,7 +650,7 @@
 
 	} else {
 		if ( empty( $is_edit ) && !current_user_can( 'throttle' ) ) {
-			update_user_meta( $author_id, '_bbp_last_posted', time() );
+			bbp_update_user_meta( $author_id, '_bbp_last_posted', time() );
 		}
 	}
 
Index: bbp-includes/bbp-topic-functions.php
--- bbp-includes/bbp-topic-functions.php
+++ bbp-includes/bbp-topic-functions.php
@@ -694,7 +694,7 @@
  * @yses bbp_get_topic_forum_id() To get the topic forum id
  * @uses update_post_meta() To update the topic metas
  * @uses set_transient() To update the flood check transient for the ip
- * @uses update_user_meta() To update the last posted meta for the user
+ * @uses bbp_update_user_meta() To update the last posted meta for the user
  * @uses bbp_is_subscriptions_active() To check if the subscriptions feature is
  *                                      activated or not
  * @uses bbp_is_user_subscribed() To check if the user is subscribed
@@ -753,7 +753,7 @@
 
 	} else {
 		if ( empty( $is_edit ) && !current_user_can( 'throttle' ) ) {
-			update_user_meta( $author_id, '_bbp_last_posted', time() );
+			bbp_update_user_meta( $author_id, '_bbp_last_posted', time() );
 		}
 	}
 
Index: bbp-includes/bbp-user-functions.php
--- bbp-includes/bbp-user-functions.php
+++ bbp-includes/bbp-user-functions.php
@@ -10,7 +10,85 @@
 // Exit if accessed directly
 if ( !defined( 'ABSPATH' ) ) exit;
 
+/** Meta **********************************************************************/
+
 /**
+ * Add meta data field to a user.
+ *
+ * Post meta data is called "Custom Fields" on the Administration Screens.
+ *
+ * @since bbPress (r3900)
+ * @uses add_meta_data()
+ * @param int $user_id Post ID.
+ * @param string $meta_key Metadata name.
+ * @param mixed $meta_value Metadata value.
+ * @param bool $unique Optional, default is false. Whether the same key should not be added.
+ * @return bool False for failure. True for success.
+ */
+function bbp_add_user_meta( $user_id, $meta_key, $meta_value, $unique = false ) {
+	$function = apply_filters( 'bbp_add_user_meta_function', 'add_user_meta' );
+	return $function( $user_id, $meta_key, $meta_value, $unique );
+}
+
+/**
+ * Remove metadata matching criteria from a user.
+ *
+ * You can match based on the key, or key and value. Removing based on key and
+ * value, will keep from removing duplicate metadata with the same key. It also
+ * allows removing all metadata matching key, if needed.
+ *
+ * @since bbPress (r3900)
+ * @uses bbp_delete_user_meta()
+ * @param int $user_id user ID
+ * @param string $meta_key Metadata name.
+ * @param mixed $meta_value Optional. Metadata value.
+ * @return bool False for failure. True for success.
+ */
+function bbp_delete_user_meta( $user_id, $meta_key, $meta_value = '' ) {
+	$function = apply_filters( 'bbp_delete_user_meta_function', 'delete_user_meta' );
+	return $function( $user_id, $meta_key, $meta_value );
+}
+
+/**
+ * Retrieve user meta field for a user.
+ *
+ * @since bbPress (r3900)
+ * @uses bbp_get_user_meta()
+ * @param int $user_id Post ID.
+ * @param string $meta_key Optional. The meta key to retrieve. By default, returns data for all keys.
+ * @param bool $single Whether to return a single value.
+ * @return mixed Will be an array if $single is false. Will be value of meta data field if $single
+ *  is true.
+ */
+function bbp_get_user_meta( $user_id, $meta_key = '', $single = false ) {
+	$function = apply_filters( 'bbp_get_user_meta_function', 'get_user_meta', $meta_key );
+	return $function( $user_id, $meta_key, $single );
+}
+
+/**
+ * Update user meta field based on user ID.
+ *
+ * Use the $prev_value parameter to differentiate between meta fields with the
+ * same key and user ID.
+ *
+ * If the meta field for the user does not exist, it will be added.
+ *
+ * @since bbPress (r3900)
+ * @uses update_user_meta
+ * @param int $user_id Post ID.
+ * @param string $meta_key Metadata key.
+ * @param mixed $meta_value Metadata value.
+ * @param mixed $prev_value Optional. Previous value to check before removing.
+ * @return bool False on failure, true if success.
+ */
+function bbp_update_user_meta( $user_id, $meta_key, $meta_value, $prev_value = '' ) {
+	$function = apply_filters( 'bbp_update_user_meta_function', 'update_user_meta', $meta_key );
+	return $function( $user_id, $meta_key, $meta_value, $prev_value );
+}
+
+/** Other *********************************************************************/
+
+/**
  * Redirect back to $url when attempting to use the login page
  *
  * @since bbPress (r2815)
@@ -304,7 +382,7 @@
  *
  * @param int $user_id Optional. User id
  * @uses bbp_get_user_id() To get the user id
- * @uses get_user_meta() To get the user favorites
+ * @uses bbp_get_user_meta() To get the user favorites
  * @uses apply_filters() Calls 'bbp_get_user_favorites_topic_ids' with
  *                        the favorites and user id
  * @return array|bool Results if user has favorites, otherwise false
@@ -314,7 +392,7 @@
 	if ( empty( $user_id ) )
 		return false;
 
-	$favorites = (string) get_user_meta( $user_id, bbp_get_favorites_key(), true );
+	$favorites = (string) bbp_get_user_meta( $user_id, bbp_get_favorites_key(), true );
 	$favorites = (array) explode( ',', $favorites );
 	$favorites = array_filter( $favorites );
 
@@ -378,7 +456,7 @@
  * @param int $user_id Optional. User id
  * @param int $topic_id Optional. Topic id
  * @uses bbp_get_user_favorites_topic_ids() To get the user favorites
- * @uses update_user_meta() To update the user favorites
+ * @uses bbp_update_user_meta() To update the user favorites
  * @uses do_action() Calls 'bbp_add_user_favorite' with the user id and topic id
  * @return bool Always true
  */
@@ -395,7 +473,7 @@
 		$favorites[] = $topic_id;
 		$favorites   = array_filter( $favorites );
 		$favorites   = (string) implode( ',', $favorites );
-		update_user_meta( $user_id, bbp_get_favorites_key(), $favorites );
+		bbp_update_user_meta( $user_id, bbp_get_favorites_key(), $favorites );
 	}
 
 	do_action( 'bbp_add_user_favorite', $user_id, $topic_id );
@@ -411,8 +489,8 @@
  * @param int $user_id Optional. User id
  * @param int $topic_id Optional. Topic id
  * @uses bbp_get_user_favorites_topic_ids() To get the user favorites
- * @uses update_user_meta() To update the user favorites
- * @uses delete_user_meta() To delete the user favorites meta
+ * @uses bbp_update_user_meta() To update the user favorites
+ * @uses bbp_delete_user_meta() To delete the user favorites meta
  * @uses do_action() Calls 'bbp_remove_user_favorite' with the user & topic id
  * @return bool True if the topic was removed from user's favorites, otherwise
  *               false
@@ -432,9 +510,9 @@
 
 		if ( !empty( $favorites ) ) {
 			$favorites = implode( ',', $favorites );
-			update_user_meta( $user_id, bbp_get_favorites_key(), $favorites );
+			bbp_update_user_meta( $user_id, bbp_get_favorites_key(), $favorites );
 		} else {
-			delete_user_meta( $user_id, bbp_get_favorites_key() );
+			bbp_delete_user_meta( $user_id, bbp_get_favorites_key() );
 		}
 	}
 
@@ -634,7 +712,7 @@
  *
  * @param int $user_id Optional. User id
  * @uses bbp_get_user_id() To get the user id
- * @uses get_user_meta() To get the user's subscriptions
+ * @uses bbp_get_user_meta() To get the user's subscriptions
  * @uses apply_filters() Calls 'bbp_get_user_subscribed_topic_ids' with
  *                        the subscriptions and user id
  * @return array|bool Results if user has subscriptions, otherwise false
@@ -644,7 +722,7 @@
 	if ( empty( $user_id ) )
 		return false;
 
-	$subscriptions = (string) get_user_meta( $user_id, bbp_get_subscriptions_key(), true );
+	$subscriptions = (string) bbp_get_user_meta( $user_id, bbp_get_subscriptions_key(), true );
 	$subscriptions = (array) explode( ',', $subscriptions );
 	$subscriptions = array_filter( $subscriptions );
 
@@ -710,7 +788,7 @@
  * @param int $topic_id Optional. Topic id
  * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
  * @uses bbp_get_topic() To get the topic
- * @uses update_user_meta() To update the user's subscriptions
+ * @uses bbp_update_user_meta() To update the user's subscriptions
  * @uses do_action() Calls 'bbp_add_user_subscription' with the user & topic id
  * @return bool Always true
  */
@@ -728,7 +806,7 @@
 		$subscriptions[] = $topic_id;
 		$subscriptions   = array_filter( $subscriptions );
 		$subscriptions   = (string) implode( ',', $subscriptions );
-		update_user_meta( $user_id, bbp_get_subscriptions_key(), $subscriptions );
+		bbp_update_user_meta( $user_id, bbp_get_subscriptions_key(), $subscriptions );
 
 		wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress' );
 	}
@@ -746,8 +824,8 @@
  * @param int $user_id Optional. User id
  * @param int $topic_id Optional. Topic id
  * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions
- * @uses update_user_meta() To update the user's subscriptions
- * @uses delete_user_meta() To delete the user's subscriptions meta
+ * @uses bbp_update_user_meta() To update the user's subscriptions
+ * @uses bbp_delete_user_meta() To delete the user's subscriptions meta
  * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and
  *                    topic id
  * @return bool True if the topic was removed from user's subscriptions,
@@ -769,9 +847,9 @@
 
 		if ( !empty( $subscriptions ) ) {
 			$subscriptions = implode( ',', $subscriptions );
-			update_user_meta( $user_id, bbp_get_subscriptions_key(), $subscriptions );
+			bbp_update_user_meta( $user_id, bbp_get_subscriptions_key(), $subscriptions );
 		} else {
-			delete_user_meta( $user_id, bbp_get_subscriptions_key() );
+			bbp_delete_user_meta( $user_id, bbp_get_subscriptions_key() );
 		}
 
 		wp_cache_delete( 'bbp_get_topic_subscribers_' . $topic_id, 'bbpress' );
@@ -994,7 +1072,7 @@
 
 		// stops users being added to current blog when they are edited
 		if ( $delete_role ) {
-			delete_user_meta( $user_id, $blog_prefix . 'capabilities' );
+			bbp_delete_user_meta( $user_id, $blog_prefix . 'capabilities' );
 		}
 
 		if ( is_multisite() && is_network_admin() & !bbp_is_user_home() && current_user_can( 'manage_network_options' ) && !isset( $super_admins ) && empty( $_POST['super_admin'] ) == is_super_admin( $user_id ) ) {
Index: bbp-includes/bbp-user-template.php
--- bbp-includes/bbp-user-template.php
+++ bbp-includes/bbp-user-template.php
@@ -1550,7 +1550,7 @@
 	 *
 	 * @param int $user_id
 	 * @uses bbp_get_user_id()
-	 * @uses get_user_meta()
+	 * @uses bbp_get_user_meta()
 	 * @uses apply_filters()
 	 * @return string
 	 */
@@ -1561,7 +1561,7 @@
 		if ( empty( $user_id ) )
 			return false;
 
-		$count = get_user_meta( $user_id, '_bbp_topic_count', true );
+		$count = bbp_get_user_meta( $user_id, '_bbp_topic_count', true );
 
 		return apply_filters( 'bbp_get_user_topic_count', (int) $count, $user_id );
 	}
@@ -1585,7 +1585,7 @@
 	 *
 	 * @param int $user_id
 	 * @uses bbp_get_user_id()
-	 * @uses get_user_meta()
+	 * @uses bbp_get_user_meta()
 	 * @uses apply_filters()
 	 * @return string
 	 */
@@ -1596,7 +1596,7 @@
 		if ( empty( $user_id ) )
 			return false;
 
-		$count = get_user_meta( $user_id, '_bbp_reply_count', true );
+		$count = bbp_get_user_meta( $user_id, '_bbp_reply_count', true );
 
 		return apply_filters( 'bbp_get_user_reply_count', (int) $count, $user_id );
 	}
@@ -1620,7 +1620,7 @@
 	 *
 	 * @param int $user_id
 	 * @uses bbp_get_user_id()
-	 * @uses get_user_meta()
+	 * @uses bbp_get_user_meta()
 	 * @uses apply_filters()
 	 * @return string
 	 */
@@ -1631,8 +1631,8 @@
 		if ( empty( $user_id ) )
 			return false;
 
-		$topics  = get_user_meta( $user_id, '_bbp_topic_count', true );
-		$replies = get_user_meta( $user_id, '_bbp_reply_count', true );
+		$topics  = bbp_get_user_meta( $user_id, '_bbp_topic_count', true );
+		$replies = bbp_get_user_meta( $user_id, '_bbp_reply_count', true );
 		$count   = (int) $topics + (int) $replies;
 
 		return apply_filters( 'bbp_get_user_post_count', (int) $count, $user_id );
