diff --git a/core/modules/contact/config/install/contact.settings.yml b/core/modules/contact/config/install/contact.settings.yml
index f4ae0c2..fe8a59b 100644
--- a/core/modules/contact/config/install/contact.settings.yml
+++ b/core/modules/contact/config/install/contact.settings.yml
@@ -3,3 +3,4 @@ flood:
   limit: 5
   interval: 3600
 user_default_enabled: true
+contact_default_scope: 0
diff --git a/core/modules/contact/config/schema/contact.schema.yml b/core/modules/contact/config/schema/contact.schema.yml
index e8df71a..4a85fc0 100644
--- a/core/modules/contact/config/schema/contact.schema.yml
+++ b/core/modules/contact/config/schema/contact.schema.yml
@@ -43,6 +43,9 @@ contact.settings:
     user_default_enabled:
       type: boolean
       label: 'Personal contact form enabled by default'
+    contact_default_scope:
+      type: integer
+      label: 'Personal contact form enabled by default for existing users'
 
 migrate.source.d6_contact_settings:
   type: migrate_source_sql
diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module
index 1f479f2..893e48e 100644
--- a/core/modules/contact/contact.module
+++ b/core/modules/contact/contact.module
@@ -220,10 +220,24 @@ function contact_form_user_admin_settings_alter(&$form, FormStateInterface $form
   );
   $form['contact']['contact_default_status'] = array(
     '#type' => 'checkbox',
-    '#title' => t('Enable the personal contact form by default for new users'),
-    '#description' => t('Changing this setting will not affect existing users.'),
+    '#title' => t('Enable the personal contact form by default.'),
     '#default_value' => \Drupal::configFactory()->getEditable('contact.settings')->get('user_default_enabled'),
   );
+  $form['contact']['contact_default_scope'] = array(
+    '#type' => 'radios',
+    '#title' => '',
+    '#default_value' => \Drupal::configFactory()->getEditable('contact.settings')->get('contact_default_scope'),
+    '#options' => array(
+      t('For new users only.'),
+      t('For new and existing users.'),
+    ),
+    '#states' => array(
+      'visible' => array(
+        ':input[name="contact_default_status"]' => array('checked' => TRUE),
+      ),
+    ),
+  );
+
   // Add submit handler to save contact configuration.
   $form['#submit'][] = 'contact_form_user_admin_settings_submit';
 }
@@ -237,4 +251,7 @@ function contact_form_user_admin_settings_submit($form, FormStateInterface $form
   \Drupal::configFactory()->getEditable('contact.settings')
     ->set('user_default_enabled', $form_state->getValue('contact_default_status'))
     ->save();
+  \Drupal::configFactory()->getEditable('contact.settings')
+    ->set('contact_default_scope', $form_state->getValue('contact_default_scope'))
+    ->save();
 }
diff --git a/core/modules/contact/src/Access/ContactPageAccess.php b/core/modules/contact/src/Access/ContactPageAccess.php
index 6b78784..f0e6904 100644
--- a/core/modules/contact/src/Access/ContactPageAccess.php
+++ b/core/modules/contact/src/Access/ContactPageAccess.php
@@ -94,7 +94,7 @@ public function access(UserInterface $user, AccountInterface $account) {
     // configured default is disabled.
     $contact_settings = $this->configFactory->get('contact.settings');
     $access->cacheUntilConfigurationChanges($contact_settings);
-    if (!isset($account_data) && !$contact_settings->get('user_default_enabled')) {
+    if (!isset($account_data) && !$contact_settings->get('user_default_enabled') && $contact_settings->get('contact_default_scope')) {
       return $access;
     }
 
diff --git a/core/modules/contact/src/Tests/ContactPersonalTest.php b/core/modules/contact/src/Tests/ContactPersonalTest.php
index 031ee75..8426b4a 100644
--- a/core/modules/contact/src/Tests/ContactPersonalTest.php
+++ b/core/modules/contact/src/Tests/ContactPersonalTest.php
@@ -221,6 +221,16 @@ function testPersonalContactAccess() {
 
     $this->drupalGet('user/' . $this->contactUser->id() . '/contact');
     $this->assertResponse(200);
+
+    // Test "Enable by default" for existing users.
+    $this->moduleInstaller()->uninstall(['contact']);
+    $this->contactUserPreEnable = $this->drupalCreateUser();
+    $this->moduleInstaller()->install(['contact']);
+    $edit = ['contact_default_status' => FALSE, 'contact_default_scope' => 1];
+    $this->drupalPostForm('admin/config/people/accounts', $edit, t('Save configuration'));
+    $this->drupalGet('user/' . $this->contactUserPreEnable->id() . '/contact');
+    $this->assertResponse(200);
+
   }
 
   /**
