diff --git src/bp-core/bp-core-avatars.php src/bp-core/bp-core-avatars.php
index c606a34..ca36325 100644
--- src/bp-core/bp-core-avatars.php
+++ src/bp-core/bp-core-avatars.php
@@ -1354,6 +1354,9 @@ function bp_avatar_ajax_set() {
 			 * @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'] );
+		} 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'] );
 		}
 
 		wp_send_json_success( $return );
diff --git src/bp-groups/bp-groups-screens.php src/bp-groups/bp-groups-screens.php
index 46b654f..0ec6abc 100644
--- src/bp-groups/bp-groups-screens.php
+++ src/bp-groups/bp-groups-screens.php
@@ -1065,6 +1065,16 @@ function groups_screen_group_admin_avatar() {
 		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( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop' );
+
 			bp_core_add_message( __( 'The new group profile photo was uploaded successfully.', 'buddypress' ) );
 		}
 	}
