node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey »


SendGrid Webhook Server

Build Status CodeClimate

A simple server module to capture SendGrids webhooks and emit the relevant events.

The Event API is well documented on SendGrids documentation pages located here

This module does not (yet) support SendGrids batched events.


npm install sendgrid-webhook


  • port The port the server listens to. Defaults to 3000

Events Emitted

The module emits the following events depending on the payload sent by SendGrid - processed, dropped, delivered, deferred, bounce, open, click, spamreport, unsubscribe.

If a non-post event is detected the module emits a 'request_error' event.

If an event not defined from the list above is in the request parameters, a 'event_error' event is emitted.

The server has a /ping GET method to check it is up. It returns a ‘pong’ response if it is up.

Example Usage

var SendGridWebhook = require('sendgrid-webhook');
// create new server listening on port 3001
var sgevents = new SendGridWebhook({port: 3001});
sgevents.on('processed', function(email, payload) {
    // email is the email address that generated the event
    // payload is a json object containing the parameters sent by SendGrid
    console.log("Email has been processed");


There is a test suite in the test directory. It uses Mocha.

npm test


  • Secret key
  • Batch events
  • SSL

Contributions welcome.