diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.12.0
+
+* Support for CheckSuiteEvent and CheckRunEvent was added (resolves #25)
+
 # 0.11.0
 
 * OwnerType of Bot is now supported (by Domen Kozar, resolves #22)
diff --git a/fixtures/check-run-event.json b/fixtures/check-run-event.json
new file mode 100644
--- /dev/null
+++ b/fixtures/check-run-event.json
@@ -0,0 +1,294 @@
+{
+  "action": "requested_action",
+  "check_run": {
+    "id": 123412411,
+    "head_sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+    "external_id": "",
+    "url": "https://api.github.com/repos/baxterthehacker/public-repo/check-runs/454339238",
+    "html_url": "https://github.com/baxterthehacker/public-repo/runs/454339238",
+    "details_url": "https://www.baxterthehacker.com",
+    "status": "completed",
+    "conclusion": "stale",
+    "started_at": "2020-02-19T02:44:54Z",
+    "completed_at": null,
+    "output": {
+      "title": null,
+      "summary": null,
+      "text": null,
+      "annotations_count": 0,
+      "annotations_url": "https://api.github.com/repos/baxterthehacker/public-repo/check-runs/454339238/annotations"
+    },
+    "name": "Test Check Run",
+    "check_suite": {
+      "id": 12341234111,
+      "head_branch": "test-pr",
+      "head_sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+      "status": "queued",
+      "conclusion": null,
+      "url": "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/123451234",
+      "before": "15c99c3e0b9d840d8465be47813cf39686815f2e",
+      "after": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+      "pull_requests": [
+        {
+          "url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1",
+          "id": 12345123222,
+          "number": 1,
+          "head": {
+            "ref": "test-pr",
+            "sha": "a68c473cf629b651f6e615c7d0eea95811d2db3d",
+            "repo": {
+              "id": 12345123333,
+              "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+              "name": "public-repo"
+            }
+          },
+          "base": {
+            "ref": "master",
+            "sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+            "repo": {
+              "id": 123451234444,
+              "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+              "name": "public-repo"
+            }
+          }
+        }
+      ],
+      "app": {
+        "id": 12345,
+        "slug": "baxterandthehackers-app",
+        "owner": {
+          "login": "baxterthehacker",
+          "id": 12341234,
+          "node_id": "MDEyOk9yZ2FuaXphdGlvbjYwMzg1NjM4",
+          "avatar_url": "https://avatars2.githubusercontent.com/u/60385638?v=4",
+          "gravatar_id": "",
+          "url": "https://api.github.com/users/baxterthehacker",
+          "html_url": "https://github.com/baxterthehacker",
+          "followers_url": "https://api.github.com/users/baxterthehacker/followers",
+          "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
+          "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+          "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+          "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
+          "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
+          "repos_url": "https://api.github.com/users/baxterthehacker/repos",
+          "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
+          "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
+          "type": "Organization",
+          "site_admin": false
+        },
+        "name": "Baxterandthehackers App",
+        "description": "",
+        "external_url": "https://www.baxterthehacker.com",
+        "html_url": "https://github.com/apps/baxterandthehackers-app",
+        "created_at": "2020-01-19T07:05:42Z",
+        "updated_at": "2020-02-18T00:24:52Z",
+        "permissions": {
+          "checks": "write",
+          "issues": "read",
+          "metadata": "read"
+        },
+        "events": [
+          "check_run",
+          "check_suite"
+        ]
+      },
+      "created_at": "2020-02-18T00:54:04Z",
+      "updated_at": "2020-02-18T00:54:04Z"
+    },
+    "app": {
+      "id": 12345,
+      "slug": "baxterandthehackers-app",
+      "owner": {
+        "login": "baxterthehacker",
+        "id": 12341234,
+        "node_id": "MDEyOk9yZ2FuaXphdGlvbjYwMzg1NjM4",
+        "avatar_url": "https://avatars2.githubusercontent.com/u/60385638?v=4",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/baxterthehacker",
+        "html_url": "https://github.com/baxterthehacker",
+        "followers_url": "https://api.github.com/users/baxterthehacker/followers",
+        "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
+        "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
+        "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
+        "repos_url": "https://api.github.com/users/baxterthehacker/repos",
+        "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
+        "type": "Organization",
+        "site_admin": false
+      },
+      "name": "Baxterandthehackers App",
+      "description": "",
+      "external_url": "https://www.baxterthehacker.com",
+      "html_url": "https://github.com/apps/baxterandthehackers-app",
+      "created_at": "2020-01-19T07:05:42Z",
+      "updated_at": "2020-02-18T00:24:52Z",
+      "permissions": {
+        "checks": "write",
+        "issues": "read",
+        "metadata": "read"
+      },
+      "events": [
+        "check_run",
+        "check_suite"
+      ]
+    },
+    "pull_requests": [
+      {
+        "url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1",
+        "id": 12345123222,
+        "number": 1,
+        "head": {
+          "ref": "test-pr",
+          "sha": "a68c473cf629b651f6e615c7d0eea95811d2db3d",
+          "repo": {
+            "id": 12345123333,
+            "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+            "name": "public-repo"
+          }
+        },
+        "base": {
+          "ref": "master",
+          "sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+          "repo": {
+            "id": 123451234444,
+            "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+            "name": "public-repo"
+          }
+        }
+      }
+    ]
+  },
+  "requested_action": {
+    "identifier": "fix_errors"
+  },
+  "repository": {
+    "id": 35129377,
+    "name": "public-repo",
+    "full_name": "baxterthehacker/public-repo",
+    "private": false,
+    "owner": {
+      "login": "baxterthehacker",
+      "id": 6752317,
+      "node_id": "MDEyOk9yZ2FuaXphdGlvbjYwMzg1NjM4",
+      "avatar_url": "https://avatars.githubusercontent.com/u/6752317?v=3",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/baxterthehacker",
+      "html_url": "https://github.com/baxterthehacker",
+      "followers_url": "https://api.github.com/users/baxterthehacker/followers",
+      "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
+      "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
+      "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
+      "repos_url": "https://api.github.com/users/baxterthehacker/repos",
+      "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
+      "type": "Organization",
+      "site_admin": false
+    },
+    "html_url": "https://github.com/baxterthehacker/public-repo",
+    "description": null,
+    "fork": false,
+    "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+    "forks_url": "https://api.github.com/repos/baxterthehacker/public-repo/forks",
+    "keys_url": "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}",
+    "collaborators_url": "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}",
+    "teams_url": "https://api.github.com/repos/baxterthehacker/public-repo/teams",
+    "hooks_url": "https://api.github.com/repos/baxterthehacker/public-repo/hooks",
+    "issue_events_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}",
+    "events_url": "https://api.github.com/repos/baxterthehacker/public-repo/events",
+    "assignees_url": "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}",
+    "branches_url": "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}",
+    "tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/tags",
+    "blobs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}",
+    "git_tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}",
+    "git_refs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}",
+    "trees_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}",
+    "statuses_url": "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}",
+    "languages_url": "https://api.github.com/repos/baxterthehacker/public-repo/languages",
+    "stargazers_url": "https://api.github.com/repos/baxterthehacker/public-repo/stargazers",
+    "contributors_url": "https://api.github.com/repos/baxterthehacker/public-repo/contributors",
+    "subscribers_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscribers",
+    "subscription_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscription",
+    "commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}",
+    "git_commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}",
+    "comments_url": "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}",
+    "issue_comment_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}",
+    "contents_url": "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}",
+    "compare_url": "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}",
+    "merges_url": "https://api.github.com/repos/baxterthehacker/public-repo/merges",
+    "archive_url": "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}",
+    "downloads_url": "https://api.github.com/repos/baxterthehacker/public-repo/downloads",
+    "issues_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}",
+    "pulls_url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}",
+    "milestones_url": "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}",
+    "notifications_url": "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}",
+    "labels_url": "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}",
+    "releases_url": "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}",
+    "deployments_url": "https://api.github.com/repos/baxterthehacker/public-repo/deployments",
+    "created_at": "2015-05-05T23:40:12Z",
+    "updated_at": "2015-05-05T23:40:12Z",
+    "pushed_at": "2015-05-05T23:40:27Z",
+    "git_url": "git://github.com/baxterthehacker/public-repo.git",
+    "ssh_url": "git@github.com:baxterthehacker/public-repo.git",
+    "clone_url": "https://github.com/baxterthehacker/public-repo.git",
+    "svn_url": "https://github.com/baxterthehacker/public-repo",
+    "homepage": null,
+    "size": 0,
+    "stargazers_count": 0,
+    "watchers_count": 0,
+    "language": null,
+    "has_issues": true,
+    "has_projects": true,
+    "has_downloads": true,
+    "has_wiki": true,
+    "has_pages": true,
+    "forks_count": 0,
+    "mirror_url": null,
+    "archived": false,
+    "disabled": false,
+    "open_issues_count": 2,
+    "license": null,
+    "forks": 0,
+    "open_issues": 1,
+    "watchers": 0,
+    "default_branch": "master"
+  },
+  "organization": {
+    "login": "baxterandthehackers",
+    "id": 4312013,
+    "url": "https://api.github.com/orgs/baxterandthehackers",
+    "repos_url": "https://api.github.com/orgs/baxterandthehackers/repos",
+    "events_url": "https://api.github.com/orgs/baxterandthehackers/events",
+    "hooks_url": "https://api.github.com/orgs/baxterandthehackers/hooks",
+    "issues_url": "https://api.github.com/orgs/baxterandthehackers/issues",
+    "members_url": "https://api.github.com/orgs/baxterandthehackers/members{/member}",
+    "public_members_url": "https://api.github.com/orgs/baxterandthehackers/public_members{/member}",
+    "avatar_url": "https://avatars.githubusercontent.com/u/4312013?v=3",
+    "description": null
+  },
+  "sender":{
+    "login":"baxterthehacker",
+    "id":6752317,
+    "avatar_url":"https://avatars.githubusercontent.com/u/6752317?v=3",
+    "gravatar_id":"",
+    "url":"https://api.github.com/users/baxterthehacker",
+    "html_url":"https://github.com/baxterthehacker",
+    "followers_url":"https://api.github.com/users/baxterthehacker/followers",
+    "following_url":"https://api.github.com/users/baxterthehacker/following{/other_user}",
+    "gists_url":"https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+    "starred_url":"https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+    "subscriptions_url":"https://api.github.com/users/baxterthehacker/subscriptions",
+    "organizations_url":"https://api.github.com/users/baxterthehacker/orgs",
+    "repos_url":"https://api.github.com/users/baxterthehacker/repos",
+    "events_url":"https://api.github.com/users/baxterthehacker/events{/privacy}",
+    "received_events_url":"https://api.github.com/users/baxterthehacker/received_events",
+    "type":"User",
+    "site_admin":false
+  },
+  "installation": {
+    "id": 1234123
+  }
+}
diff --git a/fixtures/check-suite-event.json b/fixtures/check-suite-event.json
new file mode 100644
--- /dev/null
+++ b/fixtures/check-suite-event.json
@@ -0,0 +1,223 @@
+{
+  "action": "completed",
+  "check_suite": {
+    "id": 12341234111,
+    "head_branch": "test-pr",
+    "head_sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+    "status": "completed",
+    "conclusion": "action_required",
+    "url": "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/123451234",
+    "before": "15c99c3e0b9d840d8465be47813cf39686815f2e",
+    "after": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+    "pull_requests": [
+      {
+        "url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1",
+        "id": 12345123222,
+        "number": 1,
+        "head": {
+          "ref": "test-pr",
+          "sha": "a68c473cf629b651f6e615c7d0eea95811d2db3d",
+          "repo": {
+            "id": 12345123333,
+            "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+            "name": "public-repo"
+          }
+        },
+        "base": {
+          "ref": "master",
+          "sha": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+          "repo": {
+            "id": 123451234444,
+            "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+            "name": "public-repo"
+          }
+        }
+      }
+    ],
+    "app": {
+      "id": 12345,
+      "slug": "baxterandthehackers-app",
+      "owner": {
+        "login": "baxterthehacker",
+        "id": 12341234,
+        "node_id": "MDEyOk9yZ2FuaXphdGlvbjYwMzg1NjM4",
+        "avatar_url": "https://avatars2.githubusercontent.com/u/60385638?v=4",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/baxterthehacker",
+        "html_url": "https://github.com/baxterthehacker",
+        "followers_url": "https://api.github.com/users/baxterthehacker/followers",
+        "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
+        "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
+        "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
+        "repos_url": "https://api.github.com/users/baxterthehacker/repos",
+        "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
+        "type": "Organization",
+        "site_admin": false
+      },
+      "name": "Baxterandthehackers App",
+      "description": "",
+      "external_url": "https://www.baxterthehacker.com",
+      "html_url": "https://github.com/apps/baxterandthehackers-app",
+      "created_at": "2020-01-19T07:05:42Z",
+      "updated_at": "2020-02-18T00:24:52Z",
+      "permissions": {
+        "checks": "write",
+        "issues": "read",
+        "metadata": "read"
+      },
+      "events": [
+        "check_run",
+        "check_suite"
+      ]
+    },
+    "created_at": "2020-02-18T00:54:04Z",
+    "updated_at": "2020-02-18T00:54:04Z",
+    "latest_check_runs_count": 0,
+    "check_runs_url": "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/12341234111/check-runs",
+    "head_commit": {
+      "id": "45deaf5013c757e58e2665849c3fd3add3edfa59",
+      "tree_id": "7eccf45e2908e97540ab6b4d6ce849f0a7c0cfca",
+      "message": "Update README.md",
+      "timestamp": "2020-02-18T00:53:59Z",
+      "author": {
+        "name": "baxterthehacker",
+        "email": "baxterthehacker@users.noreply.github.com"
+      },
+      "committer": {
+        "name": "baxterthehacker",
+        "email": "baxterthehacker@users.noreply.github.com"
+      }
+    }
+  },
+  "repository": {
+    "id": 35129377,
+    "name": "public-repo",
+    "full_name": "baxterthehacker/public-repo",
+    "private": false,
+    "owner": {
+      "login": "baxterthehacker",
+      "id": 6752317,
+      "node_id": "MDEyOk9yZ2FuaXphdGlvbjYwMzg1NjM4",
+      "avatar_url": "https://avatars.githubusercontent.com/u/6752317?v=3",
+      "gravatar_id": "",
+      "url": "https://api.github.com/users/baxterthehacker",
+      "html_url": "https://github.com/baxterthehacker",
+      "followers_url": "https://api.github.com/users/baxterthehacker/followers",
+      "following_url": "https://api.github.com/users/baxterthehacker/following{/other_user}",
+      "gists_url": "https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+      "starred_url": "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+      "subscriptions_url": "https://api.github.com/users/baxterthehacker/subscriptions",
+      "organizations_url": "https://api.github.com/users/baxterthehacker/orgs",
+      "repos_url": "https://api.github.com/users/baxterthehacker/repos",
+      "events_url": "https://api.github.com/users/baxterthehacker/events{/privacy}",
+      "received_events_url": "https://api.github.com/users/baxterthehacker/received_events",
+      "type": "Organization",
+      "site_admin": false
+    },
+    "html_url": "https://github.com/baxterthehacker/public-repo",
+    "description": null,
+    "fork": false,
+    "url": "https://api.github.com/repos/baxterthehacker/public-repo",
+    "forks_url": "https://api.github.com/repos/baxterthehacker/public-repo/forks",
+    "keys_url": "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}",
+    "collaborators_url": "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}",
+    "teams_url": "https://api.github.com/repos/baxterthehacker/public-repo/teams",
+    "hooks_url": "https://api.github.com/repos/baxterthehacker/public-repo/hooks",
+    "issue_events_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}",
+    "events_url": "https://api.github.com/repos/baxterthehacker/public-repo/events",
+    "assignees_url": "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}",
+    "branches_url": "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}",
+    "tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/tags",
+    "blobs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}",
+    "git_tags_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}",
+    "git_refs_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}",
+    "trees_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}",
+    "statuses_url": "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}",
+    "languages_url": "https://api.github.com/repos/baxterthehacker/public-repo/languages",
+    "stargazers_url": "https://api.github.com/repos/baxterthehacker/public-repo/stargazers",
+    "contributors_url": "https://api.github.com/repos/baxterthehacker/public-repo/contributors",
+    "subscribers_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscribers",
+    "subscription_url": "https://api.github.com/repos/baxterthehacker/public-repo/subscription",
+    "commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}",
+    "git_commits_url": "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}",
+    "comments_url": "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}",
+    "issue_comment_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}",
+    "contents_url": "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}",
+    "compare_url": "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}",
+    "merges_url": "https://api.github.com/repos/baxterthehacker/public-repo/merges",
+    "archive_url": "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}",
+    "downloads_url": "https://api.github.com/repos/baxterthehacker/public-repo/downloads",
+    "issues_url": "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}",
+    "pulls_url": "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}",
+    "milestones_url": "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}",
+    "notifications_url": "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}",
+    "labels_url": "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}",
+    "releases_url": "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}",
+    "deployments_url": "https://api.github.com/repos/baxterthehacker/public-repo/deployments",
+    "created_at": "2015-05-05T23:40:12Z",
+    "updated_at": "2015-05-05T23:40:12Z",
+    "pushed_at": "2015-05-05T23:40:27Z",
+    "git_url": "git://github.com/baxterthehacker/public-repo.git",
+    "ssh_url": "git@github.com:baxterthehacker/public-repo.git",
+    "clone_url": "https://github.com/baxterthehacker/public-repo.git",
+    "svn_url": "https://github.com/baxterthehacker/public-repo",
+    "homepage": null,
+    "size": 0,
+    "stargazers_count": 0,
+    "watchers_count": 0,
+    "language": null,
+    "has_issues": true,
+    "has_projects": true,
+    "has_downloads": true,
+    "has_wiki": true,
+    "has_pages": true,
+    "forks_count": 0,
+    "mirror_url": null,
+    "archived": false,
+    "disabled": false,
+    "open_issues_count": 2,
+    "license": null,
+    "forks": 0,
+    "open_issues": 1,
+    "watchers": 0,
+    "default_branch": "master"
+  },
+  "organization": {
+    "login": "baxterandthehackers",
+    "id": 4312013,
+    "url": "https://api.github.com/orgs/baxterandthehackers",
+    "repos_url": "https://api.github.com/orgs/baxterandthehackers/repos",
+    "events_url": "https://api.github.com/orgs/baxterandthehackers/events",
+    "hooks_url": "https://api.github.com/orgs/baxterandthehackers/hooks",
+    "issues_url": "https://api.github.com/orgs/baxterandthehackers/issues",
+    "members_url": "https://api.github.com/orgs/baxterandthehackers/members{/member}",
+    "public_members_url": "https://api.github.com/orgs/baxterandthehackers/public_members{/member}",
+    "avatar_url": "https://avatars.githubusercontent.com/u/4312013?v=3",
+    "description": null
+  },
+  "sender":{
+    "login":"baxterthehacker",
+    "id":6752317,
+    "avatar_url":"https://avatars.githubusercontent.com/u/6752317?v=3",
+    "gravatar_id":"",
+    "url":"https://api.github.com/users/baxterthehacker",
+    "html_url":"https://github.com/baxterthehacker",
+    "followers_url":"https://api.github.com/users/baxterthehacker/followers",
+    "following_url":"https://api.github.com/users/baxterthehacker/following{/other_user}",
+    "gists_url":"https://api.github.com/users/baxterthehacker/gists{/gist_id}",
+    "starred_url":"https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}",
+    "subscriptions_url":"https://api.github.com/users/baxterthehacker/subscriptions",
+    "organizations_url":"https://api.github.com/users/baxterthehacker/orgs",
+    "repos_url":"https://api.github.com/users/baxterthehacker/repos",
+    "events_url":"https://api.github.com/users/baxterthehacker/events{/privacy}",
+    "received_events_url":"https://api.github.com/users/baxterthehacker/received_events",
+    "type":"User",
+    "site_admin":false
+  },
+  "installation": {
+    "id": 1234123
+  }
+}
diff --git a/github-webhooks.cabal b/github-webhooks.cabal
--- a/github-webhooks.cabal
+++ b/github-webhooks.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a6f178730e675270b0f0ac76e237c8ff5d6da7610a4a7a9b552cb2d78e5d1a03
+-- hash: 32ae0990f7bb06821c7e8a6dc533f28f086bf605fda8ca884645551dad3ae3f7
 
 name:           github-webhooks
