diff --git a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
index efe90c1..2bc9a2a 100644
--- a/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
+++ b/src/main/java/com/criteo/gerrit/plugins/automerge/AutomaticMerger.java
@@ -29,6 +29,7 @@
 import com.google.gerrit.server.data.ChangeAttribute;
 import com.google.gerrit.server.events.ChangeEvent;
 import com.google.gerrit.server.events.CommentAddedEvent;
+import com.google.gerrit.server.events.DraftPublishedEvent;
 import com.google.gerrit.server.events.Event;
 import com.google.gerrit.server.events.PatchSetCreatedEvent;
 import com.google.gerrit.server.events.RefUpdatedEvent;
@@ -89,6 +90,7 @@
   @Override
   synchronized public void onEvent(final Event event) {
     if (event instanceof TopicChangedEvent ||
+        event instanceof DraftPublishedEvent ||
         event instanceof PatchSetCreatedEvent) {
       Change change = Change.from(((ChangeEvent)event).change.get());
       onNewOrChangedPatchSet(change);
diff --git a/test.rb b/test.rb
index ddc29f5..d4451f9 100755
--- a/test.rb
+++ b/test.rb
@@ -164,6 +164,16 @@
     check_status(commit2, 'MERGED')
   end
 
+  def test_published_draft_is_autosubmitted
+    commit_id = create_review(PROJECT1, "review0 on #{PROJECT1}", draft: true)
+    approve_review(commit_id)
+    check_status(commit_id, 'DRAFT')
+
+    publish_draft(commit_id)
+
+    check_status(commit_id, 'MERGED')
+  end
+
   private
 
   def project_dir(project_name)
@@ -180,7 +190,11 @@
     reviews = gerrit_query(query)
     reviews.each do |review|
       review_number = review['number']
-      execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
+      if review['status'] == 'DRAFT'
+        execute("#{GERRIT_SSH} gerrit review --delete #{review_number},1")
+      else
+        execute("#{GERRIT_SSH} gerrit review --abandon #{review_number},1")
+      end
     end
   end
 
@@ -192,14 +206,14 @@
     change_id
   end
 
-  def create_review(project_name, message, topic = nil, change_id = nil)
+  def create_review(project_name, message, topic = nil, change_id = nil, draft: false)
     topic_suffix = "/#{topic}" if topic
     message = "#{message}\n\nChange-Id: #{change_id}" if change_id
     execute(["cd #{project_dir(project_name)}",
              "echo 0 >> a",
              "git add .",
              %Q(git commit -m "#{message}"),
-             "git push origin HEAD:refs/for/master#{topic_suffix}"
+             "git push origin HEAD:refs/#{draft ? 'drafts' : 'for'}/master#{topic_suffix}"
             ].join(" && "))
     commit_id = execute("cd #{project_dir(project_name)} && git rev-parse HEAD")
     refute(commit_id.empty?, "missing commit-id")
@@ -210,6 +224,10 @@
     execute("#{GERRIT_SSH} gerrit review --verified 1 --code-review 2 #{commit_id}")
   end
 
+  def publish_draft(commit_id)
+    execute("#{GERRIT_SSH} gerrit review --publish #{commit_id}")
+  end
+
   def abandon_review(commit_id)
     execute("#{GERRIT_SSH} gerrit review --abandon #{commit_id}")
   end
