diff --git a/index.js b/index.js
index 457729a..8f487c2 100644
--- a/index.js
+++ b/index.js
@@ -115,7 +115,11 @@
             ? text.PR_OPENED_BY_COMMITTER
             : text.PR_OPENED;
 
-        const labelList = ['PR: awaiting review'];
+        const labelList = [];
+        const isDraft = context.payload.pull_request.draft;
+        if (!isDraft) {
+            labelList.push('PR: awaiting review');
+        }
         if (isCore) {
             labelList.push('PR: author is committer');
         }
@@ -145,18 +149,44 @@
         return Promise.all([comment, addLabel]);
     });
 
+    app.on(['pull_request.ready_for_review'], async context => {
+        return context.octokit.issues.addLabels(
+            context.issue({
+                labels: ['PR: awaiting review']
+            })
+        );
+    });
+
+    app.on(['pull_request.converted_to_draft'], async context => {
+        return getRemoveLabel(context, 'PR: awaiting review');
+    });
+
     app.on(['pull_request.edited'], async context => {
+        const addLabels = [];
+        const removeLabels = [];
+
+        const isDraft = context.payload.pull_request.draft;
+        if (isDraft) {
+            removeLabels.push(getRemoveLabel(context, 'PR: awaiting review'));
+        } else {
+            addLabels.push('PR: awaiting review');
+        }
+
         const content = context.payload.pull_request.body;
         if (content && content.indexOf('[x] The API has been changed.') > -1) {
-            return context.octokit.issues.addLabels(
-                context.issue({
-                    labels: ['PR: awaiting doc']
-                })
-            );
+            addLabels.push('PR: awaiting doc');
         }
         else {
-            return getRemoveLabel(context, 'PR: awaiting doc');
+            removeLabels.push(getRemoveLabel(context, 'PR: awaiting doc'));
         }
+
+        const addLabel = context.octokit.issues.addLabels(
+          context.issue({
+            labels: addLabels
+          })
+        );
+
+        return Promise.all(removeLabels.concat([addLabel]));
     });
 
     app.on(['pull_request.synchronize'], async context => {
diff --git a/package-lock.json b/package-lock.json
index 3543163..18842ee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
       "version": "1.0.0",
       "license": "Apache-2.0",
       "dependencies": {
-        "@vitalets/google-translate-api": "^5.0.0",
+        "@vitalets/google-translate-api": "^5.1.0",
         "franc-min": "^5.0.0",
         "probot": "^11.1.0"
       },
@@ -1383,9 +1383,9 @@
       "dev": true
     },
     "node_modules/@vitalets/google-translate-api": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-5.0.0.tgz",
-      "integrity": "sha512-fRJzDT/rhF5S6cc/amgKb+AeIaRcoVzsuBAvkNB4kRv8NUBq/PBIy1pKREfPacEfsXno5i3EWPn2DPm2zim86w==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-5.1.0.tgz",
+      "integrity": "sha512-iAfyAqLeBIhqJvS1PFAx6ve2bWTSS3/8L6ss+UKM0/Y7CHartgiMI7OWxSSRTdQDL1z/+SZNO3mJgdVTPcGAnA==",
       "dependencies": {
         "configstore": "^5.0.1",
         "got": "^9.6.0"
@@ -12012,9 +12012,9 @@
       "dev": true
     },
     "@vitalets/google-translate-api": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-5.0.0.tgz",
-      "integrity": "sha512-fRJzDT/rhF5S6cc/amgKb+AeIaRcoVzsuBAvkNB4kRv8NUBq/PBIy1pKREfPacEfsXno5i3EWPn2DPm2zim86w==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@vitalets/google-translate-api/-/google-translate-api-5.1.0.tgz",
+      "integrity": "sha512-iAfyAqLeBIhqJvS1PFAx6ve2bWTSS3/8L6ss+UKM0/Y7CHartgiMI7OWxSSRTdQDL1z/+SZNO3mJgdVTPcGAnA==",
       "requires": {
         "configstore": "^5.0.1",
         "got": "^9.6.0"
diff --git a/package.json b/package.json
index 0bad57f..ce437ee 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
     "test:watch": "jest --watch --notify --notifyMode=change --coverage"
   },
   "dependencies": {
-    "@vitalets/google-translate-api": "^5.0.0",
+    "@vitalets/google-translate-api": "^5.1.0",
     "franc-min": "^5.0.0",
     "probot": "^11.1.0"
   },
