diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
index a65f82d..3d158da 100644
--- src/bp-groups/bp-groups-functions.php
+++ src/bp-groups/bp-groups-functions.php
@@ -440,7 +440,7 @@ function groups_leave_group( $group_id, $user_id = 0 ) {
 		}
 	}
 
-	if ( ! groups_remove_member( $user_id, $group_id ) ) {
+	if ( ! groups_remove_member( $user_id, $group_id, true ) ) {
 		return false;
 	}
 
@@ -1427,12 +1427,13 @@ function groups_unban_member( $user_id, $group_id ) {
 /**
  * Remove a member from a group.
  *
- * @param int $user_id  ID of the user.
- * @param int $group_id ID of the group.
+ * @param int  $user_id  ID of the user.
+ * @param int  $group_id ID of the group.
+ * @param bool $_leave_group FOR INTERNAL USE ONLY! Is the user leaving a group?
  *
  * @return bool True on success, false on failure.
  */
-function groups_remove_member( $user_id, $group_id ) {
+function groups_remove_member( $user_id, $group_id, $_leave_group = false ) {
 
 	if ( ! bp_is_item_admin() ) {
  		// bp_is_item_admin may not be set if this function is called outside of group context.
@@ -1447,15 +1448,20 @@ function groups_remove_member( $user_id, $group_id ) {
 
 	$member = new BP_Groups_Member( $user_id, $group_id );
 
-	/**
-	 * Fires before the removal of a member from a group.
-	 *
-	 * @since BuddyPress (1.2.6)
-	 *
-	 * @param int $group_id ID of the group being removed from.
-	 * @param int $user_id  ID of the user being removed.
-	 */
-	do_action( 'groups_remove_member', $group_id, $user_id );
+	if ( false === $_leave_group ) {
+		/**
+		 * Fires before the removal of a member from a group. This action will not be
+		 * fired if we're calling `groups_remove_member()` via `groups_leave_group()`.
+		 *
+		 * @since BuddyPress (1.2.6)
+		 *
+		 * @see https://buddypress.trac.wordpress.org/ticket/6597
+		 *
+		 * @param int $group_id ID of the group being removed from.
+		 * @param int $user_id  ID of the user being removed.
+		 */
+		do_action( 'groups_remove_member', $group_id, $user_id );
+	}
 
 	return $member->remove();
 }
