Calculating Your Organisation Net Promoter Score with Forms Pro



Using Net Promoter Score, you can assess customer loyalty for your product, service or organisation. This blog post was previously done using Voice of the Customer for gathering feedback. Can calculating your overall Net Promoter Score be achieved using Microsoft Forms Pro? You bet it can! In this post we will walk through how to achieve this. A lot of the set up is the same as the original post (which you can find here) so a bit of repetition before we get to the Forms Pro stuff!

So what is Net Promoter Score? Net Promoter Score (NPS) is a customer loyalty metric developed by Fred Reichheld, Bain & Company, and Satmetrix 2003. The NPS is calculated based on responses to a single question (on a scale from 0 to 10):

How likely is it that you would recommend our company/product/service to a friend or colleague?

So how is it calculated? Based on responses, customers will be classed as one of the following:

  • Promoter (score 9-10)– will continue to buy from you, refer you and promote you
  • Passive (score 7-8) – satisfied but unenthusiastic. Could be easily swayed by competitors
  • Detractor (score 0-6) – unhappy customer who can damage your brand and impede growth through negative word-of-mouth.

The Net Promoter Score formula then gives you the NPS.  The score can range from a low of -100 (all Detractors) to a high of 100 (all Promoters).


So how can we add this to our Dynamics 365 Customer Engagement environment? There is a bit of set up to get started, but it’s well worth it if your organisation wants to start capturing and understanding their Net Promoter Score. The first thing is to set up Forms Pro (you can find all kinds of blogs and videos about it here). The next thing is to create a Global Option Set for the Net Promoter Score types with Promoter, passive and Detractor as the options. Then create an NPS Type field on the Contact entity.

Including the NPS Type field, add the rest of these fields to the Contact entity. This will allow us to see the most recent NPS score given, and for which survey, and what the previous information given was. This could be helpful to see if a Contact’s perception or opinion has changed drastically, and what caused this. Or, hopefully, where it’s improved!

For the Account entity go ahead and add the following fields. On the Account we will be able to track all of the Contacts who have provided an NPS score, giving us the ability to capture the number of Promoters, Passives and Detractors, then the percentage of each. This then allows us to get the NPS for each Account. Very helpful for Account Managers to see which companies are happy overall.

For the Active Contacts and NPS Contacts, these will be added as you see below, giving us the ability to see how many Contacts exist overall on an Account, and how many of them have actually provided Net Promoter Score data.

For the numbers of each type of NPS contact, we can do a Count with a filter for the NPS Type field (3 needed – one for each type), and for the percentage we will do a calculated field setting the number of each type divided by the number of NPS contacts, multiplied by 100 (3 needed – one for each type).

Finally on the Account we need the calculated field to figure out the Net Promoter Score.

You’ll then need to add fields to the Business Unit entity, which will be the exact same fields you added to the Account entity. The only difference being that the related entity will be the Contacts (Owning Business Unit). Make sure you add all of the fields to your Contact form. Leave the fields open for now. We will need a couple of workflows. Once those are created, you can then make the fields read only so they are only ever updated when new surveys are completed. Then make sure to add your new fields to the Account form, and also to your Business Unit form.

The Net Promoter Score question is one of the options you can add to your Forms Pro Surveys. Create your survey, and make sure to add the Net Promoter Score element to it. When the survey is complete the Net Promoter Score option they gave is part of the survey results. This is then added to the Common Data Service in a Survey Response entity. See how to add these entities in to a Model Drive App for use with your Dynamics 365 entities.

Next we want to make sure the Contact record gets updated with their latest NPS details each time they complete a survey with the NPS question on it. To do this, we will need to create a Microsoft FLOW. The first step is the trigger, which is using the Common Data Service connector, and the option for when a record is updated. Select Survey response as the entity. Next, we want to do a condition check. You might not have added the NPS Score question to all of your surveys, so we are going to check to see if that field is equal to null. If it is, do nothing. If it’s not, meaning it contains a value, then we run the next part of our Flow.

We first need to get the Contact that is set in the regarding field on the Survey response record that was created.

*UPDATE* – 11/08/2019: If your Survey Responses are not set regarding the Contact (if they are linked to a case or other entity), the step above will fail in those instances. After more research, start off the No branch with a List Records step. For the Entity, you won’t find Activity Parties in the list. Instead, scroll to the bottom and click on Enter custom value. Then type activityparties. Your filter query should be _activityid_value eq and then use the Activity id from the initial trigger step. Then type and participationtypemask eq 1. This will mean only the ‘Sender’ of the Survey Response will be pulled. This should be the Contact that you are getting.

Now add your Get Record step to get the Contact, but use the Party value from the previous activityparties step. Then we need to update that Contact record with the details about the Net Promoter Score they gave.

Look for the four new NPS fields you created to be used for the most recent NPS info (in other words, NOT the ones with the word Previous in them). Use the fields from the Survey response field to update the NPS Score, the NPS Last Updated and the NPS Survey. Ignore the NPS Type field for now.

Then look for the ones with the Previous in front, and update those pulling the fields from the Get record step. We are going to update the Previous fields with the current fields from the Contact.

Now we need to set the NPS Type field by setting up several conditions, and checking what the NPS Score is. If it is greater than or equal to 9, we set the NPS Type field to Promoter. If it is less than or equal to 6, we set the NPS Type field to Detractor. If it is 7 or 8, we set the NPS Type field to Passive. You can click on the image to enlarge if it’s not easy to see.

So, the flow is now complete. To test it, fill out a survey for someone using a trigger, something like this or this. Then go and look at your Contact record. You will see that the first section is filled with the NPS info. Fill out a second survey and you will see the first survey info is now in the Previous NPS fields and the new survey info is in the current NPS fields.

Now check out a related Account record, and recalculate the fields for the number of each type of NPS contact, and save the record. You will then see the updated Net Promoter Score for that Account.

You can then get your overall Organisation NPS by looking at your Business Unit.

If you wanted to provide further value to the Account Manager, or anyone interested in getting an overview of an Account, you could create a Word Document template similar to the one below. Quick and easy, and no developer knowledge needed. Just make sure you add in the business unit entity relationship when creating the document so you can show the overall NPS, and the Contact entity relationship so you can add related Contacts and use a repeater to show them all.

Want to just watch how to do this? Check out the video below:

4 thoughts on “Calculating Your Organisation Net Promoter Score with Forms Pro

  1. Hi Megan,

    great stuff. Very similar to what we’re looking for.
    One question: I was under the impression that D365 has a standard field on the contact entity where the NPS (if exists) is captured. Is this a false assumption? Any NPS feedback we want to get fed back to D365 has to go through Flow which populates custom fields?


    1. Hi Thorsten… unfortunately a false assumption. You would need to add an NPS field on to the Contact entity if you wanted to track it on each individual and also get an overall NPS for the entire organisation. And yes, any NPS feedback from Forms Pro Survey Responses, you would need to follow the steps in the post so that you can pull it back on to the Contact record, and then calculate from the Business Unit perspective.

Leave a Reply

Your email address will not be published. Required fields are marked *