Index: bp-core/bp-core-avatars.php
===================================================================
--- bp-core/bp-core-avatars.php	(revision 11270)
+++ bp-core/bp-core-avatars.php	(working copy)
@@ -1352,8 +1352,12 @@
 			 *
 			 * @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')
+			 * @param array Array of all info related to avatar
 			 */
-			do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'] );
+			do_action( 'xprofile_avatar_uploaded', (int) $avatar_data['item_id'], $avatar_data['type'], $r );
+		} elseif ( 'group' === $avatar_data['object'] ) {
+			/** This action is documented in bp-groups/bp-groups-screens.php */
+			do_action( 'groups_avatar_uploaded', (int) $avatar_data['item_id'], $atavar_data['type'], $r );
 		}
 
 		wp_send_json_success( $return );
Index: bp-groups/bp-groups-screens.php
===================================================================
--- bp-groups/bp-groups-screens.php	(revision 11270)
+++ bp-groups/bp-groups-screens.php	(working copy)
@@ -1065,6 +1065,16 @@
 		if ( !bp_core_avatar_handle_crop( $args ) ) {
 			bp_core_add_message( __( 'There was a problem cropping the group profile photo.', 'buddypress' ), 'error' );
 		} else {
+			/**
+			 * Fires after a group avatar is uploaded.
+			 *
+			 * @since 2.8.0
+			 *
+			 * @param int $group_id ID of the group.
+			 * @param string $type Avatar type. 'crop' or 'full'. 
+			 * @param array Array of all info related to avatar
+			 */
+			do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args ); 
 			bp_core_add_message( __( 'The new group profile photo was uploaded successfully.', 'buddypress' ) );
 		}
 	}
