diff --git a/config/install/webform.settings.yml b/config/install/webform.settings.yml
index 1a16206a7..cc04ef810 100644
--- a/config/install/webform.settings.yml
+++ b/config/install/webform.settings.yml
@@ -1,5 +1,6 @@
 settings:
   default_status: open
+  default_page: true
   default_page_base_path: /form
   default_ajax: false
   default_ajax_effect: fade
@@ -30,7 +31,7 @@ settings:
     messages messages--error
     messages messages--warning
     messages messages--status
-    
+
   button_classes: ''
   default_wizard_prev_button_label: '< Previous'
   default_wizard_next_button_label: 'Next >'
@@ -76,15 +77,15 @@ settings:
     messages messages--error
     messages messages--warning
     messages messages--status
-    
+
   confirmation_classes: |
     messages messages--error
     messages messages--warning
     messages messages--status
-    
+
   confirmation_back_classes: |
     button
-    
+
   default_limit_total_message: 'No more submissions are permitted.'
   default_limit_user_message: 'No more submissions are permitted.'
   default_share: false
@@ -166,14 +167,14 @@ element:
     messages messages--error
     messages messages--warning
     messages messages--status
-    
+
   classes: |
     container-inline clearfix
     form--inline clearfix
     messages messages--error
     messages messages--warning
     messages messages--status
-    
+
   horizontal_rule_classes: |
     webform-horizontal-rule--solid
     webform-horizontal-rule--dashed
@@ -184,7 +185,7 @@ element:
     webform-horizontal-rule--thick
     webform-horizontal-rule--flaired
     webform-horizontal-rule--glyph
-    
+
   default_description_display: ''
   default_more_title: More
   default_section_title_tag: h2
@@ -227,16 +228,16 @@ mail:
   default_body_text: |
     Submitted on [webform_submission:created]
     Submitted by: [webform_submission:user]
-    
+
     Submitted values are:
     [webform_submission:values]
-    
+
   default_body_html: |
     <p>Submitted on [webform_submission:created]</p>
     <p>Submitted by: [webform_submission:user]</p>
     <p>Submitted values are:</p>
     [webform_submission:values]
-    
+
   roles: {  }
 test:
   types: |
@@ -279,7 +280,7 @@ test:
     webform_time:
       - '09:00'
       - '17:00'
-    
+
   names: |
     first_name:
       - 'John'
@@ -319,7 +320,7 @@ test:
       - 'Loremipsum'
       - 'Oratione'
       - 'Dixisset'
-    
+
 ui:
   video_display: dialog
   details_save: true
diff --git a/config/schema/webform.settings.schema.yml b/config/schema/webform.settings.schema.yml
index 7f692386d..829eaa813 100644
--- a/config/schema/webform.settings.schema.yml
+++ b/config/schema/webform.settings.schema.yml
@@ -9,6 +9,9 @@ webform.settings:
         default_status:
           type: string
           label: 'Default status'
+        default_page:
+          type: boolean
+          label: 'Default enable page'
         default_page_base_path:
           type: string
           label: 'Default base path'
diff --git a/includes/webform.install.update.inc b/includes/webform.install.update.inc
index 5062865c5..2c1a0a40b 100644
--- a/includes/webform.install.update.inc
+++ b/includes/webform.install.update.inc
@@ -4303,3 +4303,10 @@ function webform_update_8636() {
 
   return implode(PHP_EOL, $messages);
 }