-version:        0.11.0
+version:        0.12.0
 synopsis:       Aeson instances for GitHub Webhook payloads.
 description:    Complete instances for decoding GitHub Webhook payloads (using @aeson@). See the README at <https://github.com/onrock-eng/github-webhooks#readme> for examples.
 category:       GitHub
@@ -17,7 +17,8 @@
                 Christian Sakai <christianmsakai@gmail.com>,
                 Thomas DuBuisson <thomas.dubuisson@gmail.com>,
                 Rob Berry,
-                Domen Kozar <domen@dev.si>
+                Domen Kozar <domen@dev.si>,
+                Alistair Burrowes
 maintainer:     Kyle Van Berendonck <foss@onrock.online>
 copyright:      (c) 2017-2019 ONROCK
 license:        MIT
@@ -26,10 +27,14 @@
 extra-source-files:
     package.yaml
     stack.yaml
+    stack-examples.yaml
     stack-ghc-7.10.yaml
     stack-ghc-7.8.yaml
     stack-ghc-8.0.yaml
+    stack-nightly.yaml
     CHANGELOG.md
+    fixtures/check-run-event.json
+    fixtures/check-suite-event.json
     fixtures/commit-comment-event.json
     fixtures/create-event.json
     fixtures/delete-event.json
@@ -90,7 +95,7 @@
     , time
     , vector
   if flag(ci)
