diff --git a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
index 456b8e2..b588a2f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/AutomergerModule.java
@@ -20,7 +20,6 @@
 import com.google.gerrit.extensions.events.ChangeAbandonedListener;
 import com.google.gerrit.extensions.events.ChangeRestoredListener;
 import com.google.gerrit.extensions.events.CommentAddedListener;
-import com.google.gerrit.extensions.events.DraftPublishedListener;
 import com.google.gerrit.extensions.events.RevisionCreatedListener;
 import com.google.gerrit.extensions.events.TopicEditedListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
@@ -38,7 +37,6 @@
     DynamicSet.bind(binder(), CommentAddedListener.class).to(DownstreamCreator.class);
     DynamicSet.bind(binder(), ChangeAbandonedListener.class).to(DownstreamCreator.class);
     DynamicSet.bind(binder(), ChangeRestoredListener.class).to(DownstreamCreator.class);
-    DynamicSet.bind(binder(), DraftPublishedListener.class).to(DownstreamCreator.class);
     DynamicSet.bind(binder(), RevisionCreatedListener.class).to(DownstreamCreator.class);
     DynamicSet.bind(binder(), TopicEditedListener.class).to(DownstreamCreator.class);
     DynamicSet.bind(binder(), MergeValidationListener.class).to(MergeValidator.class);
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 34b08eb..d03c744 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java
@@ -34,7 +34,6 @@
 import com.google.gerrit.extensions.events.ChangeAbandonedListener;
 import com.google.gerrit.extensions.events.ChangeRestoredListener;
 import com.google.gerrit.extensions.events.CommentAddedListener;
-import com.google.gerrit.extensions.events.DraftPublishedListener;
 import com.google.gerrit.extensions.events.RevisionCreatedListener;
 import com.google.gerrit.extensions.events.TopicEditedListener;
 import com.google.gerrit.extensions.restapi.AuthException;
@@ -69,7 +68,6 @@
     implements ChangeAbandonedListener,
         ChangeRestoredListener,
         CommentAddedListener,
-        DraftPublishedListener,
         RevisionCreatedListener,
         TopicEditedListener {
   private static final Logger log = LoggerFactory.getLogger(DownstreamCreator.class);
@@ -261,25 +259,6 @@
   }
 
   /**
-   * Automerges changes downstream if a draft is published.
-   *
-   * @param event Event we are listening to.
-   */
-  @Override
-  public void onDraftPublished(DraftPublishedListener.Event event) {
-    try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
-      ChangeInfo change = event.getChange();
-      automergeChanges(change, event.getRevision());
-    } catch (RestApiException
-        | IOException
-        | ConfigInvalidException
-        | InvalidQueryParameterException
-        | OrmException e) {
-      log.error("Automerger plugin failed onDraftPublished for {}", event.getChange().id, e);
-    }
-  }
-
-  /**
    * Automerges changes downstream if a revision is created.
    *
    * @param event Event we are listening to.
@@ -576,11 +555,6 @@
   private void automergeChanges(ChangeInfo change, RevisionInfo revisionInfo)
       throws RestApiException, IOException, ConfigInvalidException, InvalidQueryParameterException,
           OrmException {
-    if (revisionInfo.draft != null && revisionInfo.draft) {
-      log.debug("Patchset {} is draft change, ignoring.", revisionInfo.commit.commit);
-      return;
-    }
-
     String currentRevision = revisionInfo.commit.commit;
     log.debug(
         "Handling patchsetevent with change id {} and revision {}", change.id, currentRevision);
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index dc9aa32..13f69f8 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -6,8 +6,6 @@
 conflicting merge, it will vote -1 on a configurable label
 and provide instructions to resolving the merge conflict.
 
-Draft changes will be ignored until published.
-
 The plugin will put all the auto-created changes in the
 same topic as the original change (or create a topic if
 none exists). If a user updates the topic, it will update
@@ -18,4 +16,4 @@
 
 A UI button "Recreate automerges" has been added so that users can skip
 downstream merges. Unchecking a branch's checkbox will skip that branch and
-all automerges downstream of that branch.
\ No newline at end of file
+all automerges downstream of that branch.
