When a Contact Moves Company in Salesforce

When a Contact Moves Company in Salesforce

Do you know what to do when a contact moves company in Salesforce? There’s no default behaviour for this functionality, but here’s the principle. Over time, individuals will move to other organisations. We can simply change their account. This has the advantage of keeping all their historical data without creating a duplicate. However, this means all the related objects against that contact (opportunities, engagement metrics etc), are all moved to the new account. This will skew the accuracy of your data and reporting. With the help of some brilliant people in the Salesforce Trailblazer Community, we’ve developed our ultimate guide for deactivating contacts.

How We Got Here

We see that simply changing the account can cause more issues, especially when it comes to data fidelity. The natural next step was to implement an ‘active’ checkbox on the contact. This enables us to ‘deactivate’  the contact. We then would create a new contact at a new company. However, this doesn’t do anything other than essentially create a flag. We can, of course, use this flag to remove said contacts from reports and our metrics. This needs to be underpinned by some process to ensure no emails are accidentally sent to an invalid/inactive email. That would increase bounce rates, impacting deliverability across the board.

What we need based on the above as minimum would be a checkbox on the contact, an automation rule to remove that contact from any marketing lists, and a flow to move all related records from the old record to the new one. However, this still leaves a gap on the new contact. We don’t have a simple way to view that history of engagement that is so important for us to keep as a business. So we took it a few steps further.

What You Need

Lookup Field

First, we’ll create a lookup field from one contact to another. We’ll label this as ‘Active Contact’ and the related list ‘Inactive Contact’. This will allow us to reference one record to another and get to our data instantly.


Then, we’ll a checkbox labelled ‘Contact Active?’ that is checked by default. When unchecked, this will trigger the rest of our stack. This whole process is now underpinned by these two fields.

Validation Rule

The first rules we’re going to use is designed to ensure that when a contact is moving company, we ensure a new record is created. We use a validation rule that essentially says, when the checkbox is unchecked, lookup field must be filled. This ensures the relationship and contact journey is always stored.

Workflow Rule

The next step is to create a simple rule to ensure no emails are sent accidentally to addresses that are no longer active. We use the unchecking of the ‘Contact Active’ box to trigger the ‘Do Not Email’ box. If you don’t use Pardot, add the applicable layer here to ensure your contact doesn’t receive emails from your platform. I advise against simply opting them out as this will skew your unsubscribe data accuracy.

BONUS FLOW: Should They Stay or Should They Go?

The only potential gaps remain essentially at the discretion of each business. The question boils down to, do we migrate the tasks, emails or any other records to the new record? If we have a hard and fast rule, we can use the events above to trigger a record flow. This flow would get the related records in questions, and move these over to the new contact. However, if it’s a variable situation, you could use a button to trigger the flow at the user’s discretion. That way not every contact has their associated information, but can be moved easily when required.

All in all, a clean CRM is paramount. With this elegant solution, we can maintain an indefinite history of the individual and maintain an accurate picture of exactly what’s happening when a contact moves company in Salesforce. Take these steps for your own Org, or if you need help, don’t hesitate to get in touch and we can get this set up for you in no time.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.