Table of Contents
In Salesforce, every contact belongs to one account by default through the AccountId field, a one-to-many setup. To tie a single contact to several accounts, enable Contacts to Multiple Accounts. It uses the AccountContactRelation object to record indirect relationships alongside the contact's primary account.

Introduction
Ever tried to attach one contact to two accounts in Salesforce, only to learn each contact can sit under just one? That is the Salesforce account and contact relationship working exactly as designed. It holds up fine until a consultant or a partner rep starts turning up in deals across several of your accounts.
Force the model, and you end up with duplicate records or broken reporting. The fix is knowing when the default is enough, when to switch on the AccountContactRelation object, and when to duplicate a contact on purpose.
How the default account and contact relationship works in Salesforce
Every contact links to one account through the AccountId field, and that link is a one-to-many: a single account can hold many contacts. The structure holds up until someone works across companies. A consultant on two accounts, or a partner rep covering several, cannot sit in this model without a workaround.

The one-to-many model and the AccountId field
AccountId is the single anchor between a contact and its account. You set it when you create the contact, and you can point it at only one account. Everything downstream keys off this one field, from the account's related lists and roll-up reporting to the way contacts get grouped for aSalesforce email campaign. There is no second account field on the standard contact record, which is the exact reason the cross-account problem exists in the first place.
Why does it behave unlike a standard lookup or master-detail
Account-to-contact is a standard relationship that borrows from both lookup and master-detail, and it is neither. Delete the account, and the contact goes with it, the way master-detail cascades. Yet you reference and report on it like a lookup. You also cannot redefine or remove it the way you can a custom relationship. That hybrid nature is why you cannot reshape it into many-to-many, and why you bolt on a separate object instead.
Account and contact relationship vs account hierarchy: what's the difference
The account and contact relationship links people to companies; the account hierarchy links companies to companies. One connects a contact to one or more accounts. The other connects a parent account to its child accounts through the Parent Account field.
Admins mix these up all the time. If you are tracking a consultant across two clients, you want the relationship. If you are showing that a subsidiary rolls up to a parent firm, you want hierarchy. Reaching for an account tree when the job actually calls for AccountContactRelation is a common and costly wrong turn.
Here is the difference in practice. Anna Doe consults for Acme Corp and Globex, so she sits as one contact with a relationship to each account, and both teams see her without anyone creating a second record. Acme Corp's own structure is a separate question: it and Acme EU both roll up to a parent, Acme Holdings, through the Parent Account field.
That is hierarchy, and Anna has nothing to do with it. Force Anna into the hierarchy, or treat Acme Holdings as one of her relationships, and your reporting stops lining up: account roll-ups start counting a person, and your "who do we know at Acme" view loses Globex. So, anymass email campaign built on that view targets the wrong people. People go into relationships; company structure goes into hierarchy.
AccountContactRelation: the junction object behind related contacts
AccountContactRelation is the standard junction object that lets one contact relate to many accounts. It records a tie between a contact and an account that is not their own, so people who work across companies finally fit. It behaves like Opportunity Contact Roles, linking a contact to an opportunity: a bridge between two records with no built-in connection.
What the junction object does and how many-to-many works
Each row in the object is one relationship. A consultant tied to four of your accounts is one contact with four rows, never four near-identical records. The object replaced the Classic-only Account Contact Roles, so it needs API version 37.0 or later.
How does IsDirect mark the primary account?
Each contact keeps one direct account, the primary, and treats the rest as indirect. The IsDirect field marks that split: true on the primary account, false on every indirect tie. A contact can hold only one direct account at any time.
How the account and contact relationship looks for one person across three accounts:
| Contact | Account | Relationship | IsDirect |
|---|---|---|---|
| Anna Doe | Acme Corp | Direct (primary) | True |
| Anna Doe | Globex | Indirect | False |
| Anna Doe | Initech | Indirect | False |
That flag is what tells the Related Contacts list who sits at their home account and who is only affiliated.
Relationship fields and private contacts
Three more fields track each tie over time. IsActive shows whether it is current. StartDate and EndDate hold their history, so a live affiliation reads differently from a lapsed one. Private contacts are the edge case: a person with no account stays hidden and never shows in any related list, so someone you expect to find may simply be unlinked.
How to enable Contacts to Multiple Accounts in Salesforce
The feature ships off, so an administrator has to switch it on. You do it from Setup, the same console where you manage the rest of yourSalesforce email integration. Setup runs in two parts: enable one setting, then add the related lists to your page layouts.
Plan about ten minutes. The switch is reversible, but turning it off hides existing relationships rather than deleting them, so the data waits if you re-enable.

