diff --git src/bp-activity/bp-activity-notifications.php src/bp-activity/bp-activity-notifications.php
index 610df26..7dfbc0e 100644
--- src/bp-activity/bp-activity-notifications.php
+++ src/bp-activity/bp-activity-notifications.php
@@ -148,19 +148,35 @@ function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id =
 	add_filter( 'bp_get_activity_content_body', 'wpautop' );
 	add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 );
 
-	if ( $original_activity->user_id != $commenter_id && 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
-		$args = array(
-			'tokens' => array(
-				'comment.id'                => $comment_id,
-				'commenter.id'              => $commenter_id,
-				'usermessage'               => wp_strip_all_tags( $content ),
-				'original_activity.user_id' => $original_activity->user_id,
-				'poster.name'               => $poster_name,
-				'thread.url'                => esc_url( $thread_link ),
-			),
-		);
+	if ( $original_activity->user_id != $commenter_id ) {
+
+		// Send an email if the user hasn't opted-out.
+		if ( 'no' != bp_get_user_meta( $original_activity->user_id, 'notification_activity_new_reply', true ) ) {
+			$args = array(
+				'tokens' => array(
+					'comment.id'                => $comment_id,
+					'commenter.id'              => $commenter_id,
+					'usermessage'               => wp_strip_all_tags( $content ),
+					'original_activity.user_id' => $original_activity->user_id,
+					'poster.name'               => $poster_name,
+					'thread.url'                => esc_url( $thread_link ),
+				),
+			);
+
+			bp_send_email( 'activity-comment', $original_activity->user_id, $args );
+		}
 
-		bp_send_email( 'activity-comment', $original_activity->user_id, $args );
+		/**
+		 * Always Trigger the comment_reply notification.
+		 *
+		 * @since 2.6.0
+ 		 *
+		 * @param BP_Activity_Activity $original_activity the original activity.
+		 * @param int                  $comment_id ID for the newly received comment.
+		 * @param int                  $commenter_id ID of the user who made the comment.
+		 * @param array                $params Arguments used with the original activity comment.
+		 */
+		do_action( 'bp_activity_sent_reply_to_update_notification', $original_activity, $comment_id, $commenter_id, $params );
 	}
 
 
@@ -174,19 +190,35 @@ function bp_activity_new_comment_notification( $comment_id = 0, $commenter_id =
 
 	$parent_comment = new BP_Activity_Activity( $params['parent_id'] );
 
-	if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id && 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
-		$args = array(
-			'tokens' => array(
-				'comment.id'             => $comment_id,
-				'commenter.id'           => $commenter_id,
-				'usermessage'            => wp_strip_all_tags( $content ),
-				'parent-comment-user.id' => $parent_comment->user_id,
-				'poster.name'            => $poster_name,
-				'thread.url'             => esc_url( $thread_link ),
-			),
-		);
+	if ( $parent_comment->user_id != $commenter_id && $original_activity->user_id != $parent_comment->user_id ) {
+
+		// Send an email if the user hasn't opted-out.
+		if ( 'no' != bp_get_user_meta( $parent_comment->user_id, 'notification_activity_new_reply', true ) ) {
+			$args = array(
+				'tokens' => array(
+					'comment.id'             => $comment_id,
+					'commenter.id'           => $commenter_id,
+					'usermessage'            => wp_strip_all_tags( $content ),
+					'parent-comment-user.id' => $parent_comment->user_id,
+					'poster.name'            => $poster_name,
+					'thread.url'             => esc_url( $thread_link ),
+				),
+			);
+
+			bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
+		}
 
-		bp_send_email( 'activity-comment-author', $parent_comment->user_id, $args );
+		/**
+		 * Always trigger the comment_reply notification.
+		 *
+		 * @since 2.6.0
+ 		 *
+		 * @param BP_Activity_Activity $parent_comment the parent activity.
+		 * @param int                  $comment_id ID for the newly received comment.
+		 * @param int                  $commenter_id ID of the user who made the comment.
+		 * @param array                $params Arguments used with the original activity comment.
+ 		 */
+		do_action( 'bp_activity_sent_reply_to_reply_notification', $parent_comment, $comment_id, $commenter_id, $params );
 	}
 }
 
@@ -225,64 +257,99 @@ add_action( 'bp_activity_comment_posted', 'bp_activity_new_comment_notification_
  * @return string $return Formatted @mention notification.
  */
 function bp_activity_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
+	$action_filter = $action;
+	$return        = false;
+	$activity_id   = $item_id;
+	$user_id       = $secondary_item_id;
+	$user_fullname = bp_core_get_user_displayname( $user_id );
 
 	switch ( $action ) {
 		case 'new_at_mention':
-			$activity_id      = $item_id;
-			$poster_user_id   = $secondary_item_id;
-			$at_mention_link  = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/';
-			$at_mention_title = sprintf( __( '@%s Mentions', 'buddypress' ), bp_get_loggedin_user_username() );
-			$amount = 'single';
+			$action_filter = 'at_mentions';
+			$link          = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/';
+			$title         = sprintf( __( '@%s Mentions', 'buddypress' ), bp_get_loggedin_user_username() );
+			$amount        = 'single';
 
 			if ( (int) $total_items > 1 ) {
 				$text = sprintf( __( 'You have %1$d new mentions', 'buddypress' ), (int) $total_items );
 				$amount = 'multiple';
 			} else {
-				$user_fullname = bp_core_get_user_displayname( $poster_user_id );
 				$text =  sprintf( __( '%1$s mentioned you', 'buddypress' ), $user_fullname );
 			}
 		break;
+
+		case 'update_reply':
+			$link   = bp_get_notifications_permalink();
+			$title  = __( 'New Activity reply', 'buddypress' );
+			$amount = 'single';
+
+			if ( (int) $total_items > 1 ) {
+				$link   = add_query_arg( 'type', $action, $link );
+				$text   = sprintf( __( 'You have %1$d new replies', 'buddypress' ), (int) $total_items );
+				$amount = 'multiple';
+			} else {
+				$link   = bp_activity_get_permalink( $activity_id );
+				$text   =  sprintf( __( '%1$s commented on one of your updates', 'buddypress' ), $user_fullname );
+			}
+		break;
+
+		case 'comment_reply':
+			$link   = bp_get_notifications_permalink();
+			$title  = __( 'New Activity comment reply', 'buddypress' );
+			$amount = 'single';
+
+			if ( (int) $total_items > 1 ) {
+				$link   = add_query_arg( 'type', $action, $link );
+				$text   = sprintf( __( 'You have %1$d new comment replies', 'buddypress' ), (int) $total_items );
+				$amount = 'multiple';
+			} else {
+				$link   = bp_activity_get_permalink( $activity_id );
+				$text   =  sprintf( __( '%1$s replied to one your activity comments', 'buddypress' ), $user_fullname );
+			}
+		break;
 	}
 
 	if ( 'string' == $format ) {
 
 		/**
-		 * Filters the @mention notification for the string format.
+		 * Filters the activity notification for the string format.
 		 *
 		 * This is a variable filter that is dependent on how many items
 		 * need notified about. The two possible hooks are bp_activity_single_at_mentions_notification
 		 * or bp_activity_multiple_at_mentions_notification.
 		 *
 		 * @since 1.5.0
+		 * @since 2.6.0 use the $action_filter as a new dynamic portion of the filter name.
 		 *
-		 * @param string $string          HTML anchor tag for the mention.
-		 * @param string $at_mention_link The permalink for the mention.
+		 * @param string $string          HTML anchor tag for the interaction.
+		 * @param string $link            The permalink for the interaction.
 		 * @param int    $total_items     How many items being notified about.
 		 * @param int    $activity_id     ID of the activity item being formatted.
-		 * @param int    $poster_user_id  ID of the user posting the mention.
+		 * @param int    $user_id         ID of the user who inited the interaction.
 		 */
-		$return = apply_filters( 'bp_activity_' . $amount . '_at_mentions_notification', '<a href="' . esc_url( $at_mention_link ) . '" title="' . esc_attr( $at_mention_title ) . '">' . esc_html( $text ) . '</a>', $at_mention_link, (int) $total_items, $activity_id, $poster_user_id );
+		$return = apply_filters( 'bp_activity_' . $amount . '_' . $action_filter . '_notification', '<a href="' . esc_url( $link ) . '" title="' . esc_attr( $title ) . '">' . esc_html( $text ) . '</a>', $link, (int) $total_items, $activity_id, $user_id );
 	} else {
 
 		/**
-		 * Filters the @mention notification for any non-string format.
+		 * Filters the activity notification for any non-string format.
 		 *
 		 * This is a variable filter that is dependent on how many items need notified about.
 		 * The two possible hooks are bp_activity_single_at_mentions_notification
 		 * or bp_activity_multiple_at_mentions_notification.
 		 *
 		 * @since 1.5.0
+		 * @since 2.6.0 use the $action_filter as a new dynamic portion of the filter name.
 		 *
-		 * @param array  $array           Array holding the content and permalink for the mention notification.
-		 * @param string $at_mention_link The permalink for the mention.
+		 * @param array  $array           Array holding the content and permalink for the interaction notification.
+		 * @param string $link            The permalink for the interaction.
 		 * @param int    $total_items     How many items being notified about.
 		 * @param int    $activity_id     ID of the activity item being formatted.
-		 * @param int    $poster_user_id  ID of the user posting the mention.
+		 * @param int    $user_id         ID of the user who inited the interaction.
 		 */
-		$return = apply_filters( 'bp_activity_' . $amount . '_at_mentions_notification', array(
+		$return = apply_filters( 'bp_activity_' . $amount . '_' . $action_filter . '_notification', array(
 			'text' => $text,
-			'link' => $at_mention_link
-		), $at_mention_link, (int) $total_items, $activity_id, $poster_user_id );
+			'link' => $link
+		), $link, (int) $total_items, $activity_id, $user_id );
 	}
 
 	/**
@@ -292,7 +359,7 @@ function bp_activity_format_notifications( $action, $item_id, $secondary_item_id
 	 *
 	 * @param string $action            The type of activity item.
 	 * @param int    $item_id           The activity ID.
-	 * @param int    $secondary_item_id @mention mentioner ID.
+	 * @param int    $secondary_item_id The user ID who inited the interaction.
 	 * @param int    $total_items       Total amount of items to format.
 	 */
 	do_action( 'activity_format_notifications', $action, $item_id, $secondary_item_id, $total_items );
@@ -332,6 +399,54 @@ function bp_activity_at_mention_add_notification( $activity, $subject, $message,
 add_action( 'bp_activity_sent_mention_email', 'bp_activity_at_mention_add_notification', 10, 5 );
 
 /**
+ * Notify a member one of their activity received a reply.
+ *
+ * @since 2.6.0
+ *
+ * @param BP_Activity_Activity $activity the original activity.
+ * @param int                  $comment_id ID for the newly received comment.
+ * @param int                  $commenter_id ID of the user who made the comment.
+ */
+function bp_activity_update_reply_add_notification( $activity, $comment_id, $commenter_id ) {
+	if ( bp_is_active( 'notifications' ) ) {
+		bp_notifications_add_notification( array(
+			'user_id'           => $activity->user_id,
+			'item_id'           => $activity->id,
+			'secondary_item_id' => $commenter_id,
+			'component_name'    => buddypress()->activity->id,
+			'component_action'  => 'update_reply',
+			'date_notified'     => bp_core_current_time(),
+			'is_new'            => 1,
+		) );
+	}
+}
+add_action( 'bp_activity_sent_reply_to_update_notification', 'bp_activity_update_reply_add_notification', 10, 3 );
+
+/**
+ * Notify a member one of their activity comment received a reply.
+ *
+ * @since 2.6.0
+ *
+ * @param BP_Activity_Activity $activity_comment the parent activity.
+ * @param int                  $comment_id ID for the newly received comment.
+ * @param int                  $commenter_id ID of the user who made the comment.
+ */
+function bp_activity_comment_reply_add_notification( $activity_comment, $comment_id, $commenter_id ) {
+	if ( bp_is_active( 'notifications' ) ) {
+		bp_notifications_add_notification( array(
+			'user_id'           => $activity_comment->user_id,
+			'item_id'           => $activity_comment->item_id,
+			'secondary_item_id' => $commenter_id,
+			'component_name'    => buddypress()->activity->id,
+			'component_action'  => 'comment_reply',
+			'date_notified'     => bp_core_current_time(),
+			'is_new'            => 1,
+		) );
+	}
+}
+add_action( 'bp_activity_sent_reply_to_reply_notification', 'bp_activity_comment_reply_add_notification', 10, 3 );
+
+/**
  * Mark at-mention notifications as read when users visit their Mentions page.
  *
  * @since 1.5.0
@@ -358,6 +473,7 @@ add_action( 'bp_activity_clear_new_mentions', 'bp_activity_remove_screen_notific
  * Mark at-mention notification as read when user visits the activity with the mention.
  *
  * @since 2.0.0
+ * @since 2.5.0 Mark notifications for 'update_reply' and 'comment_reply' actions
  *
  * @param BP_Activity_Activity $activity Activity object.
  */
@@ -370,8 +486,27 @@ function bp_activity_remove_screen_notifications_single_activity_permalink( $act
 		return;
 	}
 
-	// Mark as read any notifications for the current user related to this activity item.
-	bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), $activity->id, buddypress()->activity->id, 'new_at_mention' );
+	/**
+	 * Filter here to add the notification actions to mark as read
+	 * when the single activity is displayed.
+	 *
+	 * @since 2.6.0
+	 *
+	 * @param array $value List of notification actions to mark as read.
+	 */
+	$notification_actions = apply_filters( 'bp_activity_notification_actions_single_activity', array(
+		'new_at_mention',
+		'update_reply',
+		'comment_reply',
+	) );
+
+	$user_id   = bp_loggedin_user_id();
+	$component = buddypress()->activity->id;
+
+	foreach ( $notification_actions as $action ) {
+		// Mark as read any notifications for the current user related to this activity item.
+		bp_notifications_mark_notifications_by_item_id( $user_id, $activity->id, $component, $action );
+	}
 }
 add_action( 'bp_activity_screen_single_activity_permalink', 'bp_activity_remove_screen_notifications_single_activity_permalink' );
 
