diff --git a/botcha.module b/botcha.module
index 5f27010..acecac8 100644
--- a/botcha.module
+++ b/botcha.module
@@ -27,6 +27,11 @@
   'You must be a human, not a spam bot, to submit forms on this website.');
 
 /**
+ * Special BOTCHA form ID to target all webforms.
+ */
+define('BOTCHA_FORM_ID_ALL_WEBFORMS', '__webform_client_form__all__');
+
+/**
  * Filter out sensitive form data for logging
  * Recursive.
  */
diff --git a/controller/application/botcha.application.controller.inc b/controller/application/botcha.application.controller.inc
index b2adda5..2a975e8 100644
--- a/controller/application/botcha.application.controller.inc
+++ b/controller/application/botcha.application.controller.inc
@@ -70,6 +70,13 @@ public function form_alter(&$form, &$form_state, $form_id) {
     // Get an instance of BOTCHA form controller.
     $form_controller = $this->getController(Botcha::CONTROLLER_TYPE_FORM);
     $botcha_form = $form_controller->getForm($form_id, FALSE);
+
+    // Special handling of ALL webforms, if specific webform form ID is not
+    // registered already.
+    if ($botcha_form instanceof BotchaFormNone && preg_match('/^webform_client_form_\d+$/', $form_id)) {
+      $botcha_form = $form_controller->getForm(BOTCHA_FORM_ID_ALL_WEBFORMS, FALSE);
+    }
+
     // Check if it is allowed to protect.
     if ($botcha_form->isEnabled()) {
       // Add admin links functionality.
@@ -147,6 +154,9 @@ public function help($path, $arg) {
           $output .= '<p>' . t('Other forms will be added automatically based on CAPTCHA settings when the option "%usecaptcha" is enabled.',
             array('%usecaptcha' => t('Add BOTCHA to forms selected for CAPTCHA'))) . '</p>';
         }
+        if (module_exists('webform')) {
+          $output .= '<p>' . t('If <strong>all</strong> webforms should be added at once, use the special "%form_id" form ID (without quotes).' , array('%form_id' => BOTCHA_FORM_ID_ALL_WEBFORMS)) . '</p>';
+        }
         $output .= '<p>' . t('Forms served to users with the "%skipbotcha" <a href="@perm">permission</a> won\'t be protected. Be sure to grant this permission to the trusted users (e.g. site administrators). If you want to test a protected form, be sure to do it as a user without the "%skipbotcha" permission (e.g. as anonymous user).',
           // @todo Abstract it.
           //array('%skipbotcha' => t('skip BOTCHA'), '@perm' => url('admin/user/permissions', array('fragment' => 'module-' . 'botcha')))) . '</p>';