-    ghc-options: -Wall -Werror -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
+    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
   exposed-modules:
       GitHub.Data.Webhooks.Events
       GitHub.Data.Webhooks.Payload
@@ -114,7 +119,7 @@
     , text
     , vector
   if flag(ci)
-    ghc-options: -Wall -Werror -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
+    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
   other-modules:
       DecodeEventsSpec
       Paths_github_webhooks
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: github-webhooks
-version: 0.11.0
+version: 0.12.0
 
 category: GitHub
 license: MIT
@@ -17,6 +17,7 @@
   - Thomas DuBuisson <thomas.dubuisson@gmail.com>
   - Rob Berry
   - Domen Kozar <domen@dev.si>
+  - Alistair Burrowes
 maintainer: Kyle Van Berendonck <foss@onrock.online>
 github: onrock-eng/github-webhooks
 description:
@@ -31,7 +32,7 @@
 
 when:
   - condition: flag(ci)
-    ghc-options: -Wall -Werror -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
+    ghc-options: -Wall -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -ddump-to-file -ddump-hi
 
 default-extensions:
   - DeriveDataTypeable
diff --git a/spec/DecodeEventsSpec.hs b/spec/DecodeEventsSpec.hs
--- a/spec/DecodeEventsSpec.hs
+++ b/spec/DecodeEventsSpec.hs
@@ -39,6 +39,8 @@
 
 spec :: Spec
 spec = do
+  it "can decode CheckSuiteEvent"         $ fixtureShouldMatch "fixtures/check-suite-event.json" checkSuiteEventFixture
+  it "can decode CheckRunEvent"           $ fixtureShouldMatch "fixtures/check-run-event.json" checkRunEventFixture
   it "can decode CommitCommentEvent"      $ fixtureShouldMatch "fixtures/commit-comment-event.json" commitCommentEventFixture
   it "can decode CreateEvent"             $ fixtureShouldMatch "fixtures/create-event.json" createEventFixture
   it "can decode DeleteEvent"             $ fixtureShouldMatch "fixtures/delete-event.json" deleteEventFixture
@@ -76,6 +78,433 @@
 
 -- Fixtures
 -- These correspond to the expected decoded output of the above JSON files.
