diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
index 40d6137..43afe00 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/GetConfig.java
@@ -37,16 +37,21 @@
     ConfigInfo info = new ConfigInfo();
     info.info = Strings.emptyToNull(cfg.getString("infoMessage"));
     info.onSuccess = Strings.emptyToNull(cfg.getString("onSuccessMessage"));
-    info.allowEmail = cfg.getBoolean("allowEmail", false);
-    if (!info.allowEmail) {
-      info.allowEmail = null;
-    }
+    info.allowEmail = toBoolean(cfg.getBoolean("allowEmail", false));
+    info.createNotes = toBoolean(cfg.getBoolean("createNotes", true));
+    info.createNotesAsync = toBoolean(cfg.getBoolean("createNotesAsync", false));
     return info;
   }
 
+  private static Boolean toBoolean(boolean v) {
+    return v ? v : null;
+  }
+
   public class ConfigInfo {
     String info;
     String onSuccess;
     Boolean allowEmail;
+    Boolean createNotes;
+    Boolean createNotesAsync;
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
index e966590..524afb8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/PutConfig.java
@@ -28,6 +28,7 @@
 import com.googlesource.gerrit.plugins.serviceuser.PutConfig.Input;
 
 import org.eclipse.jgit.errors.ConfigInvalidException;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.storage.file.FileBasedConfig;
 import org.eclipse.jgit.util.FS;
 
@@ -39,6 +40,8 @@
     public String info;
     public String onSuccess;
     public Boolean allowEmail;
+    public Boolean createNotes;
+    public Boolean createNotesAsync;
   }
 
   private final PluginConfigFactory cfgFactory;
@@ -68,14 +71,28 @@
           Strings.emptyToNull(input.onSuccess));
     }
     if (input.allowEmail != null) {
-      if (input.allowEmail) {
-        cfg.setBoolean("plugin", pluginName, "allowEmail", true);
-      } else {
-        cfg.unset("plugin", pluginName, "allowEmail");
-      }
+      setBoolean(cfg, "allowEmail", input.allowEmail);
+    }
+    if (input.createNotes != null) {
+      setBoolean(cfg, "createNotes", input.createNotes, true);
+    }
+    if (input.createNotesAsync != null) {
+      setBoolean(cfg, "createNotesAsync", input.createNotesAsync);
     }
     cfg.save();
     cfgFactory.getFromGerritConfig(pluginName, true);
     return Response.<String> ok("OK");
   }
