diff --git src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
index 34844c983..3e1e5dfe1 100644
--- src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
+++ src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
@@ -21,6 +21,15 @@
 	</div>
 </script>
 
+<?php
+/**
+ * This view is used to inject hooks buffer
+ */
+?>
+<script type="text/html" id="tmpl-bp-messages-hook">
+	{{{data.extraContent}}}
+</script>
+
 <script type="text/html" id="tmpl-bp-messages-form">
 	<?php bp_nouveau_messages_hook( 'before', 'compose_content' ); ?>
 
diff --git src/bp-templates/bp-nouveau/includes/messages/ajax.php src/bp-templates/bp-nouveau/includes/messages/ajax.php
index f49175016..98d5bc287 100644
--- src/bp-templates/bp-nouveau/includes/messages/ajax.php
+++ src/bp-templates/bp-nouveau/includes/messages/ajax.php
@@ -223,23 +223,32 @@ function bp_nouveau_ajax_get_user_message_threads() {
 		) );
 	}
 
-	if ( isset( $_POST['box'] ) && 'starred' === $_POST['box'] ) {
-		$star_filter = true;
+	$bp           = buddypress();
+	$reset_action = $bp->current_action;
+
+	// Override bp_current_action().
+	if ( isset( $_POST['box'] ) ) {
+		$bp->current_action = $_POST['box'];
+	}
 
-		// Add the message thread filter.
+	// Add the message thread filter.
+	if ( 'starred' === $bp->current_action ) {
 		add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
 	}
 
 	// Simulate the loop.
 	if ( ! bp_has_message_threads( bp_ajax_querystring( 'messages' ) ) ) {
+		// Remove the bp_current_action() override.
+		$bp->current_action = $reset_action;
+
 		wp_send_json_error( array(
 			'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ),
 			'type'     => 'info'
 		) );
 	}
 
-	if ( ! empty( $star_filter ) ) {
-		// remove the message thread filter.
+	// remove the message thread filter.
+	if ( 'starred' === $bp->current_action ) {
 		remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
 	}
 
@@ -319,6 +328,19 @@ function bp_nouveau_ajax_get_user_message_threads() {
 
 	$threads->threads = array_filter( $threads->threads );
 
+	$extra_content = bp_nouveau_messages_catch_hook_content( array(
+		'beforeLoop' => 'bp_before_member_messages_loop',
+		'afterLoop'  => 'bp_after_member_messages_loop',
+	) );
+
+	if ( array_filter( $extra_content ) ) {
+		$threads->extraContent = $extra_content;
+	}
+
+	// Remove the bp_current_action() override.
+	$bp->current_action = $reset_action;
+
+	// Return the successfull reply.
 	wp_send_json_success( $threads );
 }
 
diff --git src/bp-templates/bp-nouveau/js/buddypress-messages.js src/bp-templates/bp-nouveau/js/buddypress-messages.js
index 7c1ad32d4..171883d25 100644
--- src/bp-templates/bp-nouveau/js/buddypress-messages.js
+++ src/bp-templates/bp-nouveau/js/buddypress-messages.js
@@ -351,6 +351,13 @@ window.bp = window.bp || {};
 				this.options.box = bp.Nouveau.Messages.box;
 			}
 
+			if ( ! _.isUndefined( resp.extraContent ) ) {
+				_.extend( this.options, _.pick( resp.extraContent, [
+					'beforeLoop',
+					'afterLoop'
+				] ) );
+			}
+
 			return resp.threads;
 		},
 
@@ -463,6 +470,24 @@ window.bp = window.bp || {};
 		}
 	} );
 
+	// Feedback view
+	bp.Views.Hook = bp.Nouveau.Messages.View.extend( {
+		tagName: 'div',
+		template  : bp.template( 'bp-messages-hook' ),
+
+		initialize: function() {
+			this.model = new Backbone.Model( {
+				extraContent: this.options.extraContent
+			} );
+
+			this.el.className = 'bp-messages-hook';
+
+			if ( this.options.className ) {
+				this.el.className += ' ' + this.options.className;
+			}
+		}
+	} );
+
 	bp.Views.messageEditor = bp.Nouveau.Messages.View.extend( {
 		template  : bp.template( 'bp-messages-editor' ),
 
@@ -639,11 +664,14 @@ window.bp = window.bp || {};
 		},
 
 		initialize: function() {
-			// Add the threads parent view
-			this.views.add( new bp.Nouveau.Messages.View( { tagName: 'ul', id: 'message-threads', className: 'message-lists' } ) );
+			var Views = [
+				new bp.Nouveau.Messages.View( { tagName: 'ul', id: 'message-threads', className: 'message-lists' } ),
+				new bp.Views.previewThread( { collection: this.collection } )
+			];
 
-			// Add the preview Active Thread view
-			this.views.add( new bp.Views.previewThread( { collection: this.collection } ) );
+			_.each( Views, function( view ) {
+				this.views.add( view );
+			}, this );
 
 			// Load threads for the active view
 			this.requestThreads();
@@ -659,7 +687,7 @@ window.bp = window.bp || {};
 
 			this.collection.fetch( {
 				data    : _.pick( this.options, 'box' ),
-				success : this.threadsFetched,
+				success : _.bind( this.threadsFetched, this ),
 				error   : this.threadsFetchError
 			} );
 		},
@@ -667,6 +695,16 @@ window.bp = window.bp || {};
 		threadsFetched: function() {
 			bp.Nouveau.Messages.removeFeedback();
 
+			// Display the bp_after_member_messages_loop hook.
+			if ( this.collection.options.afterLoop ) {
+				this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.afterLoop, className: 'after-messages-loop' } ), { at: 1 } );
+			}
+
+			// Display the bp_before_member_messages_loop hook.
+			if ( this.collection.options.beforeLoop ) {
+				this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.beforeLoop, className: 'before-messages-loop' } ), { at: 0 } );
+			}
+
 			// Inform the user about how to use the UI.
 			bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howto, 'info' );
 		},