diff --git src/bp-notifications/bp-notifications-template.php src/bp-notifications/bp-notifications-template.php
index fc4d82c..4cbfc69 100644
--- src/bp-notifications/bp-notifications-template.php
+++ src/bp-notifications/bp-notifications-template.php
@@ -169,15 +169,29 @@ function bp_has_notifications( $args = '' ) {
 		$user_id = bp_loggedin_user_id();
 	}
 
+	// Set the component action (by default false to get all actions)
+	$component_action = false;
+
+	if ( isset( $_REQUEST['type'] ) ) {
+		$component_action = sanitize_key( $_REQUEST['type'] );
+	}
+
+	// Set the search terms (by default an empty string to get all notifications)
+	$search_terms = '';
+
+	if ( isset( $_REQUEST['s'] ) ) {
+		$search_terms = stripslashes( $_REQUEST['s'] );
+	}
+
 	// Parse the args.
 	$r = bp_parse_args( $args, array(
 		'id'                => false,
 		'user_id'           => $user_id,
 		'secondary_item_id' => false,
 		'component_name'    => bp_notifications_get_registered_components(),
-		'component_action'  => false,
+		'component_action'  => $component_action,
 		'is_new'            => $is_new,
-		'search_terms'      => isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '',
+		'search_terms'      => $search_terms,
 		'order_by'          => 'date_notified',
 		'sort_order'        => 'DESC',
 		'meta_query'        => false,
diff --git tests/phpunit/testcases/activity/notifications.php tests/phpunit/testcases/activity/notifications.php
index 0604d0b..82e2ccc 100644
--- tests/phpunit/testcases/activity/notifications.php
+++ tests/phpunit/testcases/activity/notifications.php
@@ -287,4 +287,91 @@ class BP_Tests_Activity_Notifications extends BP_UnitTestCase {
 			'content' => sprintf( 'Hello! @%s', $u2_mentionname ),
 		) );
 	}
