diff --git src/bp-core/classes/class-bp-invitation-manager.php src/bp-core/classes/class-bp-invitation-manager.php
index a8bb047ce..aca7b6089 100644
--- src/bp-core/classes/class-bp-invitation-manager.php
+++ src/bp-core/classes/class-bp-invitation-manager.php
@@ -139,7 +139,7 @@ abstract class BP_Invitation_Manager {
 
 		// "Send" the invite if necessary.
 		if ( $invite_id && $r['send_invite'] ) {
-			$sent = $this->send_invitation_by_id( $invite_id );
+			$sent = $this->send_invitation_by_id( $invite_id, $args );
 			if ( ! $sent ) {
 				return false;
 			}
@@ -154,11 +154,13 @@ abstract class BP_Invitation_Manager {
 	 * @since 5.0.0
 	 * @access public
 	 *
-	 * @param int $invitation_id ID of invitation to send.
+	 * @param int   $invitation_id ID of invitation to send.
+ 	 * @param array $args          Invitation characteristics used
+ 	 *                             to override certain sending behaviors.
 	 *
 	 * @return int|bool The number of rows updated, or false on error.
 	 */
-	public function send_invitation_by_id( $invitation_id = 0 ) {
+	public function send_invitation_by_id( $invitation_id = 0, $args = array() ) {
 		$updated = false;
 
 		$invitation = new BP_Invitation( $invitation_id );
@@ -196,7 +198,7 @@ abstract class BP_Invitation_Manager {
 		// Perform the send action.
 		$this->run_send_action( $invitation );
 
-		$updated = BP_Invitation::mark_sent( $invitation->id );
+		$updated = BP_Invitation::mark_sent( $invitation->id, $args );
 
 		return $updated;
 	}
@@ -305,11 +307,13 @@ abstract class BP_Invitation_Manager {
 	 * @since 5.0.0
 	 * @access public
 	 *
-	 * @param int $request_id ID of request to send.
+	 * @param int   $request_id ID of request to send.
+ 	 * @param array $args       Invitation characteristics used
+ 	 *                          to override certain sending behaviors.
 	 *
 	 * @return int|bool The number of rows updated, or false on error.
 	 */
-	public function send_request_notification_by_id( $request_id = 0 ) {
+	public function send_request_notification_by_id( $request_id = 0, $args = array() ) {
 		$updated = false;
 
 		$request = new BP_Invitation( $request_id );
@@ -342,7 +346,7 @@ abstract class BP_Invitation_Manager {
 		// Perform the send action.
 		$this->run_send_action( $request );
 
-		$updated = BP_Invitation::mark_sent( $request->id );
+		$updated = BP_Invitation::mark_sent( $request->id, $args );
 
 		return $updated;
 	}
@@ -485,7 +489,7 @@ abstract class BP_Invitation_Manager {
 		$success = $this->run_acceptance_action( 'invite', $r );
 		if ( $success ) {
 			// Mark invitations & requests to this item for this user.
-			$this->mark_accepted( $r );
+			$this->mark_accepted( $r, $args );
 
 			// Allow plugins an opportunity to act on the change.
 			do_action( 'bp_invitations_accepted_invite', $r );
@@ -531,7 +535,7 @@ abstract class BP_Invitation_Manager {
 		$success = $this->run_acceptance_action( 'request', $r );
 		if ( $success ) {
 			// Update/Delete all related invitations & requests to this item for this user.
-			$this->mark_accepted( $r );
+			$this->mark_accepted( $r, $args );
 
 			// Allow plugins an opportunity to act on the change.
 			do_action( 'bp_invitations_accepted_request', $r );
@@ -618,11 +622,12 @@ abstract class BP_Invitation_Manager {
 	 *
 	 * @since 5.0.0
 	 *
-	 * @param int $id The ID of the invitation to mark as sent.
+	 * @see BP_Invitation::mark_accepted()
+	 *      for a description of arguments.
 	 * @return bool True on success, false on failure.
 	 */
-	public function mark_accepted_by_id( $id ) {
-		return BP_Invitation::mark_accepted( $id );
+	public function mark_accepted_by_id( $id, $args ) {
+		return BP_Invitation::mark_accepted( $id, $args );
 	}
 
 	/**
@@ -635,9 +640,9 @@ abstract class BP_Invitation_Manager {
 	 * @see BP_Invitation::mark_accepted_by_data()
 	 *      for a description of arguments.
 	 */
-	public function mark_accepted( $args ) {
+	public function mark_accepted( $args, $passed_args ) {
 		$args['class'] = $this->class_name;
-		return BP_Invitation::mark_accepted_by_data( $args );
+		return BP_Invitation::mark_accepted_by_data( $args, $passed_args );
 	}
 
 	/** Delete ********************************************************************/
diff --git src/bp-core/classes/class-bp-invitation.php src/bp-core/classes/class-bp-invitation.php
index b7ca0d7eb..f8a2f7226 100644
--- src/bp-core/classes/class-bp-invitation.php
+++ src/bp-core/classes/class-bp-invitation.php
@@ -640,6 +640,12 @@ class BP_Invitation {
 			}
 		}
 
+		// date_modified
+		if ( ! empty( $args['date_modified'] ) ) {
+			$where_clauses['data']['date_modified'] = $args['date_modified'];
+			$where_clauses['format'][] = '%s';
+		}
+
 		return $where_clauses;
 	}
 
@@ -987,9 +993,11 @@ class BP_Invitation {
 	 *
 	 * @since 5.0.0
 	 *
-	 * @param int $id The ID of the invitation to mark as sent.
+	 * @param int   $id   The ID of the invitation to mark as sent.
+ 	 * @param array $args Invitation characteristics used
+ 	 *                    to override certain sending behaviors.
 	 */
-	public static function mark_sent( $id = 0 ) {
+	public static function mark_sent( $id = 0, $args = array() ) {
 
 		if ( ! $id ) {
 			return false;
@@ -997,8 +1005,13 @@ class BP_Invitation {
 
 		// Values to be updated.
 		$update_args = array(
-			'invite_sent' => 'sent',
+			'invite_sent'   => 'sent',
+			'date_modified' => bp_core_current_time(),
 		);
+		// Respect a specified `date-modified`
+		if ( ! empty( $args['date_modified'] ) ) {
+			$update_args['date_modified'] = $args['date_modified'];
+		}
 
 		// WHERE clauses.
 		$where_args = array(
@@ -1014,14 +1027,21 @@ class BP_Invitation {
 	 *
 	 * @since 5.0.0
 	 *
- 	 * @param array $args See BP_Invitation::update().
+ 	 * @param array $args        See BP_Invitation::update().
+ 	 * @param array $passed_args Invitation characteristics used
+ 	 *                           to override certain sending behaviors.
 	 */
-	public static function mark_sent_by_data( $args ) {
+	public static function mark_sent_by_data( $args, $passed_args = array() ) {
 
 		// Values to be updated.
 		$update_args = array(
-			'invite_sent' => 'sent',
+			'invite_sent'   => 'sent',
+			'date_modified' => bp_core_current_time(),
 		);
+		// Respect a specified `date-modified`
+		if ( ! empty( $passed_args['date_modified'] ) ) {
+			$update_args['date_modified'] = $passed_args['date_modified'];
+		}
 
 		return self::update( $update_args, $args );
 	}
@@ -1033,9 +1053,11 @@ class BP_Invitation {
 	 *
 	 * @since 5.0.0
 	 *
-	 * @param int $id The ID of the invitation to mark as sent.
+	 * @param int   $id   The ID of the invitation to mark as sent.
+ 	 * @param array $args Invitation characteristics used
+ 	 *                    to override certain acceptance behaviors.
 	 */
-	public static function mark_accepted( $id = 0 ) {
+	public static function mark_accepted( $id = 0, $args = array() ) {
 
 		if ( ! $id ) {
 			return false;
@@ -1043,8 +1065,13 @@ class BP_Invitation {
 
 		// Values to be updated.
 		$update_args = array(
-			'accepted' => 'accepted',
+			'accepted'      => 'accepted',
+			'date_modified' => bp_core_current_time(),
 		);
+		// Respect a specified `date-modified`
+		if ( ! empty( $args['date_modified'] ) ) {
+			$update_args['date_modified'] = $args['date_modified'];
+		}
 
 		// WHERE clauses.
 		$where_args = array(
@@ -1060,14 +1087,21 @@ class BP_Invitation {
 	 *
 	 * @since 5.0.0
 	 *
- 	 * @param array $args See BP_Invitation::update().
+ 	 * @param array $args        See BP_Invitation::update().
+  	 * @param array $passed_args Invitation characteristics used
+ 	 *                           to override certain acceptance behaviors.
 	 */
-	public static function mark_accepted_by_data( $args ) {
+	public static function mark_accepted_by_data( $args, $passed_args = array() ) {
 
 		// Values to be updated.
 		$update_args = array(
-			'accepted' => 'accepted',
+			'accepted'      => 'accepted',
+			'date_modified' => bp_core_current_time(),
 		);
+		// Respect a specified `date-modified`
+		if ( ! empty( $args['date_modified'] ) ) {
+			$update_args['date_modified'] = $args['date_modified'];
+		}
 
 		return self::update( $update_args, $args );
 	}
diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
index d1af9ad1f..e8c5639b0 100644
--- src/bp-groups/bp-groups-functions.php
+++ src/bp-groups/bp-groups-functions.php
@@ -2044,7 +2044,7 @@ function groups_send_membership_request( ...$args ) {
 
 	// If a new request was created, send the emails.
 	if ( $request_id && is_int( $request_id ) ) {
-		$invites_class->send_request_notification_by_id( $request_id );
+		$invites_class->send_request_notification_by_id( $request_id, $args );
 		$admins = groups_get_group_admins( $r['group_id'] );
 
 		/**
diff --git src/bp-groups/classes/class-bp-groups-invitation-manager.php src/bp-groups/classes/class-bp-groups-invitation-manager.php
index 76d4e13c7..874aa0d25 100644
--- src/bp-groups/classes/class-bp-groups-invitation-manager.php
+++ src/bp-groups/classes/class-bp-groups-invitation-manager.php
@@ -140,7 +140,7 @@ class BP_Groups_Invitation_Manager extends BP_Invitation_Manager {
 	 *
 	 * @param array $args.
 	 */
-	public function mark_accepted( $args ) {
+	public function mark_accepted( $args, $passed_args ) {
 		// Delete all existing invitations/requests to this group for this user.
 		$this->delete( array(
 			'user_id' => $args['user_id'],
diff --git tests/phpunit/testcases/core/invitations.php tests/phpunit/testcases/core/invitations.php
index 0646557a4..d8f1f4efb 100644
--- tests/phpunit/testcases/core/invitations.php
+++ tests/phpunit/testcases/core/invitations.php
@@ -332,4 +332,52 @@ include_once BP_TESTS_DIR . 'assets/invitations-extensions.php';
 		$this->set_current_user( $old_current_user );
 	}
 
+	public function test_bp_invitations_add_request_with_date_modified() {
+		$old_current_user = get_current_user_id();
+
+		$u1 = $this->factory->user->create();
+		$this->set_current_user( $u1 );
+
+		$invites_class = new BPTest_Invitation_Manager_Extension();
+
+		$time = gmdate( 'Y-m-d H:i:s', time() - 100 );
+		$args = array(
+			'user_id'           => $u1,
+			'item_id'           => 7,
+			'date_modified'     => $time,
+		);
+		$r1 = $invites_class->add_request( $args );
+
+		$req = new BP_Invitation( $r1 );
+		$this->assertEquals( $time, $req->date_modified );
+
+		$this->set_current_user( $old_current_user );
+	}
+
+	public function test_bp_invitations_add_invite_with_date_modified() {
+		$old_current_user = get_current_user_id();
+
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$this->set_current_user( $u1 );
+
+		$invites_class = new BPTest_Invitation_Manager_Extension();
+		$time = gmdate( 'Y-m-d H:i:s', time() - 100 );
+
+		// Create an invitation.
+		$invite_args = array(
+			'user_id'           => $u2,
+			'inviter_id'		=> $u1,
+			'item_id'           => 1,
+			'send_invite'       => 1,
+			'date_modified'     => $time,
+		);
+		$i1 = $invites_class->add_invitation( $invite_args );
+
+		$inv = new BP_Invitation( $i1 );
+		$this->assertEquals( $time, $inv->date_modified );
+
+		$this->set_current_user( $old_current_user );
+	}
+
 }
