diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
index b41c54410..622c2bbce 100644
--- src/bp-core/bp-core-filters.php
+++ src/bp-core/bp-core-filters.php
@@ -461,6 +461,12 @@ add_filter( 'update_welcome_email', 'bp_core_filter_blog_welcome_email', 10, 4 )
  * @return bool              Returns false to stop original WPMU function from continuing.
  */
 function bp_core_activation_signup_blog_notification( $domain, $path, $title, $user, $user_email, $key ) {
+	$is_signup_resend = false;
+	if ( is_admin() && buddypress()->members->admin->signups_page == get_current_screen()->id ) {
+		// The admin is just approving/sending/resending the verification email.
+		$is_signup_resend = true;
+	}
+
 	$args = array(
 		'tokens' => array(
 			'activate-site.url' => esc_url( bp_get_activation_page() . '?key=' . urlencode( $key ) ),
@@ -486,14 +492,15 @@ function bp_core_activation_signup_blog_notification( $domain, $path, $title, $u
 	 *
 	 * @since 10.0.0
 	 *
-	 * @param string $user       The user's login name.
-	 * @param string $user_email The user's email address.
-	 * @param string $key        The activation key created in wpmu_signup_blog().
-	 * @param string $domain     The new blog domain.
-	 * @param string $path       The new blog path.
-	 * @param string $title      The site title.
+	 * @param string $user             The user's login name.
+	 * @param string $user_email       The user's email address.
+	 * @param string $key              The activation key created in wpmu_signup_blog().
+	 * @param bool   $is_signup_resend Is the site admin sending this email?
+	 * @param string $domain           The new blog domain.
+	 * @param string $path             The new blog path.
+	 * @param string $title            The site title.
 	 */
-	if ( apply_filters( 'bp_core_signup_send_activation_key_multisite_blog', true, $user, $user_email, $key, $domain, $path, $title ) ) {
+	if ( apply_filters( 'bp_core_signup_send_activation_key_multisite_blog', true, $user, $user_email, $key, $is_signup_resend, $domain, $path, $title ) ) {
 
 		bp_send_email( 'core-user-registration-with-blog', array( array( $user_email => $salutation ) ), $args );
 
@@ -518,6 +525,7 @@ add_filter( 'wpmu_signup_blog_notification', 'bp_core_activation_signup_blog_not
  * @return false|string Returns false to stop original WPMU function from continuing.
  */
 function bp_core_activation_signup_user_notification( $user, $user_email, $key, $meta ) {
+	$is_signup_resend = false;
 	if ( is_admin() ) {
 
 		// If the user is created from the WordPress Add User screen, don't send BuddyPress signup notifications.
@@ -531,17 +539,21 @@ function bp_core_activation_signup_user_notification( $user, $user_email, $key,
 				return $user;
 			}
 
-		/*
-		 * There can be a case where the user was created without the skip confirmation
-		 * And the super admin goes in pending accounts to resend it. In this case, as the
-		 * meta['password'] is not set, the activation url must be WordPress one.
-		 */
+		// The site admin is approving/resending from the "manage signups" screen.
 		} elseif ( buddypress()->members->admin->signups_page == get_current_screen()->id ) {
+			/*
+			 * There can be a case where the user was created without the skip confirmation
+			 * And the super admin goes in pending accounts to resend it. In this case, as the
+			 * meta['password'] is not set, the activation url must be WordPress one.
+			 */
 			$is_hashpass_in_meta = maybe_unserialize( $meta );
 
 			if ( empty( $is_hashpass_in_meta['password'] ) ) {
 				return $user;
 			}
+
+			// Or the admin is just approving/sending/resending the verification email.
+			$is_signup_resend = true;
 		}
 	}
 
@@ -572,17 +584,17 @@ function bp_core_activation_signup_user_notification( $user, $user_email, $key,
 	 *
 	 * @since 10.0.0
 	 *
-	 * @param string $user       The user's login name.
-	 * @param string $user_email The user's email address.
-	 * @param string $key        The activation key created in wpmu_signup_blog().
+	 * @param string $user             The user's login name.
+	 * @param string $user_email       The user's email address.
+	 * @param string $key              The activation key created in wpmu_signup_blog().
+	 * @param bool   $is_signup_resend Is the site admin sending this email?
 	 */
-	if ( apply_filters( 'bp_core_signup_send_activation_key_multisite', true, $user, $user_email, $key ) ) {
+	if ( apply_filters( 'bp_core_signup_send_activation_key_multisite', true, $user, $user_email, $key, $is_signup_resend ) ) {
 
 		bp_send_email( 'core-user-registration', array( array( $user_email => $salutation ) ), $args );
 
 	}
 
-
 	// Return false to stop the original WPMU function from continuing.
 	return false;
 }
@@ -611,6 +623,7 @@ function bp_core_add_meta_to_multisite_signups( $meta ) {
 	return $meta;
 }
 add_filter( 'signup_user_meta', 'bp_core_add_meta_to_multisite_signups' );
+add_filter( 'signup_site_meta', 'bp_core_add_meta_to_multisite_signups' );
 
 /**
  * Filter the page title for BuddyPress pages.
diff --git src/bp-members/bp-members-membership-requests.php src/bp-members/bp-members-membership-requests.php
index a55f71726..b0ad8d223 100644
--- src/bp-members/bp-members-membership-requests.php
+++ src/bp-members/bp-members-membership-requests.php
@@ -76,20 +76,29 @@ add_filter( 'bp_core_signup_send_activation_key', 'bp_members_membership_request
  *
  * @since 10.0.0
  *
- * @param bool   $send           Whether or not to send the activation key.
- * @param string $user_login     User login name.
- * @param string $user_email     User email address.
- * @param string $activation_key Activation key created in wpmu_signup_user().
+ * @param bool   $send             Whether or not to send the activation key.
+ * @param string $user_login       User login name.
+ * @param string $user_email       User email address.
+ * @param string $activation_key   Activation key created in wpmu_signup_user().
+ * @param bool   $is_signup_resend Is the site admin sending this email?
  * @return bool Whether or not to send the activation key.
  */
-function bp_members_membership_requests_cancel_activation_email_multisite( $send = true, $user_login = '', $user_email = '', $activation_key = '' ) {
+function bp_members_membership_requests_cancel_activation_email_multisite( $send = true, $user_login = '', $user_email = '', $activation_key = '', $is_signup_resend = false ) {
 
 	$details = array(
-		'user_login'     => $user_login,
-		'user_email'     => $user_email,
-		'activation_key' => $activation_key,
+		'user_login'       => $user_login,
+		'user_email'       => $user_email,
+		'activation_key'   => $activation_key,
+		'is_signup_resend' => $is_signup_resend,
 	);
 
+	// Allow the site admin to send/resend approval emails.
+	if ( $is_signup_resend ) {
+		$to_send = true;
+	} else {
+		$to_send = false;
+	}
+
 	/**
 	 * Allow some membership requests to be approved immediately.
 	 * For example, you might want to approve all requests
@@ -98,13 +107,13 @@ function bp_members_membership_requests_cancel_activation_email_multisite( $send
 	 *
 	 * @since 10.0.0
 	 *
-	 * @param bool  $send    Whether or not this membership request should be approved
+	 * @param bool  $to_send Whether or not this membership request should be approved
 	 *                       immediately and the activation email sent.
 	 *                       Default is `false` meaning that the request should be
 	 *                       manually approved by a site admin.
 	 * @param array $details The details of the request.
 	 */
-	$send = apply_filters( 'bp_members_membership_requests_bypass_manual_approval_multisite', false, $details );
+	$send = apply_filters( 'bp_members_membership_requests_bypass_manual_approval_multisite', $to_send, $details );
 
 	// If the registration process has been interrupted, this is a new membership request.
 	if ( ! $send ) {
@@ -123,8 +132,8 @@ function bp_members_membership_requests_cancel_activation_email_multisite( $send
 
 	return $send;
 }
-add_filter( 'bp_core_signup_send_activation_key_multisite', 'bp_members_membership_requests_cancel_activation_email_multisite', 10, 4 );
-add_filter( 'bp_core_signup_send_activation_key_multisite_blog', 'bp_members_membership_requests_cancel_activation_email_multisite', 10, 4 );
+add_filter( 'bp_core_signup_send_activation_key_multisite', 'bp_members_membership_requests_cancel_activation_email_multisite', 10, 5 );
+add_filter( 'bp_core_signup_send_activation_key_multisite_blog', 'bp_members_membership_requests_cancel_activation_email_multisite', 10, 5 );
 
 /**
  * Notifications
diff --git src/bp-members/classes/class-bp-signup.php src/bp-members/classes/class-bp-signup.php
index 76b2022d0..e48d21da4 100644
--- src/bp-members/classes/class-bp-signup.php
+++ src/bp-members/classes/class-bp-signup.php
@@ -819,14 +819,18 @@ class BP_Signup {
 
 		foreach ( $signups as $signup ) {
 
-			$meta = array(
-				'sent_date'  => current_time( 'mysql', true ),
-				'count_sent' => $signup->count_sent + 1
-			);
+			$meta               = $signup->meta;
+			$meta['sent_date']  = current_time( 'mysql', true );
+			$meta['count_sent'] = $signup->count_sent + 1;
 
 			// Send activation email.
 			if ( is_multisite() ) {
-				wpmu_signup_user_notification( $signup->user_login, $signup->user_email, $signup->activation_key, serialize( $meta ) );
+				// Should we send the user or blog activation email?
+				if ( ! empty( $signup->domain ) || ! empty( $signup->path ) ) {
+					wpmu_signup_blog_notification( $signup->domain, $signup->path, $signup->title, $signup->user_login, $signup->user_email, $signup->activation_key, $meta );
+				} else {
+					wpmu_signup_user_notification( $signup->user_login, $signup->user_email, $signup->activation_key, $meta );
+				}
 			} else {
 
 				// Check user status before sending email.