+
+checkSuiteEventFixture :: CheckSuiteEvent
+checkSuiteEventFixture = CheckSuiteEvent
+    { evCheckSuiteAction = CheckSuiteEventActionCompleted
+    , evCheckSuiteCheckSuite =
+        HookCheckSuite
+          { whCheckSuiteId = 12341234111
+          , whCheckSuiteHeadBranch = Just "test-pr"
+          , whCheckSuiteHeadSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+          , whCheckSuiteStatus = HookCheckSuiteStatusCompleted
+          , whCheckSuiteConclusion = Just HookCheckSuiteConclusionActionRequired
+          , whCheckSuiteUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/123451234"
+          , whCheckSuiteBeforeSha = Just "15c99c3e0b9d840d8465be47813cf39686815f2e"
+          , whCheckSuiteAfterSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+          , whCheckSuitePullRequests =
+              V.fromList [
+                HookChecksPullRequest
+                  { whChecksPullRequestUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"
+                  , whChecksPullRequestId = 12345123222
+                  , whChecksPullRequestNumber = 1
+                  , whChecksPullRequestHead =
+                      HookChecksPullRequestTarget
+                        { whChecksPullRequestTargetSha = "a68c473cf629b651f6e615c7d0eea95811d2db3d"
+                        , whChecksPullRequestTargetRef = "test-pr"
+                        , whChecksPullRequestTargetRepo =
+                            HookChecksPullRequestRepository
+                              { whChecksPullRequestRepositoryId = 12345123333
+                              , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                              , whChecksPullRequestRepositoryName = "public-repo"
+                              }
+                        }
+                  , whChecksPullRequestBase =
+                      HookChecksPullRequestTarget
+                        { whChecksPullRequestTargetSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                        , whChecksPullRequestTargetRef = "master"
+                        , whChecksPullRequestTargetRepo =
+                            HookChecksPullRequestRepository
+                              { whChecksPullRequestRepositoryId = 123451234444
+                              , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                              , whChecksPullRequestRepositoryName = "public-repo"
+                              }
+                        }
+                  }
+              ]
+          , whCheckSuiteCreatedAt = read "2020-02-18 00:54:04"
+          , whCheckSuiteUpdatedAt = read "2020-02-18 00:54:04"
+          , whCheckSuiteLatestCheckRunsCount = Just 0
+          , whCheckSuiteCheckRunsUrl = Just (URL "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/12341234111/check-runs")
+          , whCheckSuiteHeadCommit =
+              Just
+                HookCheckSuiteCommit
+                  { whCheckSuiteCommitSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                  , whCheckSuiteCommitAuthor =
+                      HookSimpleUser
+                        { whSimplUserName = "baxterthehacker"
+                        , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"
+                        , whSimplUserLogin = Nothing
+                        }
+                  , whCheckSuiteCommitCommitter =
+                      HookSimpleUser
+                        { whSimplUserName = "baxterthehacker"
+                        , whSimplUserEmail = "baxterthehacker@users.noreply.github.com"
+                        , whSimplUserLogin = Nothing
+                        }
+                  }
+          }
+    , evCheckSuiteRepository =
+        HookRepository
+          { whRepoId = 35129377
+          , whRepoName = "public-repo"
+          , whRepoFullName = "baxterthehacker/public-repo"
+          , whRepoOwner =
+              Right HookUser
+                { whUserLogin = "baxterthehacker"
+                , whUserId = 6752317
+                , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"
+                , whUserGravatarId = URL ""
+                , whUserUrl = URL "https://api.github.com/users/baxterthehacker"
+                , whUserHtmlUrl = URL "https://github.com/baxterthehacker"
+                , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"
+                , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"
+                , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"
+                , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"
+                , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"
+                , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"
+                , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"
+                , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"
+                , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"
+                , whUserType = OwnerOrganization
+                , whUserIsAdminOfSite = False
+                }
+          , whRepoIsPrivate = False
+          , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"
+          , whRepoDescription = ""
+          , whRepoIsAFork = False
+          , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+          , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"
+          , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"
+          , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"
+          , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"
+          , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"
+          , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"
+          , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"
+          , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"
+          , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"
+          , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"
+          , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"
+          , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"
+          , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"
+          , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"
+          , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"
+          , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"
+          , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"
+          , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"
+          , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"
+          , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"
+          , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"
+          , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"
+          , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"
+          , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"
+          , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"
+          , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"
+          , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"
+          , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"
+          , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"
+          , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"
+          , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"
+          , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"
+          , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"
+          , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"
+          , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"
+          , whRepoCreatedAt = read "2015-05-05 23:40:12"
+          , whRepoUpdatedAt = read "2015-05-05 23:40:12"
+          , whRepoPushedAt = read "2015-05-05 23:40:27"
+          , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"
+          , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"
+          , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"
+          , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"
+          , whRepoHomepage = Nothing
+          , whRepoSize = 0
+          , whRepoStargazersCount = 0
+          , whRepoWatchersCount = 0
+          , whRepoLanguage = Nothing
+          , whRepoHasIssues = True
+          , whRepoHasDownloads = True
+          , whRepoHasWiki = True
+          , whRepoHasPages = True
+          , whRepoForkCount = 0
+          , whRepoMirrorUrl = Nothing
+          , whRepoOpenIssuesCount = 2
+          , whRepoDefaultBranchName = "master"
+          }
+    , evCheckSuiteOrganization =
+        Just
+          HookOrganization
+            { whOrgLogin = "baxterandthehackers"
+            , whOrgId = 4312013
+            , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"
+            , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"
+            , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"
+            , whOrgHooksUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/hooks")
+            , whOrgIssuesUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/issues")
+            , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"
+            , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"
+            , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"
+            , whOrgDescription = T.empty
+            }
+    , evCheckSuiteSender =
+        HookUser
+          { whUserLogin = "baxterthehacker"
+          , whUserId = 6752317
+          , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"
+          , whUserGravatarId = URL ""
+          , whUserUrl = URL "https://api.github.com/users/baxterthehacker"
+          , whUserHtmlUrl = URL "https://github.com/baxterthehacker"
+          , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"
+          , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"
+          , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"
+          , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"
+          , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"
+          , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"
+          , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"
+          , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"
+          , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"
+          , whUserType = OwnerUser
+          , whUserIsAdminOfSite = False
+          }
+    , evCheckSuiteInstallation =
+        Just
+          HookChecksInstallation
+            { whChecksInstallationId = 1234123
+            }
+    }
+
+checkRunEventFixture :: CheckRunEvent
+checkRunEventFixture = CheckRunEvent
+    { evCheckRunAction = CheckRunEventActionRequestedAction
+    , evCheckRunCheckRun =
+        HookCheckRun
+          { whCheckRunId = 123412411
+          , whCheckRunHeadSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+          , whCheckRunExternalId = ""
+          , whCheckRunUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/check-runs/454339238"
+          , whCheckRunHtmlUrl =  URL"https://github.com/baxterthehacker/public-repo/runs/454339238"
+          , whCheckRunDetailsUrl = URL "https://www.baxterthehacker.com"
+          , whCheckRunStatus = HookCheckRunStatusCompleted
+          , whCheckRunConclusion = Just HookCheckRunConclusionStale
+          , whCheckRunStartedAt = read "2020-02-19 02:44:54"
+          , whCheckRunCompletedAt = Nothing
+          , whCheckRunOutput =
+              HookCheckRunOutput
+                { whCheckRunOutputTitle = Nothing
+                , whCheckRunOutputSummary = Nothing
+                , whCheckRunOutputText = Nothing
+                , whCheckRunOutputAnnotationsCount = 0
+                , whCheckRunOutputAnnotationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/check-runs/454339238/annotations"
+                }
+          , whCheckRunName = "Test Check Run"
+          , weCheckRunCheckSuite =
+              HookCheckSuite
+                { whCheckSuiteId = 12341234111
+                , whCheckSuiteHeadBranch = Just "test-pr"
+                , whCheckSuiteHeadSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                , whCheckSuiteStatus = HookCheckSuiteStatusQueued
+                , whCheckSuiteConclusion = Nothing
+                , whCheckSuiteUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/check-suites/123451234"
+                , whCheckSuiteBeforeSha = Just "15c99c3e0b9d840d8465be47813cf39686815f2e"
+                , whCheckSuiteAfterSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                , whCheckSuitePullRequests =
+                    V.fromList [
+                      HookChecksPullRequest
+                        { whChecksPullRequestUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"
+                        , whChecksPullRequestId = 12345123222
+                        , whChecksPullRequestNumber = 1
+                        , whChecksPullRequestHead =
+                            HookChecksPullRequestTarget
+                              { whChecksPullRequestTargetSha = "a68c473cf629b651f6e615c7d0eea95811d2db3d"
+                              , whChecksPullRequestTargetRef = "test-pr"
+                              , whChecksPullRequestTargetRepo =
+                                  HookChecksPullRequestRepository
+                                    { whChecksPullRequestRepositoryId = 12345123333
+                                    , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                                    , whChecksPullRequestRepositoryName = "public-repo"
+                                    }
+                              }
+                        , whChecksPullRequestBase =
+                            HookChecksPullRequestTarget
+                              { whChecksPullRequestTargetSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                              , whChecksPullRequestTargetRef = "master"
+                              , whChecksPullRequestTargetRepo =
+                                  HookChecksPullRequestRepository
+                                    { whChecksPullRequestRepositoryId = 123451234444
+                                    , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                                    , whChecksPullRequestRepositoryName = "public-repo"
+                                    }
+                              }
+                        }
+                    ]
+                , whCheckSuiteCreatedAt = read "2020-02-18 00:54:04"
+                , whCheckSuiteUpdatedAt = read "2020-02-18 00:54:04"
+                , whCheckSuiteLatestCheckRunsCount = Nothing
+                , whCheckSuiteCheckRunsUrl = Nothing
+                , whCheckSuiteHeadCommit = Nothing
+                }
+          , whCheckRunPullRequests =
+              V.fromList [
+                HookChecksPullRequest
+                  { whChecksPullRequestUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls/1"
+                  , whChecksPullRequestId = 12345123222
+                  , whChecksPullRequestNumber = 1
+                  , whChecksPullRequestHead =
+                      HookChecksPullRequestTarget
+                        { whChecksPullRequestTargetSha = "a68c473cf629b651f6e615c7d0eea95811d2db3d"
+                        , whChecksPullRequestTargetRef = "test-pr"
+                        , whChecksPullRequestTargetRepo =
+                            HookChecksPullRequestRepository
+                              { whChecksPullRequestRepositoryId = 12345123333
+                              , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                              , whChecksPullRequestRepositoryName = "public-repo"
+                              }
+                        }
+                  , whChecksPullRequestBase =
+                      HookChecksPullRequestTarget
+                        { whChecksPullRequestTargetSha = "45deaf5013c757e58e2665849c3fd3add3edfa59"
+                        , whChecksPullRequestTargetRef = "master"
+                        , whChecksPullRequestTargetRepo =
+                            HookChecksPullRequestRepository
+                              { whChecksPullRequestRepositoryId = 123451234444
+                              , whChecksPullRequestRepositoryUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+                              , whChecksPullRequestRepositoryName = "public-repo"
+                              }
+                        }
+                  }
+              ]
+          }
+    , evCheckRunRequestedAction =
+        Just
+          HookCheckRunRequestedAction
+            { whCheckRunRequestedActionIdentifier = "fix_errors"
+            }
+    , evCheckRunRepository =
+        HookRepository
+          { whRepoId = 35129377
+          , whRepoName = "public-repo"
+          , whRepoFullName = "baxterthehacker/public-repo"
+          , whRepoOwner =
+              Right HookUser
+                { whUserLogin = "baxterthehacker"
+                , whUserId = 6752317
+                , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"
+                , whUserGravatarId = URL ""
+                , whUserUrl = URL "https://api.github.com/users/baxterthehacker"
+                , whUserHtmlUrl = URL "https://github.com/baxterthehacker"
+                , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"
+                , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"
+                , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"
+                , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"
+                , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"
+                , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"
+                , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"
+                , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"
+                , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"
+                , whUserType = OwnerOrganization
+                , whUserIsAdminOfSite = False
+                }
+          , whRepoIsPrivate = False
+          , whRepoHtmlUrl = URL "https://github.com/baxterthehacker/public-repo"
+          , whRepoDescription = ""
+          , whRepoIsAFork = False
+          , whRepoUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo"
+          , whRepoForksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/forks"
+          , whRepoKeysUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/keys{/key_id}"
+          , whRepoCollaboratorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/collaborators{/collaborator}"
+          , whRepoTeamsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/teams"
+          , whRepoHooksUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/hooks"
+          , whRepoIssueEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/events{/number}"
+          , whRepoEventsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/events"
+          , whRepoAssigneesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/assignees{/user}"
+          , whRepoBranchesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/branches{/branch}"
+          , whRepoTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/tags"
+          , whRepoBlobsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/blobs{/sha}"
+          , whRepoGitTagsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/tags{/sha}"
+          , whRepoGitRefsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/refs{/sha}"
+          , whRepoTreesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/trees{/sha}"
+          , whRepoStatusesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/statuses/{sha}"
+          , whRepoLanguagesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/languages"
+          , whRepoStargazersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/stargazers"
+          , whRepoContributorsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contributors"
+          , whRepoSubscribersUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscribers"
+          , whRepoSubscriptionUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/subscription"
+          , whRepoCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/commits{/sha}"
+          , whRepoGitCommitsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/git/commits{/sha}"
+          , whRepoCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/comments{/number}"
+          , whRepoIssueCommentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues/comments{/number}"
+          , whRepoContentsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/contents/{+path}"
+          , whRepoCompareUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/compare/{base}...{head}"
+          , whRepoMergesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/merges"
+          , whRepoArchiveUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/{archive_format}{/ref}"
+          , whRepoDownloadsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/downloads"
+          , whRepoIssuesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/issues{/number}"
+          , whRepoPullsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/pulls{/number}"
+          , whRepoMilestonesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/milestones{/number}"
+          , whRepoNotificationsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/notifications{?since,all,participating}"
+          , whRepoLabelsUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/labels{/name}"
+          , whRepoReleasesUrl = URL "https://api.github.com/repos/baxterthehacker/public-repo/releases{/id}"
+          , whRepoCreatedAt = read "2015-05-05 23:40:12"
+          , whRepoUpdatedAt = read "2015-05-05 23:40:12"
+          , whRepoPushedAt = read "2015-05-05 23:40:27"
+          , whRepoGitUrl = URL "git://github.com/baxterthehacker/public-repo.git"
+          , whRepoSshUrl = URL "git@github.com:baxterthehacker/public-repo.git"
+          , whRepoCloneUrl = URL "https://github.com/baxterthehacker/public-repo.git"
+          , whRepoSvnUrl = URL "https://github.com/baxterthehacker/public-repo"
+          , whRepoHomepage = Nothing
+          , whRepoSize = 0
+          , whRepoStargazersCount = 0
+          , whRepoWatchersCount = 0
+          , whRepoLanguage = Nothing
+          , whRepoHasIssues = True
+          , whRepoHasDownloads = True
+          , whRepoHasWiki = True
+          , whRepoHasPages = True
+          , whRepoForkCount = 0
+          , whRepoMirrorUrl = Nothing
+          , whRepoOpenIssuesCount = 2
+          , whRepoDefaultBranchName = "master"
+          }
+    , evCheckRunOrganization =
+        Just
+          HookOrganization
+            { whOrgLogin = "baxterandthehackers"
+            , whOrgId = 4312013
+            , whOrgUrl = URL "https://api.github.com/orgs/baxterandthehackers"
+            , whOrgReposUrl = URL "https://api.github.com/orgs/baxterandthehackers/repos"
+            , whOrgEventsUrl = URL "https://api.github.com/orgs/baxterandthehackers/events"
+            , whOrgHooksUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/hooks")
+            , whOrgIssuesUrl = Just (URL "https://api.github.com/orgs/baxterandthehackers/issues")
+            , whOrgMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/members{/member}"
+            , whOrgPublicMembersUrl = URL "https://api.github.com/orgs/baxterandthehackers/public_members{/member}"
+            , whOrgAvatarUrl = URL "https://avatars.githubusercontent.com/u/4312013?v=3"
+            , whOrgDescription = T.empty
+            }
+    , evCheckRunSender =
+        HookUser
+          { whUserLogin = "baxterthehacker"
+          , whUserId = 6752317
+          , whUserAvatarUrl = URL "https://avatars.githubusercontent.com/u/6752317?v=3"
+          , whUserGravatarId = URL ""
+          , whUserUrl = URL "https://api.github.com/users/baxterthehacker"
+          , whUserHtmlUrl = URL "https://github.com/baxterthehacker"
+          , whUserFollowersUrl = URL "https://api.github.com/users/baxterthehacker/followers"
+          , whUserFollowingUrl = URL "https://api.github.com/users/baxterthehacker/following{/other_user}"
+          , whUserGistsUrl = URL "https://api.github.com/users/baxterthehacker/gists{/gist_id}"
+          , whUserStarredUrl = URL "https://api.github.com/users/baxterthehacker/starred{/owner}{/repo}"
+          , whUserSubscriptionsUrl = URL "https://api.github.com/users/baxterthehacker/subscriptions"
+          , whUserOrganizationsUrl = URL "https://api.github.com/users/baxterthehacker/orgs"
+          , whUserReposUrl = URL "https://api.github.com/users/baxterthehacker/repos"
+          , whUserEventsUrl = URL "https://api.github.com/users/baxterthehacker/events{/privacy}"
+          , whUserReceivedEventsUrl = URL "https://api.github.com/users/baxterthehacker/received_events"
+          , whUserType = OwnerUser
+          , whUserIsAdminOfSite = False
+          }
+    , evCheckRunInstallation =
+        Just
+          HookChecksInstallation
+            { whChecksInstallationId = 1234123
+            }
+    }
 
 commitCommentEventFixture :: CommitCommentEvent
 commitCommentEventFixture = CommitCommentEvent
