I find myself spending a lot of time architecting our Company Person model in such a way that will optimize what our system. The problem, though, is there has never really been a perfect - or even decent - blueprint as to how to do this, especially for customers like us (and my previous org) who use the Account Contact Relationship object.
Plus, Gainsight’s arcane “Load to People” action makes updating/upserting to Company Person even harder than it already is, as I’ve already outlined below.
Here are just a few of the common issues I’m constantly playing whack-a-mole with:
- Duplicate and orphaned records: Contacts that exist in Salesforce but don't cleanly map to a Company Person, or Person records that linger in Gainsight long after they've been deactivated or deleted in Salesforce.
- Sync headaches: Field mapping mismatches, sync failures, and contacts that show up in one system but not the other.
- Admin overhead: Time spent building and maintaining rules, connector jobs, and data management plays just to keep contacts in a usable state.
- End-user confusion: CSMs logging Timeline activities to stale contacts because the Person model hasn't caught up with what Salesforce already knows.
I presume the initial intent behind the Person object was to make Gainsight CRM-agnostic, which I understand. But let’s be realistic here - we know Salesforce still is the predominant CRM, which is reflected in the fact its related list functionality, connectors, etc. are all much more well-developed and high-functioning than other CRM competitors. So why not acknowledge this by allowing Salesforce contacts to be the source of truth for Timeline activities, JO Programs, and more if admins so choose? This would presumably have the added benefit for Gainsight of deflecting a lot of support tickets and cleaner customer data.
The bottom line is contact cleanliness is already a difficult issue for pretty much every business. Forcing customers to use the Person/Company Person model compounds the problem.
x