diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
index 7f0f6d5..1a31d16 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/ConfigLoader.java
@@ -242,6 +242,14 @@
     return (short) getConfig().getInt("global", "minAutomergeVote", -2);
   }
 
+  public boolean maxAutomergeVoteDisabled() throws ConfigInvalidException {
+    return getConfig().getBoolean("global", "disableMaxAutomergeVote", false);
+  }
+
+  public boolean minAutomergeVoteDisabled() throws ConfigInvalidException {
+    return getConfig().getBoolean("global", "disableMinAutomergeVote", false);
+  }
+
   // Returns overriden manifest config if specified, default if not
   private String getManifestFile() throws ConfigInvalidException {
     String manifestFile = getConfig().getString("global", null, "manifestFile");
diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
index 40cb02a..766529d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -259,7 +259,9 @@
       reviewInput.notify = NotifyHandling.ALL;
       reviewInput.tag = MERGE_CONFLICT_TAG;
       // Vote minAutomergeVote if we hit a conflict.
-      labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+      if (!config.minAutomergeVoteDisabled()) {
+        labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
+      }
     }
     reviewInput.labels = labels;
     gApi.changes()
@@ -426,7 +428,9 @@
     ChangeApi downstreamChange = gApi.changes().create(downstreamChangeInput);
 
     // Vote maxAutomergeVote on the change so we know it was successful.
-    updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    if (!config.maxAutomergeVoteDisabled()) {
+      updateVote(downstreamChange.get(), config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    }
   }
 
   public String getOrSetTopic(int sourceId, String topic) throws RestApiException {
@@ -538,7 +542,9 @@
     }
 
     ChangeInfo downstreamChange = originalChange.createMergePatchSet(mergePatchSetInput);
-    updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    if (!config.maxAutomergeVoteDisabled()) {
+      updateVote(downstreamChange, config.getAutomergeLabel(), config.getMaxAutomergeVote());
+    }
   }
 
   private String getPreviousRevision(ChangeApi change, int currentPatchSetNumber)
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 0b46f5c..9410e04 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -39,12 +39,28 @@
   the user will have a vote of 0, so that it can be easily programatically
   distinguished from the otheres.
 
+  Will not vote if disableMaxAutomergeVote is true.
+
 global.minAutomergeVote
 : Value to vote on a failed automerge.
 
   When the automerger detects a merge conflict from one branch to another, it
   will vote minAutomergeVote for the configured automergeLabel.
 
+  Will not vote if disableMinAutomergeVote is true.
+
+global.disableMaxAutomergeVote
+: Whether to vote on a successful automerge.
+
+  If true, will not vote maxAutomergeVote on a successful downstream merge.
+  Defaults to false.
+
+global.disableMinAutomergeVote
+: Whether to vote on a failed automerge.
+
+  If true, will not vote minAutomergeVote on a failed downstream merge.
+  Defaults to false.
+
 global.hostName
 : Hostname to use in a custom conflict message.
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
index 5b35c08..5c5466f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/automerger/ConfigLoaderIT.java
@@ -210,6 +210,24 @@
     assertThat(configLoader.getMinAutomergeVote()).isEqualTo(-3);
   }
 
+  @Test
+  public void maxAutomergeVoteDisabledTest() throws Exception {
+    defaultSetup("automerger.config");
+    assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(false);
+  }
+
+  @Test
+  public void maxAutomergeVoteDisabledTest_isDisabled() throws Exception {
+    defaultSetup("alternate.config");
+    assertThat(configLoader.maxAutomergeVoteDisabled()).isEqualTo(true);
+  }
+
+  @Test
+  public void minAutomergeVoteDisabledTest() throws Exception {
+    defaultSetup("automerger.config");
+    assertThat(configLoader.minAutomergeVoteDisabled()).isEqualTo(false);
+  }
+
   private void setupTestRepo(
       String resourceName, Project.NameKey projectNameKey, String branchName, String filename)
       throws Exception {
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
index 3f0ed7d..ed3c829 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
+++ b/src/test/resources/com/googlesource/gerrit/plugins/automerger/alternate.config
@@ -14,6 +14,7 @@
   manifestProject = platform/manifest
   maxAutomergeVote = 5
   minAutomergeVote = -3
+  disableMaxAutomergeVote = true
   ignoreProjects = platform/ignore/me
   conflictMessage = line1\n\
 line2\n\