diff --git a/src/GitHub/Data/Webhooks/Events.hs b/src/GitHub/Data/Webhooks/Events.hs
--- a/src/GitHub/Data/Webhooks/Events.hs
+++ b/src/GitHub/Data/Webhooks/Events.hs
@@ -11,6 +11,12 @@
     ( EventHasSender(..)
     , EventHasRepo(..)
       --
+    , CheckSuiteEventAction(..)
+    , CheckSuiteEvent(..)
+      --
+    , CheckRunEventAction(..)
+    , CheckRunEvent(..)
+      --
     , CommitCommentEvent(..)
     , CommitCommentEventAction(..)
       --
@@ -103,9 +109,12 @@
     ) where
 
 import           Data.Aeson               (FromJSON(..), withObject, withText, (.:), (.:?), (.!=))
+import           Control.Applicative      ((<*>), pure)
 import           Control.DeepSeq          (NFData(..))
 import           Control.DeepSeq.Generics (genericRnf)
 import           Data.Data                (Data, Typeable)
+import           Data.Functor             ((<$>))
+import           Data.Monoid              (mempty)
 import           Data.Time                (UTCTime)
 import           Data.Text                (Text)
 import           Data.Vector              (Vector)
@@ -124,6 +133,88 @@
     repoForEvent :: eventKind -> HookRepository
 
 -- | Represents the "action" field in the
