diff --git a/config/schema/address.schema.yml b/config/schema/address.schema.yml
index c68463e..9b44f2f 100644
--- a/config/schema/address.schema.yml
+++ b/config/schema/address.schema.yml
@@ -143,6 +143,11 @@ field.widget.settings.address_default:
     default_country:
       type: string
       label: 'Default country'
+    preferred_countries:
+      type: sequence
+      label: 'Preferred countries'
+      sequence:
+        - type: string
 
 views.filter.country_code:
   type: views.filter.in_operator
diff --git a/src/Element/Address.php b/src/Element/Address.php
index 903fe1a..1a05be0 100644
--- a/src/Element/Address.php
+++ b/src/Element/Address.php
@@ -165,10 +165,29 @@ class Address extends FormElement {
       ];
     }
     else {
+      if (!empty($element['#preferred_countries'])) {
+        $preferred_countries = [];
+        foreach ($element['#preferred_countries'] as $preferred_country_code) {
+          if (isset($country_list[$preferred_country_code])) {
+            $preferred_countries[$preferred_country_code] = $country_list[$preferred_country_code];
+            unset($country_list[$preferred_country_code]);
+          }
+        }
+        // @todo Should these be configurable?
+        $preferred_label = (string) t('Preferred');
+        $other_label = (string) t('Other');
+        $country_options = [
+          $preferred_label => $preferred_countries,
+          $other_label => $country_list,
+        ];
+      }
+      else {
+        $country_options = $country_list;
+      }
       $element['country_code'] = [
         '#type' => 'select',
         '#title' => t('Country'),
-        '#options' => $country_list,
+        '#options' => $country_options,
         '#default_value' => $value['country_code'],
         '#required' => $element['#required'],
         '#limit_validation_errors' => [],
diff --git a/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php b/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
index 5f4b6fb..bf7468b 100644
--- a/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
+++ b/src/Plugin/Field/FieldWidget/AddressDefaultWidget.php
@@ -101,6 +101,7 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
   public static function defaultSettings() {
     return [
       'default_country' => NULL,
+      'preferred_countries' => [],
     ] + parent::defaultSettings();
   }
 
@@ -109,6 +110,10 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
    */
   public function settingsForm(array $form, FormStateInterface $form_state) {
     $country_list = $this->countryRepository->getList();
+    $available_countries = $this->getFieldSetting('available_countries');
+    if (!empty($available_countries)) {
+      $country_list = array_intersect_key($country_list, $available_countries);
+    }
     $element = [];
     $element['default_country'] = [
       '#type' => 'select',
@@ -117,6 +122,15 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
       '#default_value' => $this->getSetting('default_country'),
       '#empty_value' => '',
     ];
+    $element['preferred_countries'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Preferred countries'),
+      '#options' => $country_list,
+      '#default_value' => $this->getSetting('preferred_countries'),
+      '#empty_value' => '',
+      '#multiple' => TRUE,
+      '#size' => 10,
+    ];
 
     return $element;
   }
@@ -139,6 +153,18 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
     $summary = [];
     $summary['default_country'] = $this->t('Default country: @country', ['@country' => $default_country]);
 
+    // Display summary for preferred countries setting.
+    $preferred_countries = $this->getSetting('preferred_countries');
+    if (!empty($preferred_countries)) {
+      if (!isset($country_list)) {
+        $country_list = $this->countryRepository->getList();
+      }
+      foreach ($preferred_countries as &$preferred_country) {
+        $preferred_country = $country_list[$preferred_country];
+      }
+      $summary['preferred_countries'] = $this->t('Preferred countries: @countries', array('@countries' => implode(', ', $preferred_countries)));
+    }
+
     return $summary;
   }
 
@@ -202,6 +228,9 @@ class AddressDefaultWidget extends WidgetBase implements ContainerFactoryPluginI
       '#default_value' => $value,
       '#required' => $this->fieldDefinition->isRequired(),
       '#available_countries' => $item->getAvailableCountries(),
+      // #preferred_countries is from a widget setting, not a field setting.
+      '#preferred_countries' => $this->getSetting('preferred_countries'),
+      // #used_fields is from a field setting, not a widget setting.
       '#used_fields' => $this->getFieldSetting('fields'),
     ];
 
