Ask HN: How do you harmonize user data?
If you have an app you probably have user-related data sitting in a bunch of different places.
For instance, I've seen companies with app-specific user data sitting in a database, user sales info in Salesforce, user support info in Zendesk, user chat in Intercom, user design feedback in a Google Sheet, and the list goes on...
Keeping this info separate is bad user experience. People want things personalized. The support team should know about a user's latest design interview, and sales should know about their recent in-app behavior.
What are some best practices for harmonizing user-related data? I'd love to hear some success stories.
20 comments
[ 3.2 ms ] story [ 60.8 ms ] threadSegment (https://segment.com) is one attempt to be the "customer data hub". It never quite did everything I wanted personally. If it works for you, then you can hook it up to something like Keen (https://keen.io) and get a dashboard with nice realtime charts very easily.
My most common approach is to let the data sit in third party services, then pull it together via APIs for reporting.
Being in a very locked-down corporate environment, I used... Excel. A 'master sheet' output various files to various directories that themselves were permissioned for user access, updated once per minute. Which is a crux:
If you're trying to tie a range of systems you need to take into account:
* Permissions. If you have user-related data, you probably don't want everyone accessing and/or writing to this data;
* Data quality. You're lucky to get a unique ID across these systems, unless you've got a unique ID policy in place.
It is, at minimum and for all its present day technical deficits, a big success story.
Then, SaaS came to remove tremendous pains…
• Paypal/Stripe/Braintree/… solve the payments nightmare.
• Zendesk/Intercom/Front/… solve the support nightmare.
• etc…
Nowadays, you have your data from your application in your backoffice and all data from SaaS in their own web interface. As your perfectly said, keeping this info separate is bad UX. It can be very difficult to take good business decisions when data are split.
It is one of the main reason I developed Forest (http://www.forestadmin.com). Forest helps web businesses to have instantly their own customizable admin interface (backoffice). Forest connect your services (SaaS) to gather all the intelligence in one place. You have best of both worlds :-)
Fivetran - https://www.fivetran.com/integrate
Segment Sources - https://segment.com/sources
Snowplow - https://github.com/snowplow/snowplow/wiki/Setting-up-a-Webho...
(Disclosure: Snowplow co-founder)
It helps a lot when the "owners" of data are defined that way, because it's easy to reason about the flows. You can then have a set of APIs in your code for accessing (be it the master data/replicated data/live-fetched from an external system).
There are comments here giving some examples of products intended to help with this, but this is one of those area where the concepts are easy, but execution is challenging. I'd recommend looking less at products, and more at theory to decide how you want to approach it... and then go back and see if any of the products match your decisions.
A well-designed data warehouse is a myth. As long as I'm the person the business needs to call to both get data (eg via SQL) as well as add new data (eg new ETL process), we'll continue to be f'd.
Even if you do need to develop new reports and inputs, so what? Those results empower the business from then on out. And that is ignoring the fact that many products exist to empower the users to develop their own reports.
The best you could do is to have a web page for the customer that shows all of the details from each app in the same place, using API's from each SaaS platform to fetch the user data from each.
If you take an example of an email address, it seems like you could just synchronise it across various systems but that ignores the different purposes that each email address might have. For example, you might have a legitimate reason to separate emails from financial apps from social networks, and games.
The "single view of customer" use case, which is the one you mention in your post, is one of the oldest that this technology aimed to solve and it does solve it very well.
Disclaimer: I work for Denodo (http://denodo.com).