+-- 'CheckSuiteEvent' payload.
+data CheckSuiteEventAction
+    -- | Decodes from "completed"
+    = CheckSuiteEventActionCompleted
+    -- | Decodes from "requested"
+    | CheckSuiteEventActionRequested
+    -- | Decodes from "rerequested"
+    | CheckSuiteEventActionRerequested
+    -- | The result of decoding an unknown check suite event action type
+    | CheckSuiteEventActionOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
+
+instance NFData CheckSuiteEventAction where rnf = genericRnf
+
+instance FromJSON CheckSuiteEventAction where
+  parseJSON = withText "Check suite event action" $ \t ->
+      case t of
+          "completed"          -> pure CheckSuiteEventActionCompleted
+          "requested"          -> pure CheckSuiteEventActionRequested
+          "rerequested"        -> pure CheckSuiteEventActionRerequested
+          _                    -> pure (CheckSuiteEventActionOther t)
+
+-- | Triggered when a check suite is completed, requested, or rerequested.
+-- See <https://developer.github.com/v3/activity/events/types/#checksuiteevent>.
+data CheckSuiteEvent = CheckSuiteEvent
+    { evCheckSuiteAction              :: !CheckSuiteEventAction
+    , evCheckSuiteCheckSuite          :: !HookCheckSuite
+    , evCheckSuiteRepository          :: !HookRepository
+    , evCheckSuiteOrganization        :: !(Maybe HookOrganization)
+    , evCheckSuiteSender              :: !HookUser
+    , evCheckSuiteInstallation        :: !(Maybe HookChecksInstallation)
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance EventHasSender CheckSuiteEvent where senderOfEvent = evCheckSuiteSender
+instance EventHasRepo CheckSuiteEvent where repoForEvent = evCheckSuiteRepository
+instance NFData CheckSuiteEvent where rnf = genericRnf
+
+-- | Represents the "action" field in the
+-- 'CheckRunEvent' payload.
+data CheckRunEventAction
+    -- | Decodes from "created"
+    = CheckRunEventActionCreated
+    -- | Decodes from "completed"
+    | CheckRunEventActionCompleted
+    -- | Decodes from "rerequested"
+    | CheckRunEventActionRerequested
+    -- | Decodes from "requested_action"
+    | CheckRunEventActionRequestedAction
+    -- | The result of decoding an unknown check run event action type
+    | CheckRunEventActionOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
+
+instance NFData CheckRunEventAction where rnf = genericRnf
+
+instance FromJSON CheckRunEventAction where
+  parseJSON = withText "Check suite event action" $ \t ->
+      case t of
+          "created"            -> pure CheckRunEventActionCreated
+          "completed"          -> pure CheckRunEventActionCompleted
+          "requested"          -> pure CheckRunEventActionRerequested
+          "requested_action"   -> pure CheckRunEventActionRequestedAction
+          _                    -> pure (CheckRunEventActionOther t)
+
+-- | Triggered when a check run is created, rerequested, completed, or has a requested_action.
+-- See <https://developer.github.com/v3/activity/events/types/#checkrunevent>.
+data CheckRunEvent = CheckRunEvent
+    { evCheckRunAction              :: !CheckRunEventAction
+    , evCheckRunCheckRun            :: !HookCheckRun
+    , evCheckRunRequestedAction     :: !(Maybe HookCheckRunRequestedAction)
+    , evCheckRunRepository          :: !HookRepository
+    , evCheckRunOrganization        :: !(Maybe HookOrganization)
+    , evCheckRunSender              :: !HookUser
+    , evCheckRunInstallation        :: !(Maybe HookChecksInstallation)
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance EventHasSender CheckRunEvent where senderOfEvent = evCheckRunSender
+instance EventHasRepo CheckRunEvent where repoForEvent = evCheckRunRepository
+instance NFData CheckRunEvent where rnf = genericRnf
+
+-- | Represents the "action" field in the
 -- 'CommitCommentEvent' payload.
 data CommitCommentEventAction
     -- | Decodes from "created"
@@ -1190,6 +1281,25 @@
 
 
 -- Aeson Instances
+
+instance FromJSON CheckSuiteEvent where
+    parseJSON = withObject "CheckSuiteEvent" $ \o -> CheckSuiteEvent
+        <$> o .: "action"
+        <*> o .: "check_suite"
+        <*> o .: "repository"
+        <*> o .:? "organization"
+        <*> o .: "sender"
+        <*> o .:? "installation"
+
+instance FromJSON CheckRunEvent where
+    parseJSON = withObject "CheckRunEvent" $ \o -> CheckRunEvent
+        <$> o .: "action"
+        <*> o .: "check_run"
+        <*> o .:? "requested_action"
+        <*> o .: "repository"
+        <*> o .:? "organization"
+        <*> o .: "sender"
+        <*> o .:? "installation"
 
 instance FromJSON CommitCommentEvent where
     parseJSON = withObject "CommitCommentEvent" $ \o -> CommitCommentEvent
diff --git a/src/GitHub/Data/Webhooks/Payload.hs b/src/GitHub/Data/Webhooks/Payload.hs
--- a/src/GitHub/Data/Webhooks/Payload.hs
+++ b/src/GitHub/Data/Webhooks/Payload.hs
@@ -30,6 +30,19 @@
     , HookProjectColumn(..)
     , HookIssueLabels(..)
     , HookCommit(..)
+    , HookCheckSuiteStatus(..)
+    , HookCheckSuiteConclusion(..)
+    , HookCheckSuite(..)
+    , HookCheckSuiteCommit(..)
+    , HookCheckRunStatus(..)
+    , HookCheckRunConclusion(..)
+    , HookCheckRun(..)
+    , HookCheckRunOutput(..)
+    , HookCheckRunRequestedAction(..)
+    , HookChecksInstallation(..)
+    , HookChecksPullRequest(..)
+    , HookChecksPullRequestRepository(..)
+    , HookChecksPullRequestTarget(..)
     , HookRelease(..)
     , HookPullRequest(..)
     , PullRequestTarget(..)
@@ -47,8 +60,9 @@
 import           Data.Aeson               (FromJSON(..), withObject, withText, (.!=), (.:), (.:?))
 import           Control.DeepSeq          (NFData (..))
 import           Control.DeepSeq.Generics (genericRnf)
-import           Control.Applicative      ((<|>))
+import           Control.Applicative      ((<|>), (<*>), pure)
 import           Data.Data                (Data, Typeable)
+import           Data.Functor             ((<$>))
 import           Data.Time                (UTCTime)
 import           Data.Time.Clock.POSIX    (posixSecondsToUTCTime)
 import           Data.Text                (Text)
@@ -411,9 +425,247 @@
 
 instance NFData HookIssueLabels where rnf = genericRnf
 
+-- | Represents the "status" field in the
+-- 'HookCheckSuite' payload.
+data HookCheckSuiteStatus
+    -- | Decodes from "requested"
+    = HookCheckSuiteStatusRequested
+    -- | Decodes from "queued".
+    | HookCheckSuiteStatusQueued
+    -- | Decodes from "in_progress"
+    | HookCheckSuiteStatusInProgress
+    -- | Decodes from "completed"
+    | HookCheckSuiteStatusCompleted
+    -- | The result of decoding an unknown check suite status type
+    | HookCheckSuiteStatusOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
 
--- FIXME: Missing nested metadata that provides commit description
--- FIXME: Missing property "parent" (no examples provided)
+instance NFData HookCheckSuiteStatus where rnf = genericRnf
+
+instance FromJSON HookCheckSuiteStatus where
+  parseJSON = withText "Hook check suite status" $ \t ->
+      case t of
+          "requested"          -> pure HookCheckSuiteStatusRequested
+          "queued"             -> pure HookCheckSuiteStatusQueued
+          "in_progress"        -> pure HookCheckSuiteStatusInProgress
+          "completed"          -> pure HookCheckSuiteStatusCompleted
+          _                    -> pure (HookCheckSuiteStatusOther t)
+
+-- | Represents the "conclusion" field in the
+-- 'HookCheckSuite' payload.
+data HookCheckSuiteConclusion
+    -- | Decodes from "success"
+    = HookCheckSuiteConclusionSuccess
+    -- | Decodes from "failure"
+    | HookCheckSuiteConclusionFailure
+    -- | Decodes from "neutral"
+    | HookCheckSuiteConclusionNeutral
+    -- | Decodes from "cancelled"
+    | HookCheckSuiteConclusionCancelled
+    -- | Decodes from "timed_out"
+    | HookCheckSuiteConclusionTimedOut
+    -- | Decodes from "action_required"
+    | HookCheckSuiteConclusionActionRequired
+    -- | Decodes from "stale"
+    | HookCheckSuiteConclusionStale
+    -- | The result of decoding an unknown check suite conclusion type
+    | HookCheckSuiteConclusionOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
+
+instance NFData HookCheckSuiteConclusion where rnf = genericRnf
+
+instance FromJSON HookCheckSuiteConclusion where
+  parseJSON = withText "Hook check suite status" $ \t ->
+      case t of
+          "success"               -> pure HookCheckSuiteConclusionSuccess
+          "failure"               -> pure HookCheckSuiteConclusionFailure
+          "neutral"               -> pure HookCheckSuiteConclusionNeutral
+          "cancelled"             -> pure HookCheckSuiteConclusionCancelled
+          "timed_out"             -> pure HookCheckSuiteConclusionTimedOut
+          "action_required"       -> pure HookCheckSuiteConclusionActionRequired
+          "stale"                 -> pure HookCheckSuiteConclusionStale
+          _                       -> pure (HookCheckSuiteConclusionOther t)
+
+-- FIXME: Missing nested "app", there are examples, but no documentation.
+-- | Represents the "check_suite" field in the
+-- 'CheckSuiteEvent' payload.
+data HookCheckSuite = HookCheckSuite
+    { whCheckSuiteId                   :: !Int
+    , whCheckSuiteHeadBranch           :: !(Maybe Text) -- ^ The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.
+    , whCheckSuiteHeadSha              :: !Text
+    , whCheckSuiteStatus               :: !HookCheckSuiteStatus
+    , whCheckSuiteConclusion           :: !(Maybe HookCheckSuiteConclusion)
+    , whCheckSuiteUrl                  :: !URL
+    , whCheckSuiteBeforeSha            :: !(Maybe Text)
+    , whCheckSuiteAfterSha             :: !Text
+    , whCheckSuitePullRequests         :: !(Vector HookChecksPullRequest)
+    , whCheckSuiteCreatedAt            :: !UTCTime
+    , whCheckSuiteUpdatedAt            :: !UTCTime
+    , whCheckSuiteLatestCheckRunsCount :: !(Maybe Int) -- not included in the check run nested payload
+    , whCheckSuiteCheckRunsUrl         :: !(Maybe URL) -- not included in the check run nested payload
+    , whCheckSuiteHeadCommit           :: !(Maybe HookCheckSuiteCommit) -- not included in the check run nested payload
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookCheckSuite where rnf = genericRnf
+
+-- | Represents the "head_commit" field in the
+--  'CheckSuiteEvent' payload.
+data HookCheckSuiteCommit = HookCheckSuiteCommit
+    { whCheckSuiteCommitSha               :: !Text          -- ^ Sometimes called the commit 'id'.
+    , whCheckSuiteCommitAuthor            :: !HookSimpleUser
+    , whCheckSuiteCommitCommitter         :: !HookSimpleUser
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookCheckSuiteCommit where rnf = genericRnf
+
+-- | Represents the "status" field in the
+--  'HookCheckRun' payload.
+data HookCheckRunStatus
+    -- | Decodes from "queued"
+    = HookCheckRunStatusQueued
+    -- | Decodes from "in_progress"
+    | HookCheckRunStatusInProgress
+    -- | Decodes from "completed"
+    | HookCheckRunStatusCompleted
+    -- | The result of decoding an unknown check run status type
+    | HookCheckRunStatusOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
+
+instance NFData HookCheckRunStatus where rnf = genericRnf
+
+instance FromJSON HookCheckRunStatus where
+  parseJSON = withText "Hook check suite status" $ \t ->
+      case t of
+          "queued"             -> pure HookCheckRunStatusQueued
+          "in_progress"        -> pure HookCheckRunStatusInProgress
+          "completed"          -> pure HookCheckRunStatusCompleted
+          _                    -> pure (HookCheckRunStatusOther t)
+
+-- | Represents the "conclusion" field in the
+--  'HookCheckRun' payload.
+data HookCheckRunConclusion
+    -- | Decodes from "success"
+    = HookCheckRunConclusionSuccess
+    -- | Decodes from "failure"
+    | HookCheckRunConclusionFailure
+    -- | Decodes from "neutral"
+    | HookCheckRunConclusionNeutral
+    -- | Decodes from "cancelled"
+    | HookCheckRunConclusionCancelled
+    -- | Decodes from "timed_out"
+    | HookCheckRunConclusionTimedOut
+    -- | Decodes from "action_required"
+    | HookCheckRunConclusionActionRequired
+    -- | Decodes from "stale"
+    | HookCheckRunConclusionStale
+    -- | The result of decoding an unknown check run conclusion type
+    | HookCheckRunConclusionOther !Text
+    deriving (Eq, Ord, Show, Generic, Typeable, Data)
+
+instance NFData HookCheckRunConclusion where rnf = genericRnf
+
+instance FromJSON HookCheckRunConclusion where
+  parseJSON = withText "Hook check suite status" $ \t ->
+      case t of
+          "success"               -> pure HookCheckRunConclusionSuccess
+          "failure"               -> pure HookCheckRunConclusionFailure
+          "neutral"               -> pure HookCheckRunConclusionNeutral
+          "cancelled"             -> pure HookCheckRunConclusionCancelled
+          "timed_out"             -> pure HookCheckRunConclusionTimedOut
+          "action_required"       -> pure HookCheckRunConclusionActionRequired
+          "stale"                 -> pure HookCheckRunConclusionStale
+          _                       -> pure (HookCheckRunConclusionOther t)
+
+-- FIXME: Missing nested "app", there are examples, but no documentation.
+-- | Represents the "check_run" field in the
+--  'CheckRunEvent' payload.
+data HookCheckRun = HookCheckRun
+    { whCheckRunId                   :: !Int
+    , whCheckRunHeadSha              :: !Text
+    , whCheckRunExternalId           :: !Text
+    , whCheckRunUrl                  :: !URL
+    , whCheckRunHtmlUrl              :: !URL
+    , whCheckRunDetailsUrl           :: !URL
+    , whCheckRunStatus               :: !HookCheckRunStatus
+    , whCheckRunConclusion           :: !(Maybe HookCheckRunConclusion)
+    , whCheckRunStartedAt            :: !UTCTime
+    , whCheckRunCompletedAt          :: !(Maybe UTCTime)
+    , whCheckRunOutput               :: !HookCheckRunOutput
+    , whCheckRunName                 :: !Text
+    , weCheckRunCheckSuite           :: !HookCheckSuite
+    , whCheckRunPullRequests         :: !(Vector HookChecksPullRequest)
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookCheckRun where rnf = genericRnf
+
+-- | Represents the "output" field in the
+--  'HookCheckRun' payload.
+data HookCheckRunOutput = HookCheckRunOutput
+    { whCheckRunOutputTitle            :: !(Maybe Text)
+    , whCheckRunOutputSummary          :: !(Maybe Text)
+    , whCheckRunOutputText             :: !(Maybe Text)
+    , whCheckRunOutputAnnotationsCount :: !Int
+    , whCheckRunOutputAnnotationsUrl   :: !URL
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookCheckRunOutput where rnf = genericRnf
+
+-- | Represents the "requested_action" field in the
+--  'CheckRunEvent' payload.
+newtype HookCheckRunRequestedAction = HookCheckRunRequestedAction
+    { whCheckRunRequestedActionIdentifier       :: Text
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookCheckRunRequestedAction where rnf = genericRnf
+
+-- | Represents the "installation" field in the checks payloads.
+newtype HookChecksInstallation = HookChecksInstallation
+    { whChecksInstallationId    :: Int
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookChecksInstallation where rnf = genericRnf
+
+-- | Represents the "pull_requests" field in the checks payloads.
+data HookChecksPullRequest = HookChecksPullRequest
+    { whChecksPullRequestUrl              :: !URL
+    , whChecksPullRequestId               :: !Int
+    , whChecksPullRequestNumber           :: !Int
+    , whChecksPullRequestHead             :: !HookChecksPullRequestTarget
+    , whChecksPullRequestBase             :: !HookChecksPullRequestTarget
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookChecksPullRequest where rnf = genericRnf
+
+-- | Represents the "repo" field in the checks pull_request payloads.
+data HookChecksPullRequestRepository = HookChecksPullRequestRepository
+    { whChecksPullRequestRepositoryId                  :: !Int
+    , whChecksPullRequestRepositoryUrl                 :: !URL
+    , whChecksPullRequestRepositoryName                :: !Text
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookChecksPullRequestRepository where rnf = genericRnf
+
+-- | Represents the repo targets in
+--  the checks pull requests repository payloads.
+data  HookChecksPullRequestTarget = HookChecksPullRequestTarget
+    { whChecksPullRequestTargetSha  :: !Text
+    , whChecksPullRequestTargetRef  :: !Text -- ex "somebranch"
+    , whChecksPullRequestTargetRepo :: !HookChecksPullRequestRepository
+    }
+    deriving (Eq, Show, Typeable, Data, Generic)
+
+instance NFData HookChecksPullRequestTarget where rnf = genericRnf
+
+--- FIXME: Missing nested metadata that provides commit description
+--- FIXME: Missing property "parent" (no examples provided)
 data HookCommit = HookCommit
     { whCommitSha               :: !Text          -- ^ Sometimes called the commit 'id'.
     , whCommitUrl               :: !URL
@@ -426,7 +678,6 @@
 
 instance NFData HookCommit where rnf = genericRnf
 
-
 -- FIXME: Missing property "assets" (no examples provided)
 data HookRelease = HookRelease
     { whReleaseUrl              :: !URL
@@ -723,9 +974,9 @@
       <*> o .: "labels_url"
       <*> o .: "releases_url"
       -- FIXME: Wrap optional number/stringified UTCTime in a helper function? See PushEvent fixture
-      <*> ((o .: "created_at")  <|> (posixSecondsToUTCTime <$> o .: "created_at"))
-      <*> ((o .: "updated_at")  <|> (posixSecondsToUTCTime <$> o .: "updated_at"))
-      <*> ((o .: "pushed_at")   <|> (posixSecondsToUTCTime <$> o .: "pushed_at"))
+      <*> ((o .: "created_at")  <|> (posixSecondsToUTCTime . fromInteger <$> o .: "created_at"))
+      <*> ((o .: "updated_at")  <|> (posixSecondsToUTCTime . fromInteger <$> o .: "updated_at"))
+      <*> ((o .: "pushed_at")   <|> (posixSecondsToUTCTime . fromInteger <$> o .: "pushed_at"))
       <*> o .: "git_url"
       <*> o .: "ssh_url"
       <*> o .: "clone_url"
@@ -891,6 +1142,82 @@
       <*> o .: "name"
       <*> o .: "color"
       <*> o .:? "default" .!= False
+
+instance FromJSON HookCheckSuite where
+  parseJSON = withObject "HookCheckSuite" $ \o -> HookCheckSuite
+      <$> o .: "id"
+      <*> o .:? "head_branch"
+      <*> o .: "head_sha"
+      <*> o .: "status"
+      <*> o .:? "conclusion"
+      <*> o .: "url"
+      <*> o .:? "before"
+      <*> o .: "after"
+      <*> o .: "pull_requests"
+      <*> o .: "created_at"
+      <*> o .: "updated_at"
+      <*> o .:? "latest_check_runs_count"
+      <*> o .:? "check_runs_url"
+      <*> o .:? "head_commit"
+
+instance FromJSON HookCheckSuiteCommit where
+  parseJSON = withObject "HookCheckSuiteCommit" $ \o -> HookCheckSuiteCommit
+      <$> o .: "id"
+      <*> o .: "author"
+      <*> o .: "committer"
+
+instance FromJSON HookCheckRun where
+  parseJSON = withObject "HookCheckRun" $ \o -> HookCheckRun
+      <$> o .: "id"
+      <*> o .: "head_sha"
+      <*> o .: "external_id"
+      <*> o .: "url"
+      <*> o .: "html_url"
+      <*> o .: "details_url"
+      <*> o .: "status"
+      <*> o .:? "conclusion"
+      <*> o .: "started_at"
+      <*> o .:? "completed_at"
+      <*> o .: "output"
+      <*> o .: "name"
+      <*> o .: "check_suite"
+      <*> o .: "pull_requests"
+
+instance FromJSON HookCheckRunOutput where
+  parseJSON = withObject "HookCheckRunOutput" $ \o -> HookCheckRunOutput
+      <$> o .: "title"
+      <*> o .: "summary"
+      <*> o .: "text"
+      <*> o .: "annotations_count"
+      <*> o .: "annotations_url"
+
+instance FromJSON HookCheckRunRequestedAction where
+  parseJSON = withObject "HookCheckRunRequestedAction" $ \o -> HookCheckRunRequestedAction
+      <$> o .: "identifier"
+
+instance FromJSON HookChecksInstallation where
+  parseJSON = withObject "HookChecksInstallation" $ \o -> HookChecksInstallation
+      <$> o .: "id"
+
+instance FromJSON HookChecksPullRequest where
+  parseJSON = withObject "HookChecksPullRequest" $ \o -> HookChecksPullRequest
+      <$> o .: "url"
+      <*> o .: "id"
+      <*> o .: "number"
+      <*> o .: "head"
+      <*> o .: "base"
+
+instance FromJSON HookChecksPullRequestTarget where
+    parseJSON = withObject "PullRequestTarget" $ \o -> HookChecksPullRequestTarget
+      <$> o .: "sha"
+      <*> o .: "ref"
+      <*> o .: "repo"
+
+instance FromJSON HookChecksPullRequestRepository where
+  parseJSON = withObject "HookChecksPullRequestRepository" $ \o -> HookChecksPullRequestRepository
+      <$> o .: "id"
+      <*> o .: "url"
+      <*> o .: "name"
 
 instance FromJSON HookCommit where
   parseJSON = withObject "HookCommit" $ \o -> HookCommit
diff --git a/src/GitHub/Data/Webhooks/Secure.hs b/src/GitHub/Data/Webhooks/Secure.hs
--- a/src/GitHub/Data/Webhooks/Secure.hs
+++ b/src/GitHub/Data/Webhooks/Secure.hs
@@ -12,7 +12,9 @@
 import           Control.Monad            (unless)
 import           Control.Exception        (Exception, throwIO)
 import           Data.ByteArray           (convert, constEq)
+import           Data.Data                (Typeable)
 import           Data.Monoid              ((<>))
+import           Data.Functor             ((<$>))
 import           Data.ByteString          (ByteString)
 import           Data.Text                (Text)
 import qualified Data.ByteString.Base16   as B16
@@ -38,6 +40,7 @@
 
 -- | An exception indicating that the given payload is not secure.
 data PayloadNotSecure = PayloadNotSecure
+    deriving (Typeable)
 
 instance Exception PayloadNotSecure
 
diff --git a/stack-examples.yaml b/stack-examples.yaml
new file mode 100644
--- /dev/null
+++ b/stack-examples.yaml
@@ -0,0 +1,9 @@
+resolver: lts-11.5
+packages:
+- .
+- examples/scotty
+- examples/servant
+- examples/servant-simple
+extra-deps:
+# Needed for servant examples
+- servant-github-webhook-0.4.1.0
diff --git a/stack-ghc-7.10.yaml b/stack-ghc-7.10.yaml
--- a/stack-ghc-7.10.yaml
+++ b/stack-ghc-7.10.yaml
@@ -1,8 +1,1 @@
 resolver: lts-6.35
-extra-deps:
-# Needed for servant examples
-- servant-github-webhook-0.4.1.0
-# Examples
-- ./examples/servant-simple
-- ./examples/servant
-- ./examples/scotty
diff --git a/stack-ghc-7.8.yaml b/stack-ghc-7.8.yaml
--- a/stack-ghc-7.8.yaml
+++ b/stack-ghc-7.8.yaml
@@ -1,8 +1,3 @@
 resolver: lts-2.22
 extra-deps:
-# Needed for servant examples
-- servant-github-webhook-0.4.1.0
-# Examples
-- ./examples/servant-simple
-- ./examples/servant
-- ./examples/scotty
+- cryptonite-0.6
diff --git a/stack-ghc-8.0.yaml b/stack-ghc-8.0.yaml
--- a/stack-ghc-8.0.yaml
+++ b/stack-ghc-8.0.yaml
@@ -1,8 +1,1 @@
 resolver: lts-7.24
-extra-deps:
-# Needed for servant examples
-- servant-github-webhook-0.4.1.0
-# Examples
-- ./examples/servant-simple
-- ./examples/servant
-- ./examples/scotty
diff --git a/stack-nightly.yaml b/stack-nightly.yaml
new file mode 100644
--- /dev/null
+++ b/stack-nightly.yaml
@@ -0,0 +1,1 @@
+resolver: nightly-2019-10-15 # Overriden by --resolver nightly on CI matrix
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,8 +1,1 @@
 resolver: lts-11.5
-extra-deps:
-# Needed for servant examples
-- servant-github-webhook-0.4.1.0
-# Examples
-- ./examples/servant-simple
-- ./examples/servant
-- ./examples/scotty