+
+	/**
+	 * @group bp_activity_format_notifications
+	 */
+	public function test_bp_activity_format_notifications_new_at_mention() {
+		$this->test_format_filter = array();
+
+		// Current user is $this->u1, so $this->u2 posted the mention
+		$a = $this->factory->activity->create( array(
+			'user_id' => $this->u2,
+			'component' => buddypress()->activity->id,
+			'type' => 'activity_update',
+			'content' => 'fake new_at_mention activity',
+		) );
+
+		add_filter( 'bp_activity_single_at_mentions_notification', array( $this, 'format_notification_filter' ), 10, 1 );
+		add_filter( 'bp_activity_multiple_at_mentions_notification', array( $this, 'format_notification_filter' ), 10, 1 );
+
+		$format_tests = array(
+			'array_single'    => bp_activity_format_notifications( 'new_at_mention', $a, $this->u2, 1, 'array' ),
+			'string_single'   => bp_activity_format_notifications( 'new_at_mention', $a, $this->u2, 1 ),
+			'array_multiple'  => bp_activity_format_notifications( 'new_at_mention', $a, $this->u2, 2, 'array' ),
+			'string_multiple' => bp_activity_format_notifications( 'new_at_mention', $a, $this->u2, 2 ),
+		);
+
+		remove_filter( 'bp_activity_single_at_mentions_notification', array( $this, 'format_notification_filter' ), 10, 1 );
+		remove_filter( 'bp_activity_multiple_at_mentions_notification', array( $this, 'format_notification_filter' ), 10, 1 );
+
+		$single = sprintf( __( '%1$s mentioned you', 'buddypress' ), bp_core_get_user_displayname( $this->u2 ) );
+		$multiple = 'You have 2 new mentions';
+
+		$this->assertContains( $single, $format_tests['string_single'] );
+		$this->assertContains( $single, $format_tests['array_single']['text'] );
+		$this->assertContains( $multiple, $format_tests['string_multiple'] );
+		$this->assertContains( $multiple, $format_tests['array_multiple']['text'] );
+
+		// Check filters
+		$this->assertTrue( 4 === count( $this->test_format_filter ) );
+	}
+
+	public function format_notification_filter( $return ) {
+		$this->test_format_filter[] = current_filter();
+		return $return;
+	}
+
+	/**
+	 * @group bp_activity_update_reply_add_notification
+	 * @group bp_activity_comment_reply_add_notification
+	 */
+	public function test_bp_activity_comment_add_notification() {
+		$a = $this->factory->activity->create( array(
+			'user_id' => $this->u1,
+			'component' => buddypress()->activity->id,
+			'type' => 'activity_update',
+			'content' => 'Please comment this activity.',
+		) );
+
+		$c = bp_activity_new_comment( array(
+			'content'     => 'this is the comment',
+			'user_id'     => $this->u2,
+			'activity_id' => $a, // ID of the root activity item.
+			'parent_id'   => false  // ID of a parent comment (optional).
+		) );
+
+		$u3 = $this->factory->user->create();
+
+		$r3 = bp_activity_new_comment( array(
+			'content'     => 'this is a reply to a comment',
+			'user_id'     => $u3,
+			'activity_id' => $a, // ID of the root activity item.
+			'parent_id'   => $c  // ID of a parent comment (optional).
+		) );
+
+		$u1_notifications = BP_Notifications_Notification::get( array(
+			'user_id' => $this->u1,
+		) );
+
+		$expected_commenters = array( $this->u2, $u3 );
+		$this->assertEquals( $expected_commenters, wp_list_pluck( $u1_notifications, 'secondary_item_id' ) );
+
+		$u2_notifications = BP_Notifications_Notification::get( array(
+			'user_id' => $this->u2,
+		) );
+
+		$expected_commenter = array( $u3 );
+		$this->assertEquals( $expected_commenter, wp_list_pluck( $u2_notifications, 'secondary_item_id' ) );
+	}
 }