+
+/**
+ * Issue #3249092: Disable 'Allow users to post submissions from a dedicated URL' for all webforms.
+ */
+function webform_update_8637() {
+  _webform_update_admin_settings();
+}
diff --git a/src/Entity/Webform.php b/src/Entity/Webform.php
index 84feec57b..d830be62c 100644
--- a/src/Entity/Webform.php
+++ b/src/Entity/Webform.php
@@ -779,8 +779,12 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
    * {@inheritdoc}
    */
   public function hasPage() {
-    $settings = $this->getSettings();
-    return $settings['page'] ? TRUE : FALSE;
+    if (\Drupal::config('webform.settings')->get('settings.default_page') === FALSE) {
+      return FALSE;
+    }
+    else {
+      return (boolean) $this->getSetting('page');
+    }
   }
 
   /**
@@ -2420,7 +2424,7 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
 
     // If 'Allow users to post submission from a dedicated URL' is disabled,
     // delete all existing paths.
-    if (empty($this->getSetting('page'))) {
+    if (empty($this->hasPage())) {
       $this->deletePaths();
       return;
     }
diff --git a/src/EntitySettings/WebformEntitySettingsGeneralForm.php b/src/EntitySettings/WebformEntitySettingsGeneralForm.php
index 6fd9d9738..919c13444 100644
--- a/src/EntitySettings/WebformEntitySettingsGeneralForm.php
+++ b/src/EntitySettings/WebformEntitySettingsGeneralForm.php
@@ -167,6 +167,7 @@ class WebformEntitySettingsGeneralForm extends WebformEntitySettingsBaseForm {
       '#type' => 'details',
       '#title' => $this->t('URL path settings'),
       '#open' => TRUE,
+      '#access' => ($this->config('webform.settings')->get('settings.default_page') !== FALSE),
     ];
     $default_page_base_path = $default_settings['default_page_base_path'];
     if ($default_page_base_path) {
diff --git a/src/Form/AdminConfig/WebformAdminConfigFormsForm.php b/src/Form/AdminConfig/WebformAdminConfigFormsForm.php
index aa6d8f7b7..9ad3b62af 100644
--- a/src/Form/AdminConfig/WebformAdminConfigFormsForm.php
+++ b/src/Form/AdminConfig/WebformAdminConfigFormsForm.php
@@ -137,6 +137,13 @@ class WebformAdminConfigFormsForm extends WebformAdminConfigBaseForm {
       '#open' => TRUE,
       '#tree' => TRUE,
     ];
+    $form['page_settings']['default_page'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Allow users to post submissions from a dedicated URL for all webform'),
+      '#description' => $this->t('If unchecked, all webform must added to your webform using a node, block, or paragraph.'),
+      '#return_value' => TRUE,
+      '#default_value' => $settings['default_page'],
+    ];
     $form['page_settings']['default_page_base_path'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Default base path for webform URLs'),
diff --git a/src/Theme/WebformThemeNegotiator.php b/src/Theme/WebformThemeNegotiator.php
index d0804de09..679fe25fa 100644
--- a/src/Theme/WebformThemeNegotiator.php
+++ b/src/Theme/WebformThemeNegotiator.php
@@ -99,7 +99,7 @@ class WebformThemeNegotiator implements ThemeNegotiatorInterface {
 
     // If webform route and page is disabled, apply admin theme to
     // the webform routes.
-    if ($is_webform_route && !$webform->getSetting('page')) {
+    if ($is_webform_route && !$webform->hasPage()) {
       return ($this->user->hasPermission('view the administration theme'))
         ? $this->configFactory->get('system.theme')->get('admin')
         : '';
diff --git a/src/WebformEntityAccessControlHandler.php b/src/WebformEntityAccessControlHandler.php
index 78ac24ccf..29bfc35cc 100644
--- a/src/WebformEntityAccessControlHandler.php
+++ b/src/WebformEntityAccessControlHandler.php
@@ -227,7 +227,7 @@ class WebformEntityAccessControlHandler extends EntityAccessControlHandler imple
         }
 
         // Block access if the webform does not have a page URL.
-        if (!$entity->getSetting('page')) {
+        if (!$entity->hasPage()) {
           $source_entity = $this->webformSourceEntityManager->getSourceEntity('webform');
           if (!$source_entity) {
             return WebformAccessResult::forbidden($entity);
diff --git a/src/WebformInterface.php b/src/WebformInterface.php
index a9ab5ff5a..593dce097 100644
--- a/src/WebformInterface.php
+++ b/src/WebformInterface.php
@@ -171,7 +171,7 @@ interface WebformInterface extends ConfigEntityInterface, EntityWithPluginCollec
    * Determine if the webform has page or is attached to other entities.
    *
    * @return bool
-   *   TRUE if the webform is a page with dedicated path.
+   *   TRUE if the webform has a page with dedicated path.
    */
   public function hasPage();
 
diff --git a/src/WebformSubmissionForm.php b/src/WebformSubmissionForm.php
index ee206df41..53cb1354b 100644
--- a/src/WebformSubmissionForm.php
+++ b/src/WebformSubmissionForm.php
@@ -1095,7 +1095,7 @@ class WebformSubmissionForm extends ContentEntityForm {
     if ($this->isGet()
       && $this->isRoute('webform.canonical')
       && $this->getRouteMatch()->getRawParameter('webform') === $webform->id()
-      && !$this->getWebform()->getSetting('page')) {
+      && !$this->getWebform()->hasPage()) {
       $this->getMessageManager()->display(WebformMessageManagerInterface::ADMIN_PAGE, 'info');
     }
 
diff --git a/tests/src/Unit/WebformEntityAccessControlHandlerTest.php b/tests/src/Unit/WebformEntityAccessControlHandlerTest.php
index e30071d2c..8653fcc8c 100644
--- a/tests/src/Unit/WebformEntityAccessControlHandlerTest.php
+++ b/tests/src/Unit/WebformEntityAccessControlHandlerTest.php
@@ -165,8 +165,8 @@ class WebformEntityAccessControlHandlerTest extends UnitTestCase {
       ->willReturnMap([
         ['create', $account, TRUE, AccessResult::allowed()],
       ]);
-    $webform->method('getSetting')->willReturnMap([
-      ['page', FALSE, TRUE],
+    $webform->method('hasPage')->willReturnOnConsecutiveCalls([
+      FALSE, TRUE,
     ]);
     $webform->method('getCacheMaxAge')
       ->willReturn(Cache::PERMANENT);