diff --git a/package.json b/package.json
index cfa0afc32f..be5eaaf01a 100644
--- a/package.json
+++ b/package.json
@@ -90,6 +90,7 @@
     "file-type": "4.1.0",
     "fuckadblock": "3.2.1",
     "git-last-commit": "0.2.0",
+    "github-webhook-handler": "0.6.0",
     "glob": "7.1.1",
     "gm": "1.23.0",
     "gulp": "3.9.1",
diff --git a/src/api/server.ts b/src/api/server.ts
index 5f8de5719f..e94a7797f2 100644
--- a/src/api/server.ts
+++ b/src/api/server.ts
@@ -58,6 +58,7 @@ app.use((req, res, next) => {
 	next();
 });
 
+require('./service/github')(app);
 require('./service/twitter')(app);
 
 module.exports = app;
diff --git a/src/api/service/github.ts b/src/api/service/github.ts
new file mode 100644
index 0000000000..680c02c47a
--- /dev/null
+++ b/src/api/service/github.ts
@@ -0,0 +1,18 @@
+import * as express from 'express';
+const createHandler = require('github-webhook-handler');
+import config from '../../conf';
+
+module.exports = (app: express.Application) => {
+	if (config.github_bot == null) return;
+
+	const handler = createHandler({
+		path: '/hooks/github',
+		secret: config.github_bot.hook_secret
+	});
+
+	app.post('/hooks/github', handler);
+
+	handler.on('*', event => {
+		console.dir(event);
+	});
+};
diff --git a/src/config.ts b/src/config.ts
index 2b61bb89a5..e63e3c05ae 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -56,11 +56,15 @@ interface ISource {
 		siteKey: string;
 		secretKey: string;
 	};
-	accesslog: string;
-	twitter: {
+	accesslog?: string;
+	twitter?: {
 		consumer_key: string;
 		consumer_secret: string;
 	};
+	github_bot?: {
+		hook_secret: string;
+		bot_token: string;
+	};
 }
 
 /**