PRO TIPS
Calculating Contact Demographic Completeness

Max Hampton
PROserve Consultant
Clean and complete data is the foundation of any successful Salesforce environment, especially when it comes to the people your organization interacts with on a regular basis. It enables accurate reporting, drives meaningful outreach and communications with your customer base, and ensures compliance when submitting for grants or other sources of funding. But as I’m sure you’ve come to know all too well, it can be a challenge to maintain. Missing and incomplete data is an inevitability and can pile up if left unchecked for too long.
For nonprofits especially, incomplete data isn’t just a slight inconvenience. It can mean missing out on critical funding opportunities, sending appeals to the wrong addresses, or struggling to demonstrate organizational impact in end-of-year reports. Constantly auditing and cleaning up records can be a time-consuming and frustrating process.
While Salesforce reports can be an excellent tool for getting a birds-eye view of what data is missing, it’s often not as interactive or friendly for those who matter most - your actual end-users!
What if you could instantly see how complete a contact is—right from the very page your users are interacting with on a daily basis? Imagine a simple to use, visual indicator that tells you, at a glance, whether key demographic fields that matter most are filled in, helping your team take action when needed.
Using the power of Salesforce screen flows, we can build an end-user interactable widget that exists front and center on any Contact record you navigate to. Telling you exactly how complete or incomplete that particular record is. Keep reading to learn how this tool can help your organization maintain cleaner data with less effort so you can focus on what matters most.
This build could be done for any Salesforce object, but for the purpose of this PRO Tips we only be looking at an example of this built out for the Contact Object.
Calculating Contact Demographics Completeness
The first thing to identify is what key metrics or demographic details are most pertinent to the work you do? There are many general metrics that most Nonprofits track, such as email, phone number, address, birthdate, gender, etc. However your own org may have additional metrics that certain Salesforce functions or reports require to be complete. Based on the total number of metrics you want to check completeness for, we can calculate a color coded overall % Completed for the Contact you're currently viewing.
The first screenshot below shows this tool in action when viewing a Contact record that is fairly incomplete. The flow will dynamically show or hide fields based on what key metrics have been identified, and only display those that are counting towards this records overall completeness. Aside from first name/last name, there's not a lot of information entered for this contact. Based on the number of metrics we're tracking on Contacts, we've calculated that this record is only 17% complete. I think we can do better.

Since this is built as a Screen Flow and embedded on the Contact page, any user with Contact record access can interact directly with the tool to make relevant updates in real time. Users can simply enter in any missing data they know about the contact, and then click "Update Record" to save those changes. Let's go ahead and update a few missing fields for this contact using this Screen Flow.

After clicking "Update Record" we can see that the % Complete score has been updated to 75%, and the color is now yellow to reflect that this contact is almost complete, but not 100% yet.

Let's finalize this record by filling in the last few missing pieces of information within the calculator.

With those final missing pieces of information provided, this contact is now 100% Complete! Any user that navigates to this contact record will also be able to see that this contact is complete and can feel confident that everything they need is available to them.
Behind the Scenes
The Flow itself is very easy to build, combining some of the changes Salesforce has made over the past few years. Here's a screenshot of the whole Flow:

The key thing that we've built on the Contact object is a Formula field to calculate the completeness score as a percentage. Here's a simplified version of the formula that checks for only four fields. It starts each record with a score of 100% and subtracts 1/4 for each item that is missing. Here's a sample:
1 - ( IF(ISBLANK(Missing_Country_of_Origin__c),1,0) + IF(ISBLANK(Gender__c),1,0) + IF(ISBLANK(Missing_Veteran_Status__c),1,0) + IF(ISBLANK(Missing_Emergency_Contact__c),1,0) ) / 4
That formula examines if each field is blank, and if it is, adds one to a running count. If the field is filled in, it adds zero. At the end, we take the sum of each check (a number between zero and four) and divide by four. We then subtract the result from one and that provides a score between zero and one (which translates to between 0% or 100%). If you need to check more than four fields, you can simply add additional IF statements and change the divisor.
In our Screen element, it's very easy to set up fields–we need to create a variable to house the Contact record where the Flow is embedded, as illustrated below:

Making this variable available for input will allow us to drop the Flow onto a Lightning page and check the box labeled Pass all field values from the record into this flow variable in order to grab all the data we need (including the score field).
From there, the setup is really easy. Simply create a screen and click the Fields tab. You can then enter the name of the record variable you created, and Salesforce will show the fields that you can drag and drop onto the screen. Most field types are supported. Here's a screenshot of what it looks like in our flow:

You may notice that we have three color-coded entries for the completeness score in this Flow. That's because Screen Flows don't (yet?) support conditional formatting to change the color of the text based on the score calculation. But they do support conditional visibility.
In this case, we've built three Display Text components that have the coloring we want for low, medium, and high scores and used conditional visibility rules to only show the appropriate one. In this case, if the score is below 70, we'll show the red item. If the score is between 70% and 90%, the yellow version shows. And if the score tops 90%, the user gets a green score. As a bonus, we've used a stoplight emoji–text elements in Screen Flows do support standard emoji, so feel free to copy and paste them from a site like Emojipedia. Here's what that definition looks like for our red text:

From there, simply add the fields you want to update, and add the pink update record element at the end of the Flow, and you should be all set!
Conclusion
Maintaining clean and complete data in Salesforce doesn’t have to be a constant struggle. By leveraging the power of screen flows like this, your nonprofit can empower end-users with real-time visibility into contact completeness—right from the records they interact with daily.
We've given you the basics here, but if you’re ready to implement this for your own organization and get stuck, please get in touch–we'd love to help!
For other tips and tricks on keeping your Salesforce data clean, check out some of our previous PRO Tips on performing Security Reviews, Duplicate Reviews, and Health Checks within Salesforce!