+
+  private void setBoolean(Config cfg, String name, boolean value) {
+    setBoolean(cfg, name, value, false);
+  }
+
+  private void setBoolean(Config cfg, String name, boolean value, boolean defaultValue) {
+    if (value == defaultValue) {
+      cfg.unset("plugin", pluginName, name);
+    } else {
+      cfg.setBoolean("plugin", pluginName, name, value);
+    }
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ConfigInfo.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ConfigInfo.java
index 95305b6..ae81ca4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ConfigInfo.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ConfigInfo.java
@@ -20,10 +20,14 @@
   final native String getInfoMessage() /*-{ return this.info }-*/;
   final native String getOnSuccessMessage() /*-{ return this.on_success }-*/;
   final native boolean getAllowEmail() /*-{ return this.allow_email ? true : false; }-*/;
+  final native boolean getCreateNotes() /*-{ return this.create_notes ? true : false; }-*/;
+  final native boolean getCreateNotesAsync() /*-{ return this.create_notes_async ? true : false; }-*/;
 
   final native void setInfoMessage(String s) /*-{ this.info = s; }-*/;
   final native void setOnSuccessMessage(String s) /*-{ this.on_success = s; }-*/;
   final native void setAllowEmail(boolean s) /*-{ this.allow_email = s; }-*/;
+  final native void setCreateNotes(boolean s) /*-{ this.create_notes = s; }-*/;
+  final native void setCreateNotesAsync(boolean s) /*-{ this.create_notes_async = s; }-*/;
 
   static ConfigInfo create() {
     ConfigInfo g = (ConfigInfo) createObject();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserSettingsScreen.java b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserSettingsScreen.java
index 7613892..d142154 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserSettingsScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/serviceuser/client/ServiceUserSettingsScreen.java
@@ -22,6 +22,8 @@
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.KeyPressEvent;
 import com.google.gwt.event.dom.client.KeyPressHandler;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.CheckBox;
@@ -44,6 +46,8 @@
   private TextArea infoMsgTxt;
   private TextArea onSuccessMsgTxt;
   private CheckBox allowEmailCheckBox;
+  private CheckBox createNotesCheckBox;
+  private CheckBox createNotesAsyncCheckBox;
   private Button saveButton;
 
   ServiceUserSettingsScreen() {
@@ -121,6 +125,38 @@
     allowEmailPanel.add(allowEmailInfo);
     add(allowEmailPanel);
 
+    Panel createNotesPanel = new HorizontalPanel();
+    createNotesCheckBox = new CheckBox("Create Git Notes");
+    createNotesCheckBox.setValue(info.getCreateNotes());
+    createNotesPanel.add(createNotesCheckBox);
+    Image createNotesInfo = new Image(ServiceUserPlugin.RESOURCES.info());
+    createNotesInfo.setTitle("Whether commits of a service user should be "
+        + "annotated by a Git note that contains information about the current "
+        + "owners of the service user. This allows to find a real person that "
+        + "is responsible for this commit. To get such a Git note for each commit "
+        + "of a service user the 'Forge Committer' access right must be blocked "
+        + "for service users.");
+    createNotesPanel.add(createNotesInfo);
+    add(createNotesPanel);
+
+    Panel createNotesAsyncPanel = new HorizontalPanel();
+    createNotesAsyncCheckBox = new CheckBox("Create Git Notes Asynchronously");
+    createNotesAsyncCheckBox.setValue(info.getCreateNotesAsync());
+    createNotesAsyncCheckBox.setEnabled(info.getCreateNotes());
+    createNotesAsyncPanel.add(createNotesAsyncCheckBox);
+    Image createNotesAsyncInfo = new Image(ServiceUserPlugin.RESOURCES.info());
+    createNotesAsyncInfo.setTitle("Whether the Git notes on commits that are "
+        + "pushed by a service user should be created asynchronously.");
+    createNotesAsyncPanel.add(createNotesAsyncInfo);
+    add(createNotesAsyncPanel);
+
+    createNotesCheckBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
+      @Override
+      public void onValueChange(ValueChangeEvent<Boolean> event) {
+        createNotesAsyncCheckBox.setEnabled(event.getValue());
+      }
+    });
+
     HorizontalPanel buttons = new HorizontalPanel();
     add(buttons);
 
@@ -137,6 +173,8 @@
     OnEditEnabler onEditEnabler = new OnEditEnabler(saveButton, infoMsgTxt);
     onEditEnabler.listenTo(onSuccessMsgTxt);
     onEditEnabler.listenTo(allowEmailCheckBox);
+    onEditEnabler.listenTo(createNotesCheckBox);
+    onEditEnabler.listenTo(createNotesAsyncCheckBox);
 
     infoMsgTxt.setFocus(true);
     saveButton.setEnabled(false);
@@ -147,6 +185,10 @@
     in.setInfoMessage(infoMsgTxt.getValue());
     in.setOnSuccessMessage(onSuccessMsgTxt.getValue());
     in.setAllowEmail(allowEmailCheckBox.getValue());
+    in.setCreateNotes(createNotesCheckBox.getValue());
+    if (createNotesAsyncCheckBox.isEnabled()) {
+      in.setCreateNotesAsync(createNotesAsyncCheckBox.getValue());
+    }
     new RestApi("config").id("server").view(Plugin.get().getPluginName(), "config")
         .put(in, new AsyncCallback<JavaScriptObject>() {
 
diff --git a/src/main/resources/Documentation/rest-api-config.md b/src/main/resources/Documentation/rest-api-config.md
index 41072f7..f06090a 100644
--- a/src/main/resources/Documentation/rest-api-config.md
+++ b/src/main/resources/Documentation/rest-api-config.md
@@ -612,7 +612,8 @@
 
   )]}'
   {
-    "on_success": "Don\u0027t forget to assign \u003ca href\u003d\"Documentation/access-control.html\"\u003eaccess rights\u003c/a\u003e to the service user."
+    "on_success": "Don\u0027t forget to assign \u003ca href\u003d\"Documentation/access-control.html\"\u003eaccess rights\u003c/a\u003e to the service user.",
+    "create_notes": true
   }
 ```
 
@@ -650,6 +651,12 @@
   a service user was successfully created.
 * _allow\_email_: Whether it is allowed to provide an email address for
   a service user (not set if `false`).
+* _create\_notes_: Whether commits of a service user should be
+  annotated by a Git note that contains information about the current
+  owners of the service user (not set if `false`).
+* _create\_notes\_async_: Whether the Git notes on commits that are
+  pushed by a service user should be created asynchronously (not set if
+  `false`).
 
 ### <a id="email-input"></a>EmailInput
 
