diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
index 1716dbd..f0419ab 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
@@ -22,6 +22,7 @@
 import com.google.common.collect.Sets;
 import com.google.gerrit.common.errors.NoSuchGroupException;
 import com.google.gerrit.extensions.common.ChangeInfo;
+import com.google.gerrit.extensions.events.DraftPublishedListener;
 import com.google.gerrit.extensions.events.RevisionCreatedListener;
 import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
 import com.google.gerrit.reviewdb.client.Account;
@@ -58,7 +59,7 @@
 import org.slf4j.LoggerFactory;
 
 @Singleton
-class ChangeEventListener implements RevisionCreatedListener {
+class ChangeEventListener implements RevisionCreatedListener, DraftPublishedListener {
   private static final Logger log = LoggerFactory.getLogger(ChangeEventListener.class);
 
   private final AccountResolver accountResolver;
@@ -109,9 +110,20 @@
   }
 
   @Override
-  public void onRevisionCreated(Event event) {
+  public void onRevisionCreated(
+      com.google.gerrit.extensions.events.RevisionCreatedListener.Event event) {
     ChangeInfo c = event.getChange();
-    Project.NameKey projectName = new Project.NameKey(c.project);
+    onEvent(new Project.NameKey(c.project), c._number, event.getWho().email);
+  }
+
+  @Override
+  public void onDraftPublished(
+      com.google.gerrit.extensions.events.DraftPublishedListener.Event event) {
+    ChangeInfo c = event.getChange();
+    onEvent(new Project.NameKey(c.project), c._number, event.getWho().email);
+  }
+
+  private void onEvent(Project.NameKey projectName, int changeNumber, String email) {
     // TODO(davido): we have to cache per project configuration
     ReviewersConfig config = configFactory.create(projectName);
     List<ReviewerFilterSection> sections = config.getReviewerFilterSections();
@@ -124,7 +136,7 @@
         RevWalk rw = new RevWalk(git);
         ReviewDb reviewDb = schemaFactory.open()) {
       ChangeData changeData =
-          changeDataFactory.create(reviewDb, projectName, new Change.Id(c._number));
+          changeDataFactory.create(reviewDb, projectName, new Change.Id(changeNumber));
       Set<String> reviewers = findReviewers(sections, changeData);
       if (reviewers.isEmpty()) {
         return;
@@ -132,8 +144,7 @@
 
       final Change change = changeData.change();
       final Runnable task =
-          reviewersFactory.create(
-              change, toAccounts(reviewDb, reviewers, projectName, event.getWho().email));
+          reviewersFactory.create(change, toAccounts(reviewDb, reviewers, projectName, email));
 
       workQueue
           .getDefaultQueue()
