Index: src/wp-admin/includes/user.php
===================================================================
--- src/wp-admin/includes/user.php	(revision 43013)
+++ src/wp-admin/includes/user.php	(working copy)
@@ -627,6 +627,12 @@
 
 	update_post_meta( $request_id, '_wp_user_request_confirmed_timestamp', time() );
 
+	$status = 'request-skipped';
+
+	if ( get_post_status( $request_id ) === $status ) {
+		return;
+	}
+
 	$request = wp_update_post( array(
 		'ID'          => $request_id,
 		'post_status' => 'request-confirmed',
@@ -683,6 +689,7 @@
 				$action_type               = sanitize_text_field( wp_unslash( $_POST['type_of_action'] ) ); // WPCS: input var ok.
 				$username_or_email_address = sanitize_text_field( wp_unslash( $_POST['username_or_email_to_export'] ) ); // WPCS: input var ok.
 				$email_address             = '';
+				$request_confirmation      = sanitize_text_field( $_POST['request_confirmation'] );
 
 				if ( ! in_array( $action_type, _wp_privacy_action_request_types(), true ) ) {
 					add_settings_error(
@@ -713,7 +720,7 @@
 					break;
 				}
 
-				$request_id = wp_create_user_request( $email_address, $action_type );
+				$request_id = wp_create_user_request( $email_address, $action_type, $request_confirmation );
 
 				if ( is_wp_error( $request_id ) ) {
 					add_settings_error(
@@ -733,7 +740,9 @@
 					break;
 				}
 
-				wp_send_user_request( $request_id );
+				if ( 'yes' === $request_confirmation ) {
+					wp_send_user_request( $request_id );
+				}
 
 				add_settings_error(
 					'username_or_email_to_export',
@@ -815,7 +824,11 @@
 			<div class="wp-privacy-request-form-field">
 				<label for="username_or_email_to_export"><?php esc_html_e( 'Username or email address' ); ?></label>
 				<input type="text" required class="regular-text" id="username_or_email_to_export" name="username_or_email_to_export" />
-				<?php submit_button( __( 'Send Request' ), 'secondary', 'submit', false ); ?>
+				<select name="request_confirmation">
+					<option value="yes">With Confirmation</option>
+					<option value="no">Without Confirmation</option>
+				<select>
+				<?php submit_button( __( 'Add Request' ), 'secondary', 'submit', false ); ?>
 			</div>
 			<?php wp_nonce_field( 'personal-data-request' ); ?>
 			<input type="hidden" name="action" value="add_export_personal_data_request" />
@@ -882,7 +895,11 @@
 			<div class="wp-privacy-request-form-field">
 				<label for="username_or_email_to_export"><?php esc_html_e( 'Username or email address' ); ?></label>
 				<input type="text" required class="regular-text" id="username_or_email_to_export" name="username_or_email_to_export" />
-				<?php submit_button( __( 'Send Request' ), 'secondary', 'submit', false ); ?>
+				<select name="request_confirmation">
+					<option value="yes">With Confirmation</option>
+					<option value="no">Without Confirmation</option>
+				<select>
+				<?php submit_button( __( 'Add Request' ), 'secondary', 'submit', false ); ?>
 			</div>
 			<?php wp_nonce_field( 'personal-data-request' ); ?>
 			<input type="hidden" name="action" value="add_remove_personal_data_request" />
@@ -1202,6 +1219,9 @@
 			case 'request-completed':
 				$timestamp = $item->completed_timestamp;
 				break;
+			case 'request-skipped':
+					$timestamp = $item->completed_timestamp;
+				break;
 		}
 
 		echo '<span class="status-label status-' . esc_attr( $status ) . '">';
@@ -1402,6 +1422,26 @@
 					'request_id' => array( $item->ID )
 				), admin_url( 'tools.php?page=export_personal_data' ) ), 'bulk-privacy_requests' ) ) . '">' . esc_html__( 'Remove request' ) . '</a>';
 				break;
