diff --git src/bp-core/admin/bp-core-admin-optouts.php src/bp-core/admin/bp-core-admin-optouts.php
index d47cf79de..95d789a08 100644
--- src/bp-core/admin/bp-core-admin-optouts.php
+++ src/bp-core/admin/bp-core-admin-optouts.php
@@ -174,26 +174,30 @@ function bp_core_get_optouts_notice() {
 		);
 
 		if ( ! empty( $_REQUEST['deleted'] ) ) {
+			$deleted            = absint( $_REQUEST['deleted'] );
 			$notice['message'] .= sprintf(
-				/* translators: %s: number of deleted optouts */
-				_nx( '%s opt-out successfully deleted!', '%s opt-outs successfully deleted!',
-				 absint( $_REQUEST['deleted'] ),
-				 'nonmembers opt-out deleted',
-				 'buddypress'
+				_nx(
+					/* translators: %s: number of deleted optouts */
+					'%s opt-out successfully deleted!', '%s opt-outs successfully deleted!',
+					$deleted,
+					'nonmembers opt-out deleted',
+					'buddypress'
 				),
 				number_format_i18n( absint( $_REQUEST['deleted'] ) )
 			);
 		}
 
 		if ( ! empty( $_REQUEST['notdeleted'] ) ) {
+			$notdeleted         = absint( $_REQUEST['notdeleted'] );
 			$notice['message'] .= sprintf(
-				/* translators: %s: number of optouts that failed to be deleted */
-				_nx( '%s opt-out was not deleted.', '%s opt-outs were not deleted.',
-				 absint( $_REQUEST['notdeleted'] ),
-				 'nonmembers opt-out not deleted',
-				 'buddypress'
+				_nx(
+					/* translators: %s: number of optouts that failed to be deleted */
+					'%s opt-out was not deleted.', '%s opt-outs were not deleted.',
+					$notdeleted,
+					'nonmembers opt-out not deleted',
+					'buddypress'
 				),
-				number_format_i18n( absint( $_REQUEST['notdeleted'] ) )
+				number_format_i18n( $notdeleted )
 			);
 
 			if ( empty( $_REQUEST['deleted'] ) ) {
diff --git src/bp-core/admin/css/common-rtl.css src/bp-core/admin/css/common-rtl.css
index d460dc8d2..1bbd8508a 100644
--- src/bp-core/admin/css/common-rtl.css
+++ src/bp-core/admin/css/common-rtl.css
@@ -317,6 +317,11 @@ body.tools-php .bp-tools dd {
 	margin: 0;
 }
 
+body.tools_page_bp-members-invitations .nav-tab-wrapper,
+body.tools_page_bp-optouts .nav-tab-wrapper {
+	margin-bottom: 1em;
+}
+
 /*
  * 2.4 Tooltips
  */
diff --git src/bp-core/admin/css/common.css src/bp-core/admin/css/common.css
index 0272626bb..d2730f9a9 100644
--- src/bp-core/admin/css/common.css
+++ src/bp-core/admin/css/common.css
@@ -317,6 +317,11 @@ body.tools-php .bp-tools dd {
 	margin: 0;
 }
 
+body.tools_page_bp-members-invitations .nav-tab-wrapper,
+body.tools_page_bp-optouts .nav-tab-wrapper {
+	margin-bottom: 1em;
+}
+
 /*
  * 2.4 Tooltips
  */
diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index 854a1982d..9cdb33493 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -4113,7 +4113,7 @@ function bp_email_unsubscribe_handler() {
 		$redirect_to = home_url();
 
 		$result_msg = $emails[ $raw_email_type ]['unsubscribe']['message'];
-		$unsub_msg  = __( 'You have been unsubscribed.' );
+		$unsub_msg  = __( 'You have been unsubscribed.', 'buddypress' );
 	// This is an unsubscribe request from a current member.
 	} else {
 		if ( bp_is_active( 'settings' ) ) {
diff --git src/bp-members/bp-members-activity.php src/bp-members/bp-members-activity.php
index c905ff79c..a110cd6e7 100644
--- src/bp-members/bp-members-activity.php
+++ src/bp-members/bp-members-activity.php
@@ -58,15 +58,18 @@ add_action( 'bp_register_activity_actions', 'bp_members_register_activity_action
 function bp_members_format_activity_action_new_member( $action, $activity ) {
 	$userlink         = bp_core_get_userlink( $activity->user_id );
 	$inviter_userlink = false;
-	if ( $invite_id = bp_get_user_meta( $activity->user_id, 'accepted_members_invitation', true ) ) {
-		$invite           = new BP_Invitation( (int) $invite_id );
+	$invite_id        = bp_get_user_meta( $activity->user_id, 'accepted_members_invitation', true );
+
+	if ( $invite_id ) {
+		$invite = new BP_Invitation( (int) $invite_id );
+
 		if ( $invite->inviter_id ) {
 			$inviter_userlink = bp_core_get_userlink( $invite->inviter_id );
 		}
 	}
 
 	if ( $inviter_userlink ) {
-		$action           = sprintf(
+		$action = sprintf(
 			/* translators: 1: new user link. 2: inviter user link. */
 			esc_html__( '%1$s accepted an invitation from %2$s and became a registered member', 'buddypress' ),
 			$userlink,
@@ -85,12 +88,13 @@ function bp_members_format_activity_action_new_member( $action, $activity ) {
 	/**
 	 * Filters the formatted 'new member' activity actions.
 	 *
-	 * @since 2.2.0
+	 * @since 8.0.0
 	 *
-	 * @param string $action   Static activity action.
-	 * @param object $activity Activity object.
+	 * @param string $action    Static activity action.
+	 * @param object $activity  Activity object.
+	 * @param int    $invite_id The ID of the invite.
 	 */
-	return apply_filters( 'bp_members_format_activity_action_new_member', $action, $activity );
+	return apply_filters( 'bp_members_format_activity_action_new_member', $action, $activity, $invite_id );
 }
 
 /**
diff --git src/bp-members/bp-members-adminbar.php src/bp-members/bp-members-adminbar.php
index f9b45ad38..282be654c 100644
--- src/bp-members/bp-members-adminbar.php
+++ src/bp-members/bp-members-adminbar.php
@@ -23,8 +23,9 @@ function bp_members_admin_bar_my_account_menu() {
 	global $wp_admin_bar;
 
 	// Bail if this is an ajax request.
-	if ( defined( 'DOING_AJAX' ) )
+	if ( wp_doing_ajax() ) {
 		return;
+	}
 
 	// Logged in user.
 	if ( is_user_logged_in() ) {
@@ -188,7 +189,7 @@ function bp_members_admin_bar_add_invitations_menu() {
 	global $wp_admin_bar;
 
 	// Bail if this is an ajax request.
-	if ( defined( 'DOING_AJAX' ) ) {
+	if ( wp_doing_ajax() ) {
 		return;
 	}
 
diff --git src/bp-members/bp-members-filters.php src/bp-members/bp-members-filters.php
index 38f3433e6..e6a234b58 100644
--- src/bp-members/bp-members-filters.php
+++ src/bp-members/bp-members-filters.php
@@ -141,18 +141,20 @@ add_filter( 'edit_profile_url', 'bp_members_edit_profile_url', 10, 3 );
  *
  * @return bool
  */
-function bp_members_user_can_filter( $retval, $user_id, $capability, $site_id, $args ) {
+function bp_members_user_can_filter( $retval, $user_id, $capability, $site_id, $args = array() ) {
 
 	switch ( $capability ) {
 		case 'bp_members_manage_membership_requests':
 			$retval = bp_user_can( $user_id, 'bp_moderate' );
 			break;
+
 		case 'bp_members_send_invitation':
 			// @todo Add restrictions?
 			if ( bp_get_members_invitations_allowed() ) {
 				$retval = true;
 			}
 			break;
+
 		case 'bp_members_receive_invitation':
 			if ( bp_get_members_invitations_allowed() ) {
 				$retval = true;
@@ -160,14 +162,12 @@ function bp_members_user_can_filter( $retval, $user_id, $capability, $site_id, $
 				if ( empty( $args['invitee_email'] ) || false !== get_user_by( 'email', $args['invitee_email'] ) ) {
 					$retval = false;
 				}
-			// @TODO: The invited user must not have opted out from receiving invitations.
+				// @TODO: The invited user must not have opted out from receiving invitations.
 			}
-
 			break;
 	}
 
 	return $retval;
-
 }
 add_filter( 'bp_user_can', 'bp_members_user_can_filter', 10, 5 );
 
diff --git src/bp-members/bp-members-template.php src/bp-members/bp-members-template.php
index 117f6fcb6..b7f9c9afb 100644
--- src/bp-members/bp-members-template.php
+++ src/bp-members/bp-members-template.php
@@ -3056,7 +3056,7 @@ function bp_members_invitations_pagination_count() {
 		/**
 		 * Filters the pagination count for the current network invitation loop.
 		 *
-		 * @since 1.9.0
+		 * @since 8.0.0
 		 *
 		 * @param string $pag HTML for the pagination count.
 		 */
@@ -3203,12 +3203,11 @@ function bp_the_members_invitation_action_links( $args = '' ) {
 		$retval = $r['before'] . implode( $r['sep'], $r['links'] ) . $r['after'];
 
 		/**
-		 * Filters the action links for the current notification.
+		 * Filters the action links for the current invitation.
 		 *
-		 * @since 1.9.0
-		 * @since 2.6.0 Added the `$r` parameter.
+		 * @since 8.0.0
 		 *
-		 * @param string $retval HTML links for actions to take on single notifications.
+		 * @param string $retval HTML links for actions to take on single invitation.
 		 * @param array  $r      Array of parsed arguments.
 		 */
 		return apply_filters( 'bp_get_the_members_invitation_action_links', $retval, $r );
@@ -3227,7 +3226,7 @@ function bp_the_members_invitations_resend_link( $user_id = 0 ) {
 	/**
 	 * Return the resend link for the current notification.
 	 *
-	 * @since 78.0.0
+	 * @since 8.0.0
 	 *
 	 * @param int $user_id The user ID.
 	 * @return string
@@ -3334,7 +3333,11 @@ function bp_the_members_invitations_delete_link( $user_id = 0 ) {
 			$message = __( 'Cancel', 'buddypress' );
 		}
 
-		$retval = sprintf( '<a href="%1$s" class="delete secondary confirm bp-tooltip">%2$s</a>', esc_url( bp_get_the_members_invitations_delete_url( $user_id ) ), $message );
+		$retval = sprintf(
+			'<a href="%1$s" class="delete secondary confirm bp-tooltip">%2$s</a>',
+			esc_url( bp_get_the_members_invitations_delete_url( $user_id ) ),
+			esc_html( $message )
+		);
 
 		/**
 		 * Filters the delete link for the current invitation.
@@ -3451,7 +3454,8 @@ function bp_members_invitations_send_invites_permalink( $user_id = 0 ) {
 	 *
 	 * @since 8.0.0
 	 *
-	 * @return string Read notifications permalink.
+	 * @param int $user_id The user ID.
+	 * @return string      The send invitations permalink.
 	 */
 	function bp_get_members_invitations_send_invites_permalink( $user_id = 0 ) {
 		if ( 0 === $user_id ) {
@@ -3464,7 +3468,7 @@ function bp_members_invitations_send_invites_permalink( $user_id = 0 ) {
 		$retval = trailingslashit( $domain . bp_get_members_invitations_slug() . '/send-invites' );
 
 		/**
-		 * Filters the read notifications permalink.
+		 * Filters the send invitations permalink.
 		 *
 		 * @since 8.0.0
 		 *
diff --git src/bp-members/classes/class-bp-members-admin.php src/bp-members/classes/class-bp-members-admin.php
index 3294a7765..8c1d68b46 100644
--- src/bp-members/classes/class-bp-members-admin.php
+++ src/bp-members/classes/class-bp-members-admin.php
@@ -224,7 +224,7 @@ class BP_Members_Admin {
 
 			// Member invitations are enabled.
 			if ( bp_is_network_activated() ) {
-				add_action( 'update_site_option_bp-enable-members-invitations',  array( $this, 'multisite_registration_on' ),   10, 2 );
+				add_action( 'update_site_option_bp-enable-members-invitations', array( $this, 'multisite_registration_on' ), 10, 2 );
 			} else {
 				add_action( 'update_option_bp-enable-members-invitations', array( $this, 'single_site_registration_on' ), 10, 2 );
 			}
@@ -557,6 +557,9 @@ class BP_Members_Admin {
 		foreach ( $page_head as $head ) {
 			add_action( "admin_head-{$head}", array( $this, 'profile_admin_head' ) );
 		}
+
+		// Highlight the BuddyPress tools submenu when managing invitations.
+		add_action( "admin_head-{$this->members_invites_page}", 'bp_core_modify_admin_menu_highlight' );
 	}
 
 	/**
@@ -1940,14 +1943,16 @@ class BP_Members_Admin {
 					}
 
 					if ( ! empty( $_REQUEST['notdeleted'] ) ) {
+						$notdeleted         = absint( $_REQUEST['notdeleted'] );
 						$notice['message'] .= sprintf(
-							/* translators: %s: number of deleted signups not deleted */
-							_nx( '%s sign-up was not deleted.', '%s sign-ups were not deleted.',
-							 absint( $_REQUEST['notdeleted'] ),
-							 'signup notdeleted',
-							 'buddypress'
+							_nx(
+								/* translators: %s: number of deleted signups not deleted */
+								'%s sign-up was not deleted.', '%s sign-ups were not deleted.',
+								$notdeleted,
+								'signup notdeleted',
+								'buddypress'
 							),
-							number_format_i18n( absint( $_REQUEST['notdeleted'] ) )
+							number_format_i18n( $notdeleted )
 						);
 
 						if ( empty( $_REQUEST['deleted'] ) ) {
@@ -2788,26 +2793,30 @@ class BP_Members_Admin {
 					);
 
 					if ( ! empty( $_REQUEST['resent'] ) ) {
+						$resent             = absint( $_REQUEST['resent'] );
 						$notice['message'] .= sprintf(
-							/* translators: %s: number of invitation emails sent */
-							_nx( '%s invtitation email successfully sent! ', '%s invitation emails successfully sent! ',
-							 absint( $_REQUEST['resent'] ),
-							 'members invitation resent',
-							 'buddypress'
+							_nx(
+								/* translators: %s: number of invitation emails sent */
+								'%s invtitation email successfully sent! ', '%s invitation emails successfully sent! ',
+								$resent,
+								'members invitation resent',
+								'buddypress'
 							),
-							number_format_i18n( absint( $_REQUEST['resent'] ) )
+							number_format_i18n( $resent )
 						);
 					}
 
 					if ( ! empty( $_REQUEST['notsent'] ) ) {
+						$notsent            = absint( $_REQUEST['notsent'] );
 						$notice['message'] .= sprintf(
-							/* translators: %s: number of unsent invitation emails */
-							_nx( '%s invitation email was not sent.', '%s invitation emails were not sent.',
-							 absint( $_REQUEST['notsent'] ),
-							 'members invitation notsent',
-							 'buddypress'
+							_nx(
+								/* translators: %s: number of unsent invitation emails */
+								'%s invitation email was not sent.', '%s invitation emails were not sent.',
+								$notsent,
+								'members invitation notsent',
+								'buddypress'
 							),
-							number_format_i18n( absint( $_REQUEST['notsent'] ) )
+							number_format_i18n( $notsent )
 						);
 
 						if ( empty( $_REQUEST['resent'] ) ) {
@@ -2824,26 +2833,30 @@ class BP_Members_Admin {
 					);
 
 					if ( ! empty( $_REQUEST['deleted'] ) ) {
+						$deleted            = absint( $_REQUEST['deleted'] );
 						$notice['message'] .= sprintf(
-							/* translators: %s: number of deleted invitations */
-							_nx( '%s invitation successfully deleted!', '%s invitations successfully deleted!',
-							 absint( $_REQUEST['deleted'] ),
-							 'members invitation deleted',
-							 'buddypress'
+							_nx(
+								/* translators: %s: number of deleted invitations */
+								'%s invitation successfully deleted!', '%s invitations successfully deleted!',
+								$deleted,
+								'members invitation deleted',
+								'buddypress'
 							),
-							number_format_i18n( absint( $_REQUEST['deleted'] ) )
+							number_format_i18n( $deleted )
 						);
 					}
 
 					if ( ! empty( $_REQUEST['notdeleted'] ) ) {
+						$notdeleted         = absint( $_REQUEST['notdeleted'] );
 						$notice['message'] .= sprintf(
-							/* translators: %s: number of invitations that failed to be deleted */
-							_nx( '%s invitation was not deleted.', '%s invitations were not deleted.',
-							 absint( $_REQUEST['notdeleted'] ),
-							 'members invitation notdeleted',
-							 'buddypress'
+							_nx(
+								/* translators: %s: number of invitations that failed to be deleted */
+								'%s invitation was not deleted.', '%s invitations were not deleted.',
+								$notdeleted,
+								'members invitation notdeleted',
+								'buddypress'
 							),
-							number_format_i18n( absint( $_REQUEST['notdeleted'] ) )
+							number_format_i18n( $notdeleted )
 						);
 
 						if ( empty( $_REQUEST['deleted'] ) ) {
@@ -3011,10 +3024,9 @@ class BP_Members_Admin {
 	/**
 	 * This is the confirmation screen for actions.
 	 *
-	 * @since 2.0.0
+	 * @since 8.0.0
 	 *
 	 * @param string $action Delete or resend invitation.
-	 *
 	 * @return null|false
 	 */
 	public function invitations_admin_manage( $action = '' ) {
@@ -3087,9 +3099,9 @@ class BP_Members_Admin {
 		);
 
 		if ( is_network_admin() ) {
-			$form_url = network_admin_url( 'admin.php' );
+			$base_url = network_admin_url( 'admin.php' );
 		} else {
-			$form_url = bp_get_admin_url( 'tools.php' );
+			$base_url = bp_get_admin_url( 'tools.php' );
 		}
 
 		$cancel_url = add_query_arg( $url_args, $base_url );
diff --git src/bp-members/classes/class-bp-members-component.php src/bp-members/classes/class-bp-members-component.php
index ec10398ae..2037224f3 100644
--- src/bp-members/classes/class-bp-members-component.php
+++ src/bp-members/classes/class-bp-members-component.php
@@ -624,8 +624,6 @@ class BP_Members_Component extends BP_Component {
 			} else {
 				add_filter( 'bp_xprofile_admin_nav', array( $this, 'setup_xprofile_admin_nav' ), 2 );
 			}
-
-			// $wp_admin_nav = array_merge( $wp_admin_nav, $this->get_members_invitations_admin_navs() );
 		}
 
 		parent::setup_admin_bar( $wp_admin_nav );
diff --git src/bp-members/classes/class-bp-members-invitation-manager.php src/bp-members/classes/class-bp-members-invitation-manager.php
index 139caf279..1ba89d286 100644
--- src/bp-members/classes/class-bp-members-invitation-manager.php
+++ src/bp-members/classes/class-bp-members-invitation-manager.php
@@ -58,7 +58,8 @@ class BP_Members_Invitation_Manager extends BP_Invitation_Manager {
 					array(
 						'inv' => $invitation->id,
 						'ih'  => bp_members_invitations_get_hash( $invitation ),
-					), bp_get_signup_page()
+					),
+					bp_get_signup_page()
 				)
 			);
 			$unsubscribe_args = array(
@@ -69,12 +70,12 @@ class BP_Members_Invitation_Manager extends BP_Invitation_Manager {
 
 			$args = array(
 				'tokens' => array(
-					'inviter.name'        => bp_core_get_userlink( $invitation->inviter_id, true, false, true ),
-					'inviter.url'         => bp_core_get_user_domain( $invitation->inviter_id ),
-					'inviter.id'          => $invitation->inviter_id,
-					'invite.accept_url'   => esc_url( $invite_url ),
-					'usermessage'         => $invitation->content,
-					'unsubscribe'         => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
+					'inviter.name'      => bp_core_get_userlink( $invitation->inviter_id, true, false, true ),
+					'inviter.url'       => bp_core_get_user_domain( $invitation->inviter_id ),
+					'inviter.id'        => $invitation->inviter_id,
+					'invite.accept_url' => esc_url( $invite_url ),
+					'usermessage'       => wp_kses( $invitation->content, array() ),
+					'unsubscribe'       => esc_url( bp_email_get_unsubscribe_link( $unsubscribe_args ) ),
 				),
 			);
 
@@ -92,7 +93,7 @@ class BP_Members_Invitation_Manager extends BP_Invitation_Manager {
 	 * @param array  $r    Parameters that describe the invitation being accepted.
 	 * @return bool True on success, false on failure.
 	 */
-	public function run_acceptance_action( $type = 'invite', $r  ) {
+	public function run_acceptance_action( $type = 'invite', $r = array() ) {
 		// If the user is already a member (because BP at one point allowed two invitations to
 		// slip through), return early.
 
diff --git src/bp-members/classes/class-bp-members-invitations-list-table.php src/bp-members/classes/class-bp-members-invitations-list-table.php
index 90f35d921..db5468ee4 100644
--- src/bp-members/classes/class-bp-members-invitations-list-table.php
+++ src/bp-members/classes/class-bp-members-invitations-list-table.php
@@ -11,7 +11,7 @@
 defined( 'ABSPATH' ) || exit;
 
 /**
- * List table class for signups admin page.
+ * List table class for Invitations admin page.
  *
  * @since 8.0.0
  */
@@ -28,10 +28,9 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 	public $active_filters = array();
 
 	/**
-	 * Signup counts.
+	 * Invitation counts.
 	 *
 	 * @since 8.0.0
-	 *
 	 * @var int
 	 */
 	public $total_items = 0;
@@ -109,18 +108,23 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 	 * @since 8.0.0
 	 */
 	public function views() {
+		$tools_url = bp_get_admin_url( 'tools.php' );
+
+		if ( is_network_admin() ) {
+			$tools_url = network_admin_url( 'admin.php' );
+		}
+
 		$url_base = add_query_arg(
 			array(
 				'page' => 'bp-members-invitations',
 			),
-			bp_get_admin_url( 'users.php' )
+			$tools_url
 		);
-
 		?>
 
 		<h2 class="screen-reader-text"><?php
 			/* translators: accessibility text */
-			_e( 'Filter invitations list', 'buddypress' );
+			esc_html_e( 'Filter invitations list', 'buddypress' );
 		?></h2>
 		<ul class="subsubsub">
 			<li class="all">
@@ -146,7 +150,7 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 			<li class="sent">
 				<a href="<?php echo esc_url( add_query_arg( 'sent', 'sent', $url_base ) ); ?>" class="<?php if ( in_array( 'sent', $this->active_filters, true ) ) echo 'current'; ?>">
 					<?php esc_html_e( 'Sent', 'buddypress' ); ?>
-				</a> |
+				</a>
 			</li>
 
 			<?php
@@ -196,10 +200,10 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 		 */
 		return apply_filters( 'bp_members_invitations_list_columns', array(
 			'cb'                       => '<input type="checkbox" />',
-			'invitee_email'            => __( 'Invitee',    'buddypress' ),
-			'username'                 => __( 'Inviter',        'buddypress' ),
-			'inviter_registered_date'  => __( 'Inviter Registered',  'buddypress' ),
-			'invitation_date_modified' => __( 'Date Modified',   'buddypress' ),
+			'invitee_email'            => __( 'Invitee', 'buddypress' ),
+			'username'                 => __( 'Inviter', 'buddypress' ),
+			'inviter_registered_date'  => __( 'Inviter Registered', 'buddypress' ),
+			'invitation_date_modified' => __( 'Date Modified', 'buddypress' ),
 			'invitation_sent'          => __( 'Email Sent', 'buddypress' ),
 			'invitation_accepted'      => __( 'Accepted', 'buddypress' )
 		) );
@@ -232,7 +236,7 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 	public function no_items() {
 
 		if ( bp_get_members_invitations_allowed() ) {
-			esc_html_e( 'No pending invitations found.', 'buddypress' );
+			esc_html_e( 'No invitations found.', 'buddypress' );
 		} else {
 			$link = sprintf( '<a href="%1$s">%2$s</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-settings' ), 'admin.php' ) ) ), esc_html__( 'Edit settings', 'buddypress' ) );
 
@@ -317,6 +321,11 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 		echo esc_html( $invite->invitee_email );
 
 		$actions = array();
+		$tools_url = bp_get_admin_url( 'tools.php' );
+
+		if ( is_network_admin() ) {
+			$tools_url = network_admin_url( 'admin.php' );
+		}
 
 		// Resend action only if pending
 		if ( ! $invite->accepted ) {
@@ -327,14 +336,16 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 					'invite_id' => $invite->id,
 					'action'    => 'resend',
 				),
-				bp_get_admin_url( 'users.php' )
+				$tools_url
 			);
+
 			if ( ! $invite->invite_sent ) {
 				$resend_label = __( 'Send', 'buddypress' );
 			} else {
 				$resend_label = __( 'Resend', 'buddypress' );
 			}
-			$actions['resend'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $email_link ), $resend_label );
+
+			$actions['resend'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $email_link ), esc_html( $resend_label ) );
 		}
 
 		// Delete link. Could be cleanup or revoking the invitation.
@@ -344,13 +355,14 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 				'invite_id' => $invite->id,
 				'action'    => 'delete',
 			),
-			bp_get_admin_url( 'users.php' )
+			$tools_url
 		);
+
 		// Two cases: unsent and accepted (cleanup), and pending (cancels invite).
 		if ( ! $invite->invite_sent || $invite->accepted ) {
-			$actions['delete'] = sprintf( '<a href="%1$s" class="delete">%2$s</a>', esc_url( $delete_link ), __( 'Delete', 'buddypress' ) );
+			$actions['delete'] = sprintf( '<a href="%1$s" class="delete">%2$s</a>', esc_url( $delete_link ), esc_html__( 'Delete', 'buddypress' ) );
 		} else {
-			$actions['delete'] = sprintf( '<a href="%1$s" class="delete">%2$s</a>', esc_url( $delete_link ), __( 'Cancel', 'buddypress' ) );
+			$actions['delete'] = sprintf( '<a href="%1$s" class="delete">%2$s</a>', esc_url( $delete_link ), esc_html__( 'Cancel', 'buddypress' ) );
 		}
 
 		/**
@@ -385,13 +397,15 @@ class BP_Members_Invitations_List_Table extends WP_Users_List_Table {
 	 * @param BP_Invitation $invite BP_Invitation object.
 	 */
 	public function column_username( $invite = null ) {
-		$avatar = get_avatar( $invite->inviter_id, 32 );
+		$avatar  = get_avatar( $invite->inviter_id, 32 );
 		$inviter = get_user_by( 'id', $invite->inviter_id );
 		if ( ! $inviter ) {
 			return;
 		}
+
 		$user_link = bp_core_get_user_domain( $invite->inviter_id );
-		echo $avatar . sprintf( '<strong><a href="%1$s" class="edit">%2$s</a></strong><br/>', esc_url( $user_link ), $inviter->user_login );
+
+		printf( '%1$s <strong><a href="%2$s" class="edit">%3$s</a></strong><br/>', $avatar, esc_url( $user_link ), esc_html( $inviter->user_login ) );
 	}
 
 	/**
diff --git src/bp-members/classes/class-bp-members-invitations-template.php src/bp-members/classes/class-bp-members-invitations-template.php
index 1c5da5c42..7f1bd91af 100644
--- src/bp-members/classes/class-bp-members-invitations-template.php
+++ src/bp-members/classes/class-bp-members-invitations-template.php
@@ -142,7 +142,7 @@ class BP_Members_Invitations_Template {
 	/**
 	 * Array of variables used in this invitation query.
 	 *
-	 * @since 2.2.2
+	 * @since 8.0.0
 	 * @var array
 	 */
 	public $query_vars;
@@ -310,7 +310,7 @@ class BP_Members_Invitations_Template {
 			 *
 			 * @since 8.0.0
 			 */
-			do_action( 'members_invitations_loop_end');
+			do_action( 'members_invitations_loop_end' );
 
 			$this->rewind_invitations();
 		}
@@ -331,8 +331,8 @@ class BP_Members_Invitations_Template {
 	 * @see bp_the_invitation()
 	 */
 	public function the_invitation() {
-		$this->in_the_loop  = true;
-		$this->invitation = $this->next_invitation();
+		$this->in_the_loop = true;
+		$this->invitation  = $this->next_invitation();
 
 		// Loop has just started.
 		if ( 0 === $this->current_invitation ) {
diff --git src/bp-members/screens/list-invites.php src/bp-members/screens/list-invites.php
index 8242dd279..600cee733 100644
--- src/bp-members/screens/list-invites.php
+++ src/bp-members/screens/list-invites.php
@@ -46,9 +46,9 @@ function bp_members_invitations_action_handling() {
 	}
 
 	// Get the action.
-	$action = ! empty( $_GET['action']          ) ? $_GET['action']          : '';
-	$nonce  = ! empty( $_GET['_wpnonce']        ) ? $_GET['_wpnonce']        : '';
-	$id     = ! empty( $_GET['invitation_id']   ) ? $_GET['invitation_id']   : '';
+	$action = ! empty( $_GET['action']        ) ? $_GET['action']        : '';
+	$nonce  = ! empty( $_GET['_wpnonce']      ) ? $_GET['_wpnonce']      : '';
+	$id     = ! empty( $_GET['invitation_id'] ) ? $_GET['invitation_id'] : '';
 
 	// Bail if no action or no ID.
 	if ( empty( $action ) || empty( $id ) ) {
@@ -58,14 +58,14 @@ function bp_members_invitations_action_handling() {
 	if ( 'cancel' === $action ) {
 		// Check the nonce and delete the invitation.
 		if ( bp_verify_nonce_request( 'bp_members_invitations_cancel_' . $id ) && bp_members_invitations_delete_by_id( $id ) ) {
-			bp_core_add_message( __( 'Invitation successfully canceled.', 'buddypress' )          );
+			bp_core_add_message( __( 'Invitation successfully canceled.', 'buddypress' ) );
 		} else {
 			bp_core_add_message( __( 'There was a problem canceling that invitation.', 'buddypress' ), 'error' );
 		}
 	} else if ( 'resend' === $action ) {
 		// Check the nonce and resend the invitation.
 		if ( bp_verify_nonce_request( 'bp_network_invitation_resend_' . $id ) && bp_members_invitation_resend_by_id( $id ) ) {
-			bp_core_add_message( __( 'Invitation successfully resent.', 'buddypress' )          );
+			bp_core_add_message( __( 'Invitation successfully resent.', 'buddypress' ) );
 		} else {
 			bp_core_add_message( __( 'There was a problem resending that invitation.', 'buddypress' ), 'error' );
 		}
diff --git src/bp-templates/bp-nouveau/buddypress/members/single/invitations/invitations-loop.php src/bp-templates/bp-nouveau/buddypress/members/single/invitations/invitations-loop.php
index 48576e8cf..f4aa643ee 100644
--- src/bp-templates/bp-nouveau/buddypress/members/single/invitations/invitations-loop.php
+++ src/bp-templates/bp-nouveau/buddypress/members/single/invitations/invitations-loop.php
@@ -6,15 +6,18 @@
  * @version 8.0.0
  */
 ?>
-<form action="" method="post" id="invitations-bulk-management">
+<form action="" method="post" id="invitations-bulk-management" class="standard-form">
 	<table class="invitations">
 		<thead>
 			<tr>
-				<th class="icon"></th>
-				<th class="bulk-select-all"><input id="select-all-invitations" type="checkbox"><label class="bp-screen-reader-text" for="select-all-invitations"><?php
-					/* translators: accessibility text */
-					esc_html_e( 'Select all', 'buddypress' );
-				?></label></th>
+				<th class="bulk-select-all"><input id="select-all-invitations" type="checkbox">
+					<label class="bp-screen-reader-text" for="select-all-invitations">
+						<?php
+						/* translators: accessibility text */
+						esc_html_e( 'Select all', 'buddypress' );
+						?>
+					</label>
+				</th>
 				<th class="title"><?php esc_html_e( 'Invitee', 'buddypress' ); ?></th>
 				<th class="content"><?php esc_html_e( 'Message', 'buddypress' ); ?></th>
 				<th class="sent"><?php esc_html_e( 'Sent', 'buddypress' ); ?></th>
@@ -29,7 +32,6 @@
 			<?php while ( bp_the_members_invitations() ) : bp_the_members_invitation(); ?>
 
 				<tr>
-					<td></td>
 					<td class="bulk-select-check">
 						<label for="<?php bp_the_members_invitation_property( 'id', 'attribute' ); ?>">
 							<input id="<?php bp_the_members_invitation_property( 'id', 'attribute' ); ?>" type="checkbox" name="network_invitations[]" value="<?php bp_the_members_invitation_property( 'id', 'attribute' ); ?>" class="invitation-check">
@@ -55,7 +57,7 @@
 	</table>
 
 	<div class="invitations-options-nav">
-		<?php // @TODO //bp_invitations_bulk_management_dropdown(); ?>
+		<?php bp_nouveau_invitations_bulk_management_dropdown(); ?>
 	</div><!-- .invitations-options-nav -->
 
 	<?php wp_nonce_field( 'invitations_bulk_nonce', 'invitations_bulk_nonce' ); ?>
diff --git src/bp-templates/bp-nouveau/buddypress/members/single/invitations/list-invites.php src/bp-templates/bp-nouveau/buddypress/members/single/invitations/list-invites.php
index 92d92879f..a83054098 100644
--- src/bp-templates/bp-nouveau/buddypress/members/single/invitations/list-invites.php
+++ src/bp-templates/bp-nouveau/buddypress/members/single/invitations/list-invites.php
@@ -16,7 +16,7 @@
 		?>
 	</h2>
 
-	<div id="pag-top" class="pagination no-ajax">
+	<div id="pag-top" class="bp-pagination no-ajax">
 		<div class="pag-count" id="invitations-count-top">
 			<?php bp_members_invitations_pagination_count(); ?>
 		</div>
@@ -28,7 +28,7 @@
 
 	<?php bp_get_template_part( 'members/single/invitations/invitations-loop' ); ?>
 
-	<div id="pag-bottom" class="pagination no-ajax">
+	<div id="pag-bottom" class="bp-pagination no-ajax">
 		<div class="pag-count" id="invitations-count-bottom">
 			<?php bp_members_invitations_pagination_count(); ?>
 		</div>
diff --git src/bp-templates/bp-nouveau/common-styles/_bp_filters.scss src/bp-templates/bp-nouveau/common-styles/_bp_filters.scss
index 8ff5970f1..1317aee14 100644
--- src/bp-templates/bp-nouveau/common-styles/_bp_filters.scss
+++ src/bp-templates/bp-nouveau/common-styles/_bp_filters.scss
@@ -181,13 +181,11 @@
 
 	} // close .subnav-filters
 
-	.notifications-options-nav {
-
-		input#notification-bulk-manage {
-			border: 0;
-			border-radius: 0;
-			line-height: 1.6;
-		}
+	.notifications-options-nav input#notification-bulk-manage,
+	.invitations-options-nav input#invitation-bulk-manage {
+		border: 0;
+		border-radius: 0;
+		line-height: 1.6;
 	}
 
 	.group-subnav-filters {
diff --git src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss
index b39d8a03c..9453a4452 100644
--- src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss
+++ src/bp-templates/bp-nouveau/common-styles/_bp_forms.scss
@@ -24,7 +24,8 @@
 		opacity: 0.4;
 	}
 
-	#notification-bulk-manage[disabled] {
+	#notification-bulk-manage[disabled],
+	#invitation-bulk-manage[disabled] {
 		display: none;
 	}
 
@@ -399,11 +400,9 @@ body.no-js {
 
 	@include medium-small-up() {
 
-		.notifications-options-nav {
-
-			.select-wrap {
-				float: left;
-			}
+		.notifications-options-nav .select-wrap,
+		.invitations-options-nav .select-wrap {
+			float: left;
 		}
 	}
 }
diff --git src/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss src/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss
index 65cabf5e7..2d2799368 100644
--- src/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss
+++ src/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss
@@ -255,7 +255,8 @@ body.buddypress {
 		}
 	}
 
-	#notification-select {
+	#notification-select,
+	#invitation-select {
 
 		@include responsive-font(14);
 	}
diff --git src/bp-templates/bp-nouveau/css/buddypress-rtl.css src/bp-templates/bp-nouveau/css/buddypress-rtl.css
index 38c0e2217..353fdb9c0 100644
--- src/bp-templates/bp-nouveau/css/buddypress-rtl.css
+++ src/bp-templates/bp-nouveau/css/buddypress-rtl.css
@@ -255,12 +255,14 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	}
 }
 
-.buddypress-wrap #notification-select {
+.buddypress-wrap #notification-select,
+.buddypress-wrap #invitation-select {
 	font-size: 12px;
 }
 
 @media screen and (min-width: 46.8em) {
-	.buddypress-wrap #notification-select {
+	.buddypress-wrap #notification-select,
+	.buddypress-wrap #invitation-select {
 		font-size: 14px;
 	}
 }
@@ -794,7 +796,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	}
 }
 
-.buddypress-wrap .notifications-options-nav input#notification-bulk-manage {
+.buddypress-wrap .notifications-options-nav input#notification-bulk-manage,
+.buddypress-wrap .invitations-options-nav input#invitation-bulk-manage {
 	border: 0;
 	border-radius: 0;
 	line-height: 1.6;
@@ -3430,7 +3433,8 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a {
 	opacity: 0.4;
 }
 
-.buddypress-wrap #notification-bulk-manage[disabled] {
+.buddypress-wrap #notification-bulk-manage[disabled],
+.buddypress-wrap #invitation-bulk-manage[disabled] {
 	display: none;
 }
 
@@ -3727,7 +3731,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 @media screen and (min-width: 32em) {
-	.buddypress-wrap .notifications-options-nav .select-wrap {
+	.buddypress-wrap .notifications-options-nav .select-wrap,
+	.buddypress-wrap .invitations-options-nav .select-wrap {
 		float: right;
 	}
 }
diff --git src/bp-templates/bp-nouveau/css/buddypress.css src/bp-templates/bp-nouveau/css/buddypress.css
index 15406b96e..b6c5f981f 100644
--- src/bp-templates/bp-nouveau/css/buddypress.css
+++ src/bp-templates/bp-nouveau/css/buddypress.css
@@ -255,12 +255,14 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	}
 }
 
-.buddypress-wrap #notification-select {
+.buddypress-wrap #notification-select,
+.buddypress-wrap #invitation-select {
 	font-size: 12px;
 }
 
 @media screen and (min-width: 46.8em) {
-	.buddypress-wrap #notification-select {
+	.buddypress-wrap #notification-select,
+	.buddypress-wrap #invitation-select {
 		font-size: 14px;
 	}
 }
@@ -794,7 +796,8 @@ body.buddypress article.page > .entry-header:not(.alignwide):not(.alignfull) .en
 	}
 }
 
-.buddypress-wrap .notifications-options-nav input#notification-bulk-manage {
+.buddypress-wrap .notifications-options-nav input#notification-bulk-manage,
+.buddypress-wrap .invitations-options-nav input#invitation-bulk-manage {
 	border: 0;
 	border-radius: 0;
 	line-height: 1.6;
@@ -3430,7 +3433,8 @@ body.buddypress.settings.data #buddypress.buddypress-wrap .item-body p a {
 	opacity: 0.4;
 }
 
-.buddypress-wrap #notification-bulk-manage[disabled] {
+.buddypress-wrap #notification-bulk-manage[disabled],
+.buddypress-wrap #invitation-bulk-manage[disabled] {
 	display: none;
 }
 
@@ -3727,7 +3731,8 @@ body.no-js .buddypress #messages-bulk-management #select-all-messages {
 }
 
 @media screen and (min-width: 32em) {
-	.buddypress-wrap .notifications-options-nav .select-wrap {
+	.buddypress-wrap .notifications-options-nav .select-wrap,
+	.buddypress-wrap .invitations-options-nav .select-wrap {
 		float: left;
 	}
 }
diff --git src/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css src/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css
index 453826cd5..d3d05a346 100644
--- src/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css
+++ src/bp-templates/bp-nouveau/css/twentytwentyone-rtl.css
@@ -154,11 +154,13 @@ Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet.
 	padding-right: 0;
 }
 
-#buddypress.twentytwentyone .notifications-options-nav {
+#buddypress.twentytwentyone .notifications-options-nav,
+#buddypress.twentytwentyone .invitations-options-nav {
 	margin-top: 1em;
 }
 
-#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage {
+#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage,
+#buddypress.twentytwentyone .invitations-options-nav input#invitation-bulk-manage {
 	line-height: 1.2;
 }
 
diff --git src/bp-templates/bp-nouveau/css/twentytwentyone.css src/bp-templates/bp-nouveau/css/twentytwentyone.css
index ecfaf8d9e..a8837db02 100644
--- src/bp-templates/bp-nouveau/css/twentytwentyone.css
+++ src/bp-templates/bp-nouveau/css/twentytwentyone.css
@@ -154,11 +154,13 @@ Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet.
 	padding-left: 0;
 }
 
-#buddypress.twentytwentyone .notifications-options-nav {
+#buddypress.twentytwentyone .notifications-options-nav,
+#buddypress.twentytwentyone .invitations-options-nav {
 	margin-top: 1em;
 }
 
-#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage {
+#buddypress.twentytwentyone .notifications-options-nav input#notification-bulk-manage,
+#buddypress.twentytwentyone .invitations-options-nav input#invitation-bulk-manage {
 	line-height: 1.2;
 }
 
diff --git src/bp-templates/bp-nouveau/includes/members/functions.php src/bp-templates/bp-nouveau/includes/members/functions.php
index de6bbea3b..82c38ee17 100644
--- src/bp-templates/bp-nouveau/includes/members/functions.php
+++ src/bp-templates/bp-nouveau/includes/members/functions.php
@@ -3,12 +3,34 @@
  * Members functions
  *
  * @since 3.0.0
- * @version 6.0.0
+ * @version 8.0.0
  */
 
 // Exit if accessed directly.
 defined( 'ABSPATH' ) || exit;
 
+/**
+ * Register Scripts for the Members component
+ *
+ * @since 8.0.0
+ *
+ * @param array $scripts Optional. The array of scripts to register.
+ * @return array The same array with the specific members scripts.
+ */
+function bp_nouveau_members_register_scripts( $scripts = array() ) {
+	if ( ! isset( $scripts['bp-nouveau'] ) || ! bp_get_members_invitations_allowed() ) {
+		return $scripts;
+	}
+
+	return array_merge( $scripts, array(
+		'bp-nouveau-member-invites' => array(
+			'file'         => 'js/buddypress-member-invites%s.js',
+			'dependencies' => array(),
+			'footer'       => true,
+		),
+	) );
+}
+
 /**
  * Enqueue the members scripts
  *
@@ -16,19 +38,20 @@ defined( 'ABSPATH' ) || exit;
  */
 function bp_nouveau_members_enqueue_scripts() {
 	// Neutralize Ajax when using BuddyPress Groups & member widgets on default front page
-	if ( ! bp_is_user_front() || ! bp_nouveau_get_appearance_settings( 'user_front_page' ) ) {
-		return;
+	if ( bp_is_user_front() && bp_nouveau_get_appearance_settings( 'user_front_page' ) ) {
+		wp_add_inline_style(
+			'bp-nouveau',
+			'#member-front-widgets #groups-list-options,
+			#member-front-widgets #members-list-options,
+			#member-front-widgets #friends-list-options {
+				display: none;
+			}'
+		);
 	}
 
-	wp_add_inline_style(
-		'bp-nouveau', '
-		#member-front-widgets #groups-list-options,
-		#member-front-widgets #members-list-options,
-		#member-front-widgets #friends-list-options {
-			display: none;
-		}
-	'
-	);
+	if ( bp_is_user_members_invitations_list() ) {
+		wp_enqueue_script( 'bp-nouveau-member-invites' );
+	}
 }
 
 /**
diff --git src/bp-templates/bp-nouveau/includes/members/loader.php src/bp-templates/bp-nouveau/includes/members/loader.php
index 0aca1fb52..6a13d1f30 100644
--- src/bp-templates/bp-nouveau/includes/members/loader.php
+++ src/bp-templates/bp-nouveau/includes/members/loader.php
@@ -88,6 +88,7 @@ class BP_Nouveau_Members {
 	protected function setup_filters() {
 		// Add the default-front to User's front hierarchy if user enabled it (Enabled by default).
 		add_filter( 'bp_displayed_user_get_front_template', 'bp_nouveau_member_reset_front_template', 10, 1 );
+		add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_members_register_scripts', 10, 1 );
 
 		// The number formatting is done into the `bp_nouveau_nav_count()` template tag.
 		remove_filter( 'bp_get_total_member_count', 'bp_core_number_format' );
diff --git src/bp-templates/bp-nouveau/includes/members/template-tags.php src/bp-templates/bp-nouveau/includes/members/template-tags.php
index 1c9385047..2d079f3ab 100644
--- src/bp-templates/bp-nouveau/includes/members/template-tags.php
+++ src/bp-templates/bp-nouveau/includes/members/template-tags.php
@@ -3,7 +3,7 @@
  * Members template tags
  *
  * @since 3.0.0
- * @version 6.0.0
+ * @version 8.0.0
  */
 
 // Exit if accessed directly.
@@ -1039,3 +1039,32 @@ function bp_nouveau_wp_profile_field_data() {
 		$field = bp_nouveau()->members->wp_profile_current;
 		return $field->data;
 	}
+
+/**
+ * Outputs the Invitations bulk actions dropdown list.
+ *
+ * @since 8.0.0
+ */
+function bp_nouveau_invitations_bulk_management_dropdown() {
+	?>
+	<div class="select-wrap">
+
+		<label class="bp-screen-reader-text" for="invitation-select">
+			<?php
+			esc_html_e( 'Select Bulk Action', 'buddypress' );
+			?>
+		</label>
+
+		<select name="invitation_bulk_action" id="invitation-select">
+			<option value="" selected="selected"><?php esc_html_e( 'Bulk Actions', 'buddypress' ); ?></option>
+			<option value="resend"><?php echo esc_html_x( 'Resend', 'button', 'buddypress' ); ?></option>
+			<option value="cancel"><?php echo esc_html_x( 'Cancel', 'button', 'buddypress' ); ?></option>
+		</select>
+
+		<span class="select-arrow"></span>
+
+	</div><!-- // .select-wrap -->
+
+	<input type="submit" id="invitation-bulk-manage" class="button action" value="<?php echo esc_attr_x( 'Apply', 'button', 'buddypress' ); ?>">
+	<?php
+}
diff --git src/bp-templates/bp-nouveau/js/buddypress-member-invites.js src/bp-templates/bp-nouveau/js/buddypress-member-invites.js
new file mode 100644
index 000000000..38c066b5e
--- /dev/null
+++ src/bp-templates/bp-nouveau/js/buddypress-member-invites.js
@@ -0,0 +1,67 @@
+/**
+ * Handles the dynamic parts of the Member's Pending Invitations screen.
+ *
+ * @since  8.0.0
+ * @version 8.0.0
+ */
+( function() {
+	/**
+	 * Organizes the dynamic parts of the Member's Pending Invitations screen.
+	 *
+	 * @namespace bp.Nouveau.Invitations
+	 * @memberof  bp.Nouveau
+	 *
+	 * @since  8.0.0
+	 * @type {Object}
+	 */
+	var Invitations = {
+		/**
+		 * Selects/Unselects all invitations.
+		 *
+		 * @since 8.0.0
+		 *
+		 * @param {Object} event The click event.
+		 */
+		toggleSelection: function( event ) {
+			document.querySelectorAll( '.invitation-check' ).forEach( function( cb ) {
+				cb.checked = event.target.checked;
+			} );
+		},
+		/**
+		 * Selects/Unselects all invitations.
+		 *
+		 * @since 8.0.0
+		 *
+		 * @param {Object} event The click event.
+		 */
+		toggleSubmit: function( event ) {
+			if ( ! event.target.value ) {
+				document.querySelector( '#invitation-bulk-manage' ).setAttribute( 'disabled', 'disabled' );
+			} else {
+				document.querySelector( '#invitation-bulk-manage' ).removeAttribute( 'disabled' );
+			}
+		},
+		/**
+		 * Adds listeners.
+		 *
+		 * @since 8.0.0
+		 */
+		start: function() {
+			// Disable the submit button.
+			document.querySelector( '#invitation-bulk-manage' ).setAttribute( 'disabled', 'disabled' );
+
+			// Select/UnSelect all invitations.
+			document.querySelector( '#select-all-invitations' ).addEventListener( 'click', this.toggleSelection );
+
+			// Enable/Disable the submit button.
+			document.querySelector( '#invitation-select' ).addEventListener( 'change', this.toggleSubmit );
+		}
+	};
+
+	window.bp = window.bp || {};
+	if ( window.bp.Nouveau ) {
+		window.bp.Nouveau.Invitations = Invitations;
+
+		Invitations.start();
+	}
+} )();
diff --git src/bp-templates/bp-nouveau/sass/twentytwentyone.scss src/bp-templates/bp-nouveau/sass/twentytwentyone.scss
index af56e9a79..2bc6a8de3 100644
--- src/bp-templates/bp-nouveau/sass/twentytwentyone.scss
+++ src/bp-templates/bp-nouveau/sass/twentytwentyone.scss
@@ -221,12 +221,14 @@ Hello, this is the BP Nouveau's Twenty Twenty-One companion stylesheet.
 		}
 	}
 
-	.notifications-options-nav {
+	.notifications-options-nav,
+	.invitations-options-nav {
 		margin-top: 1em;
+	}
 
-		input#notification-bulk-manage {
-			line-height: 1.2;
-		}
+	.notifications-options-nav input#notification-bulk-manage,
+	.invitations-options-nav input#invitation-bulk-manage {
+		line-height: 1.2;
 	}
 }
 
