diff --git src/bp-core/bp-core-avatars.php src/bp-core/bp-core-avatars.php
index 98f2a3a..4180784 100644
--- src/bp-core/bp-core-avatars.php
+++ src/bp-core/bp-core-avatars.php
@@ -991,10 +991,6 @@ function bp_avatar_ajax_upload() {
 	$name_parts = pathinfo( $name );
 	$name = trim( substr( $name, 0, - ( 1 + strlen( $name_parts['extension'] ) ) ) );
 
-	if ( 'user' === $bp_params['object'] ) {
-		do_action( 'xprofile_avatar_uploaded' );
-	}
-
 	// Finally return the avatar to the editor
 	bp_attachments_json_response( true, $is_html4, array(
 		'name'      => $name,
@@ -1057,13 +1053,6 @@ function bp_avatar_handle_capture( $data = '', $item_id = 0 ) {
 		// Crop to default values
 		$crop_args = array( 'item_id' => $item_id, 'original_file' => $avatar_to_crop, 'crop_x' => 0, 'crop_y' => 0 );
 
-		/**
-		 * Fires if the new avatar was successfully captured.
-		 *
-		 * @since 2.3.0
-		 */
-		do_action( 'xprofile_avatar_uploaded' );
-
 		return bp_core_avatar_handle_crop( $crop_args );
 	} else {
 		return false;
@@ -1200,7 +1189,18 @@ function bp_avatar_ajax_set() {
 				'item_id'       => $avatar_data['item_id'],
 			);
 
-			do_action( 'xprofile_screen_change_avatar' );
+			/**
+			 * Fires if the new avatar was successfully captured.
+			 *
+			 * @since 1.1.0 Used to inform the avatar was successfully cropped
+			 * @since 2.3.4 Add two new parameters to inform about the user id and
+			 *              about the way the avatar was set (eg: 'crop' or 'camera')
+			 *              Move the action at the right place, once the avatar is set
+			 *
+			 * @param string $item_id Inform about the user id the avatar was set for
+			 * @param string $type    Inform about the way the avatar was set ('camera')
+			 */
+			do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
 
 			wp_send_json_success( $return );
 		}
@@ -1245,7 +1245,18 @@ function bp_avatar_ajax_set() {
 		);
 
 		if ( 'user' === $avatar_data['object'] ) {
-			do_action( 'xprofile_screen_change_avatar' );
+			/**
+			 * Fires if the new avatar was successfully cropped.
+			 *
+			 * @since 1.1.0 Used to inform the avatar was successfully cropped
+			 * @since 2.3.4 Add two new parameters to inform about the user id and
+			 *              about the way the avatar was set (eg: 'crop' or 'camera')
+			 *              Move the action at the right place, once the avatar is set
+			 *
+			 * @param string $item_id Inform about the user id the avatar was set for
+			 * @param string $type Inform about the way the avatar was set ('crop')
+			 */
+			do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
 		}
 
 		wp_send_json_success( $return );
diff --git src/bp-xprofile/bp-xprofile-activity.php src/bp-xprofile/bp-xprofile-activity.php
index 5cc90f2..b27a0f4 100644
--- src/bp-xprofile/bp-xprofile-activity.php
+++ src/bp-xprofile/bp-xprofile-activity.php
@@ -202,27 +202,34 @@ function xprofile_register_activity_action( $key, $value ) {
 /**
  * Adds an activity stream item when a user has uploaded a new avatar.
  *
- * @since BuddyPress (1.0.0)
+ * @since 1.0.0
+ * @since 2.3.4 Add new parameter to get the user id the avatar was set for
  *
  * @package BuddyPress XProfile
  * @uses bp_activity_add() Adds an entry to the activity component tables for a
  *                         specific activity
+ *
+ * @param  int $user_id The user id the avatar was set for
  */
-function bp_xprofile_new_avatar_activity() {
+function bp_xprofile_new_avatar_activity( $user_id = 0 ) {
 
 	// Bail if activity component is not active
 	if ( ! bp_is_active( 'activity' ) ) {
 		return false;
 	}
 
+	if ( empty( $user_id ) ) {
+		$user_id = bp_displayed_user_id();
+	}
+
 	/**
 	 * Filters the user ID when a user has uploaded a new avatar.
 	 *
-	 * @since BuddyPress (1.5.0)
+	 * @since 1.5.0
 	 *
-	 * @param int $value ID of the displayed user.
+	 * @param int $user_id ID of the user the avatar was set for.
 	 */
-	$user_id = apply_filters( 'bp_xprofile_new_avatar_user_id', bp_displayed_user_id() );
+	$user_id = apply_filters( 'bp_xprofile_new_avatar_user_id', $user_id );
 
 	// Add the activity
 	bp_activity_add( array(
diff --git src/bp-xprofile/bp-xprofile-screens.php src/bp-xprofile/bp-xprofile-screens.php
index afb4604..a78c0e0 100644
--- src/bp-xprofile/bp-xprofile-screens.php
+++ src/bp-xprofile/bp-xprofile-screens.php
@@ -266,9 +266,14 @@ function xprofile_screen_change_avatar() {
 			/**
 			 * Fires right before the redirect, after processing a new avatar.
 			 *
-			 * @since BuddyPress (1.1.0)
+			 * @since 1.1.0
+			 * @since 2.3.4 Add two new parameters to inform about the user id and
+			 *              about the way the avatar was set (eg: 'crop' or 'camera')
+			 *
+			 * @param string $item_id Inform about the user id the avatar was set for
+			 * @param string $value Inform about the way the avatar was set ('crop')
 			 */
-			do_action( 'xprofile_avatar_uploaded' );
+			do_action( 'xprofile_avatar_uploaded', (int) $args['item_id'], 'crop' );
 			bp_core_add_message( __( 'Your new profile photo was uploaded successfully.', 'buddypress' ) );
 			bp_core_redirect( bp_displayed_user_domain() );
 		}