+			case 'request-skipped':
+				$exporters       = apply_filters( 'wp_privacy_personal_data_exporters', array() );
+				$exporters_count = count( $exporters );
+				$request_id      = $item->ID;
+				$nonce           = wp_create_nonce( 'wp-privacy-export-personal-data-' . $request_id );
+
+				echo '<div class="export_personal_data" ' .
+					'data-exporters-count="' . esc_attr( $exporters_count ) . '" ' .
+					'data-request-id="' . esc_attr( $request_id ) . '" ' .
+					'data-nonce="' . esc_attr( $nonce ) .
+					'">';
+				?>
+				<span class="export_personal_data_idle"><a class="button" href="#" ><?php _e( 'Download Personal Data' ); ?></a></span>
+				<span style="display:none" class="export_personal_data_processing button updating-message" ><?php _e( 'Downloading Data...' ); ?></span>
+				<span style="display:none" class="export_personal_data_success success-message"><?php _e( 'Download Succesful!' ); ?></span>
+				<span style="display:none" class="export_personal_data_failed"><?php _e( 'Download Failed!' ); ?> <a href="#" ><?php _e( 'Retry' ); ?></a></span>
+				<?php
+
+				echo '</div>';
+				break;
 		}
 	}
 }
@@ -1484,6 +1524,7 @@
 				esc_html_e( 'Waiting for confirmation' );
 				break;
 			case 'request-confirmed':
+			case 'request-skipped':
 				$erasers       = apply_filters( 'wp_privacy_personal_data_erasers', array() );
 				$erasers_count = count( $erasers );
 				$request_id    = $item->ID;
Index: src/wp-includes/post.php
===================================================================
--- src/wp-includes/post.php	(revision 43013)
+++ src/wp-includes/post.php	(working copy)
@@ -350,6 +350,15 @@
 			'exclude_from_search' => false,
 		)
 	);
+
+	register_post_status(
+		'request-skipped', array(
+			'label'               => _x( 'Confirmation Skipped', 'request status' ),
+			'internal'            => true,
+			'_builtin'            => true, /* internal use only. */
+			'exclude_from_search' => false,
+		)
+	);
 }
 
 /**
Index: src/wp-includes/user.php
===================================================================
--- src/wp-includes/user.php	(revision 43013)
+++ src/wp-includes/user.php	(working copy)
@@ -2880,12 +2880,14 @@
  *
  * @param string $email_address User email address. This can be the address of a registered or non-registered user.
  * @param string $action_name   Name of the action that is being confirmed. Required.
+ * @param string $request_confirmation Option (yes/no) if the admins wants to send a confirmation e-mail to the user.
  * @param array  $request_data  Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
  * @return int|WP_Error Returns the request ID if successful, or a WP_Error object on failure.
  */
-function wp_create_user_request( $email_address = '', $action_name = '', $request_data = array() ) {
-	$email_address = sanitize_email( $email_address );
-	$action_name   = sanitize_key( $action_name );
+function wp_create_user_request( $email_address = '', $action_name = '', $request_confirmation = '', $request_data = array() ) {
+	$email_address        = sanitize_email( $email_address );
+	$action_name          = sanitize_key( $action_name );
+	$request_confirmation = sanitize_text_field( $request_confirmation );
 
 	if ( ! is_email( $email_address ) ) {
 		return new WP_Error( 'invalid_email', __( 'Invalid email address' ) );
@@ -2911,12 +2913,18 @@
 		return new WP_Error( 'duplicate_request', __( 'A request for this email address already exists.' ) );
 	}
 
+	if ( 'yes' === $request_confirmation ) {
+		$status = 'request-pending';
+	} else {
+		$status = 'request-skipped';
+	}
+
 	$request_id = wp_insert_post( array(
 		'post_author'   => $user_id,
 		'post_name'     => $action_name,
 		'post_title'    => $email_address,
 		'post_content'  => wp_json_encode( $request_data ),
-		'post_status'   => 'request-pending',
+		'post_status'   => $status,
 		'post_type'     => 'user_request',
 		'post_date'     => current_time( 'mysql', false ),
 		'post_date_gmt' => current_time( 'mysql', true ),
