Index: src/bp-core/bp-core-avatars.php
===================================================================
--- src/bp-core/bp-core-avatars.php	(revision 11266)
+++ src/bp-core/bp-core-avatars.php	(working copy)
@@ -1353,7 +1353,10 @@
 			 * @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'] );
+			do_action( 'xprofile_avatar_uploaded', $avatar_data );
+		} elseif ( 'group' === $avatar_data['object'] ) {
+			/** This action is documented in bp-groups/bp-groups-screens.php */
+			do_action( 'xgroup_avatar_uploaded', $avatar_data );
 		}
 
 		wp_send_json_success( $return );
Index: src/bp-groups/bp-groups-screens.php
===================================================================
--- src/bp-groups/bp-groups-screens.php	(revision 11266)
+++ src/bp-groups/bp-groups-screens.php	(working copy)
@@ -1059,12 +1059,22 @@
 			'crop_x'        => $_POST['x'],
 			'crop_y'        => $_POST['y'],
 			'crop_w'        => $_POST['w'],
-			'crop_h'        => $_POST['h']
+			'crop_h'        => $_POST['h'],
+			'type'			=> $_POST['type']
 		);
 
 		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'.
+             */
+            do_action( 'xgroup_avatar_uploaded', bp_get_current_group_id(), 'crop' );
 			bp_core_add_message( __( 'The new group profile photo was uploaded successfully.', 'buddypress' ) );
 		}
 	}
Index: src/bp-xprofile/bp-xprofile-activity.php
===================================================================
--- src/bp-xprofile/bp-xprofile-activity.php	(revision 11266)
+++ src/bp-xprofile/bp-xprofile-activity.php	(working copy)
@@ -206,8 +206,10 @@
  * @param int $user_id The user id the avatar was set for.
  * @return bool
  */
-function bp_xprofile_new_avatar_activity( $user_id = 0 ) {
+function bp_xprofile_new_avatar_activity( $avatar_data = array() ) {
 
+	$user_id = ( isset( $avatar_data['item_id'] ) &&  ! empty( $avatar_data['item_id'] ) ) ? (int) $avatar_data['item_id'] : 0;
+
 	// Bail if activity component is not active.
 	if ( ! bp_is_active( 'activity' ) ) {
 		return false;