1. Turn it on in Account Settings
To enable Contacts to Multiple Accounts, follow these three steps:
- From Setup, enter Account Settings in the Quick Find box and select it.
- Check: Allow users to relate a contact to multiple accounts.
- Click Save.
That single checkbox activates the AccountContactRelation object across the whole org. It is the gate for everything that follows.
2. Add Related Contacts and Related Accounts lists to page layouts
The setting surfaces nothing until you edit the layouts. Add the Related Contacts list to the Account page layout and the Related Accounts list to the Contact page layout. Choose the related-list format that displays roles, since the default format can hide them. Skip this step, and users will never see or create a relationship.
3. Create a relationship from the Related Contacts list
Once the lists are live, relating an existing contact to another account takes three steps:
- Open the account, find the Related Contacts list, and click Add Relationship.
- Pick the contact, set the Roles, and leave Direct unchecked for an indirect tie.
- Save. The relationship now appears on both records.
Contact roles, channel sales, and deliberate duplication
Roles give each relationship business meaning, and deliberate duplication is the fallback for the rare case that needs full separation. Get both calls right, and your reporting and your contact view stay clean.
Using the Roles field for ABM and partner relationships
The Roles field is a multi-select picklist that defines how a contact relates to a given account, with values like Business User, Influencer, and Executive Sponsor. Stack several roles on one relationship to map a buying committee or a partner setup.
Because roles attach to the relationship and not the person, the same contact can be an Influencer at one account and a Decision Maker at another. That is what turns a flat list into a map of who holds power where, which is what ABM and channel-sales teams run on.
When deliberate duplication makes sense, and when it doesn't
Deliberate duplication means creating a separate contact record per account on purpose, instead of using the relationship object. It fits when each account needs its own activity history, ownership, or sharing with that person. The cost is a split view: duplication isolates records, but fragments reporting and the contact 360.
So the rule stays narrow, duplicate only when isolation matters more than a single view. When you are nurturing the same person across accounts, one record with layered drip campaigns keeps the history together.
One more thing works in your favor here: all of this lives natively in Salesforce. A tool that runs inside Salesforce, rather than syncing data out to a separate platform, can read these relationships exactly as you modeled them. That is the setup that the next section builds on.
Targeting related contacts across accounts in MassMailer
With relationships modeled, MassMailer builds send lists straight from your account and contact data. Because it runs inside Salesforce, there is no export step. It reads AccountContactRelation rows, roles, and the IsActive flag as live filters.
Picture a partner program. You want to email every Influencer across your 20 partner accounts. You filter on Role equals Influencer and IsActive equals true. MassMailer pulls each matching relationship and sends one email per person, even when Anna is an Influencer at three of those accounts. No duplicates, no triple send, and the opens and clicks land on the right contact.
Doing the same send natively is the tedious part. You export a list, then dedupe the person who shows up under three accounts and check each one's primary account and opt-out status by hand. Pulling straight from the relationship data skips that cleanup.
You set the rules in Salesforce, and MassMailer just sends to whoever they qualify, which is worth comparing against native Salesforce email as you weigh your options.
Conclusion
Here is the call, made simple. Stick with the default model when a contact truly belongs to one account. Switch on AccountContactRelation the moment people work across companies, and keep deliberate duplication for the rare case that needs full isolation. For most B2B teams juggling partners and consultants, the relationship object wins, and it takes about ten minutes to enable: check the Account Settings box and add the related lists.
Get that right, and clean targeting follows. Map your relationships once, then reach every related contact across your accounts with zero duplicate records. That is exactly what MassMailer for Salesforce is built to do, so start there.
See it on your own data.Book a MassMailer demo and watch it pull every related contact across your accounts into one clean send, no duplicates, no export.
Frequently Asked Questions
1. What type of relationship is an account to contact in Salesforce?
2. What is the difference between the account hierarchy and the account and contact relationship?
3. What happens to account and contact relationships when you merge two accounts?
4. How do you remove a contact from an account without deleting the contact?
5. Can you add custom fields to AccountContactRelation in Salesforce?
6. Can you report on related contacts across accounts?
Start Your Free Trial Today
Experience MassMailer the easiest way to send personalized emails from Salesforce.
Related Blogs
MassMailer Resources