diff --git a/bot/reviewbot/processing/review.py b/bot/reviewbot/processing/review.py
index 3766d4f3862945a81f1b39cf431b07c309aa5150..3c87004cbbfac989cbc903d9ec8dc000d14912fa 100644
--- a/bot/reviewbot/processing/review.py
+++ b/bot/reviewbot/processing/review.py
@@ -736,7 +736,8 @@ class Review(object):
             body_top_rich_text=True,
             body_bottom=self.body_bottom,
             diff_comments=json.dumps(self.comments),
-            general_comments=json.dumps(self.general_comments))
+            general_comments=json.dumps(self.general_comments),
+            to_owner_only=self.settings.get('notify_owner_only', False))
 
     @property
     def has_comments(self):
diff --git a/extension/reviewbotext/forms.py b/extension/reviewbotext/forms.py
index c096b479124fbb94e28cc52a58031e3dd6ce0f60..c05e34d8a1359f1ef35ff8c8bbd15de15daf0c1d 100644
--- a/extension/reviewbotext/forms.py
+++ b/extension/reviewbotext/forms.py
@@ -28,10 +28,11 @@ class ReviewBotConfigForm(IntegrationConfigForm):
     """
 
     COMMENT_ON_UNMODIFIED_CODE_DEFAULT = False
-    OPEN_ISSUES_DEFAULT = True
     DROP_OLD_ISSUES_DEFAULT = True
-    RUN_MANUALLY_DEFAULT = False
+    OPEN_ISSUES_DEFAULT = True
     MAX_COMMENTS_DEFAULT = 30
+    NOTIFY_OWNER_ONLY_DEFAULT = False
+    RUN_MANUALLY_DEFAULT = False
 
     #: When to run this configuration.
     conditions = ConditionsField(
@@ -82,7 +83,24 @@ class ReviewBotConfigForm(IntegrationConfigForm):
                     'resulting page can be very slow in some browsers.'),
         initial=MAX_COMMENTS_DEFAULT)
 
-    def __init__(self, *args, **kwargs):
+    #: Whether to send notifications only to the owner of the review request.
+    #:
+    #: Version Added:
+    #:     4.1
+    notify_owner_only = forms.BooleanField(
+        label=_('Notify only the review request owner.'),
+        required=False,
+        help_text=_(
+            'When enabled, e-mail notifications for reviews created by the '
+            'tool will only be sent to the owner of the review request.'
+        ),
+        initial=NOTIFY_OWNER_ONLY_DEFAULT)
+
+    def __init__(
+        self,
+        *args,
+        **kwargs,
+    ) -> None:
         """Initialize the form.
 
         Args:
@@ -92,7 +110,7 @@ class ReviewBotConfigForm(IntegrationConfigForm):
             **kwargs (dict):
                 Keyword arguments for the form.
         """
-        super(ReviewBotConfigForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
         from reviewbotext.extension import ReviewBotExtension
         extension = ReviewBotExtension.instance
@@ -100,7 +118,7 @@ class ReviewBotConfigForm(IntegrationConfigForm):
         self.css_bundle_names = [extension.get_bundle_id('integration-config')]
         self.js_bundle_names = [extension.get_bundle_id('integration-config')]
 
-    def load(self):
+    def load(self) -> None:
         """Load the form."""
         if 'tool_options' not in self.fields:
             self.fields['tool_options'] = forms.CharField(
@@ -118,9 +136,12 @@ class ReviewBotConfigForm(IntegrationConfigForm):
             self.fields['drop_old_issues'].initial = False
             self.fields['run_manually'].initial = False
 
-        super(ReviewBotConfigForm, self).load()
+        super().load()
 
-    def serialize_tool_field(self, value):
+    def serialize_tool_field(
+        self,
+        value: Tool,
+    ) -> int:
         """Serialize the tool field.
 
         This takes the value from the :py:attr:`tool field <tool>` and
@@ -136,19 +157,26 @@ class ReviewBotConfigForm(IntegrationConfigForm):
         """
         return value.pk
 
-    def deserialize_tool_field(self, value):
+    def deserialize_tool_field(
+        self,
+        value: int,
+    ) -> Tool:
         """Deserialize the tool field.
 
         This takes the serialized version (pks) and turns it back into a Tool
         object.
 
         Args:
