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 e4c5771..3811d01 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ChangeEventListener.java
@@ -33,6 +33,7 @@
 import com.google.gerrit.server.account.AccountResolver;
 import com.google.gerrit.server.account.GroupMembers;
 import com.google.gerrit.server.data.ChangeAttribute;
+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.git.GitRepositoryManager;
@@ -115,12 +116,22 @@
 
   @Override
   public void onEvent(Event event) {
-    if (!(event instanceof PatchSetCreatedEvent)) {
-      return;
+    if (event instanceof PatchSetCreatedEvent) {
+      PatchSetCreatedEvent e = (PatchSetCreatedEvent) event;
+      ChangeAttribute c = e.change.get();
+      onEvent(new Project.NameKey(c.project),
+          Integer.parseInt(e.change.get().number), e.uploader.get().email);
+    } else if (event instanceof DraftPublishedEvent) {
+      DraftPublishedEvent e = (DraftPublishedEvent) event;
+      ChangeAttribute c = e.change.get();
+      onEvent(new Project.NameKey(c.project),
+          Integer.parseInt(e.change.get().number), e.uploader.get().email);
     }
-    PatchSetCreatedEvent e = (PatchSetCreatedEvent) event;
-    ChangeAttribute c = e.change.get();
-    Project.NameKey projectName = new Project.NameKey(c.project);
+  }
+
+  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();
@@ -133,7 +144,7 @@
         RevWalk rw = new RevWalk(git);
         ReviewDb reviewDb = schemaFactory.open()) {
       ChangeData changeData = changeDataFactory.create(
-          reviewDb, projectName, new Change.Id(Integer.parseInt(c.number)));
+          reviewDb, projectName, new Change.Id(changeNumber));
       Set<String> reviewers = findReviewers(sections, changeData);
       if (reviewers.isEmpty()) {
         return;
@@ -141,8 +152,7 @@
 
       final Change change = changeData.change();
       final Runnable task = reviewersFactory.create(change,
-          toAccounts(reviewDb, reviewers, projectName,
-              e.uploader.get().email));
+          toAccounts(reviewDb, reviewers, projectName, email));
 
       workQueue.getDefaultQueue().submit(new Runnable() {
         ReviewDb db = null;
