Logo for The Department of Better Technology.

Rewiring Government

The Department of Better Technology helps governments deliver great digital services to the people who depend on them.

Collecting Net Promoter Score using Screendoor

We love the concept of dogfooding at DOBT. Even though we’re not a government agency, we’re always on the lookout for new opportunities to use Screendoor for ourselves. So, when our Customer Success team mentioned that they were looking at different tools to conduct a Net Promoter Score (NPS) survey with our users, we immediately thought, “Hey, we can build that with Screendoor!”

We’re pretty excited about how easy Screendoor makes this process, so we’ve decided to share our strategy (and our own Screendoor-NPS repository) with all of you. Feel free to try it out and let us know what you think.

This repo is a simple static site, generated with Jekyll, that hosts a small bit of HTML and JavaScript; all of this makes collecting your NPS with Screendoor a piece of cake. The end result is a set of links, displaying values from 0 to 10, that you can send to your users in an email. When a user clicks on a rating link, their response will be saved to Screendoor immediately, and they’ll see a form with an option to add more feedback:

feedback form

If they submit additional feedback, they’ll see a nice “Thank you” note:

thank you note

On the back end, we get to use Screendoor’s powerful response dashboard to view our results:

screendoor response dashboard


Using this code to collect your NPS is easy and can even be done with a free Screendoor account. (Don’t have one yet? You can sign up here.)

First, create a Screendoor project using project_template.yml, the project template that we’ve created for you. (New to project templates? Read the docs here.)

Then, fork this repo so that you can start modifying it. You’ll need to customize the following in config.yml:

You’ll also want to upload a new logo to images/logo.png, unless your application happens to be called “Screendoor” too.

Now, run bundle exec jekyll serve and visit http://localhost:4000/?score=1&email=example@user.com. You did it!

Finally, you’ll want to deploy your site. We deploy using GitHub Pages, but since we use custom plugins, we’re using grunt-gh-pages to handle our deployments. We’ll leave this part up to you.


Now, the fun part! Send an email with 10 links to each user that you wish to collect your NPS from. The links should look like this:

Our email looks like this:

nps email

(The “cohort” parameter is optional, but it allows you to collect NPS from the same user again in the future by changing the cohort value.)

When a user visits the page, their response will be persisted immediately. If they choose to fill out the “comments” section, their response will be amended with that data. We also persist a token to local storage, so if they visit the page again, it does not create duplicate records inside of Screendoor.

Finally, visit your project in Screendoor and watch your responses roll in.

If you decide to take Screendoor for a test-drive and collect your NPS score using our repo, make sure to let us know how it goes!

Adam Becker is a co-founder of The Department of Better Technology.

Want more articles like this? Subscribe to our newsletter.