-            value (list of int):
+            value (int):
                 The serialized value.
 
         Returns:
             reviewbotext.models.Tool:
             The deserialized value.
+
+        Raises:
+            django.core.exceptions.ValidationError:
+                The tool does not exist.
         """
         try:
             return Tool.objects.get(pk=value)
@@ -168,12 +196,13 @@ class ReviewBotConfigForm(IntegrationConfigForm):
             (_('What tool should be run?'), {
                 'fields': ('tool',),
             }),
-            (_('Tool options'), {
+            (_('Options'), {
                 'fields': ('comment_on_unmodified_code',
                            'open_issues',
                            'drop_old_issues',
                            'max_comments',
-                           'tool_options',
-                           'run_manually'),
+                           'notify_owner_only',
+                           'run_manually',
+                           'tool_options',),
             }),
         )
diff --git a/extension/reviewbotext/integration.py b/extension/reviewbotext/integration.py
index 70bba2333b5945adae952c7d24e88f1fd2315481..6a31d9831e93b15b7b700b66ce346ae38c510490 100644
--- a/extension/reviewbotext/integration.py
+++ b/extension/reviewbotext/integration.py
@@ -97,12 +97,15 @@ class ReviewBotIntegration(Integration):
                               config.name, config.pk, tool_id)
 
             review_settings = {
-                'max_comments': config.settings.get(
-                    'max_comments',
-                    ReviewBotConfigForm.MAX_COMMENTS_DEFAULT),
                 'comment_unmodified': config.settings.get(
                     'comment_on_unmodified_code',
                     ReviewBotConfigForm.COMMENT_ON_UNMODIFIED_CODE_DEFAULT),
+                'max_comments': config.settings.get(
+                    'max_comments',
+                    ReviewBotConfigForm.MAX_COMMENTS_DEFAULT),
+                'notify_owner_only': config.settings.get(
+                    'notify_owner_only',
+                    ReviewBotConfigForm.NOTIFY_OWNER_ONLY_DEFAULT),
                 'open_issues': config.settings.get(
                     'open_issues',
                     ReviewBotConfigForm.OPEN_ISSUES_DEFAULT),
diff --git a/extension/reviewbotext/resources.py b/extension/reviewbotext/resources.py
index 0e634f4194f522d881ca09de3976aaf38aea9013..26b146742a0b82819edbb79c48c9178ff7a49273 100644
--- a/extension/reviewbotext/resources.py
+++ b/extension/reviewbotext/resources.py
@@ -269,6 +269,13 @@ class ReviewBotReviewResource(WebAPIResource):
                 'description':
                     'A JSON payload containing the general comments.',
             },
+            'to_owner_only': {
+                'type': bool,
+                'description':
+                    'When enabled, e-mail notifications will only be sent '
+                    'to the owner of the review request.',
+                'added_in': '4.1',
+            },
         },
     )
     def create(
@@ -283,10 +290,15 @@ class ReviewBotReviewResource(WebAPIResource):
         diff_comments: (str | None) = None,
         general_comments: (str | None) = None,
         *args,
+        to_owner_only: bool = False,
         **kwargs,
     ) -> WebAPIResourceHandlerResult:
         """Create a new review and publishes it.
 
+        Version Changed:
+            4.1:
+            Added the ``to_owner_only`` argument.
+
         Args:
             request (django.http.HttpRequest):
                 The HTTP request.
@@ -320,6 +332,13 @@ class ReviewBotReviewResource(WebAPIResource):
             *args (tuple):
                 Positional arguments to set in the review.
 
+            to_owner_only (bool):
+                When enabled, e-mail notifications will only be sent to the
+                owner of the review request.
+
+                Version Added:
+                    4.1
+
             **kwargs (dict):
                 Additional attributes to set in the review.
 
@@ -394,7 +413,9 @@ class ReviewBotReviewResource(WebAPIResource):
             for comment in comments:
                 comment_type.create(**comment)
 
-        new_review.publish(user=request.user)
+        new_review.publish(
+            user=request.user,
+            to_owner_only=to_owner_only)
 
         return 201, {
             self.item_result_key: new_review,
