When Person Accounts is enabled, your org has two types of Account records living in the same object. Differentiating them is essential — for reports, filters, validation rules, page layouts, automation, integrations. Salesforce gives you several ways to tell them apart, the most reliable being the IsPersonAccount boolean field.
The IsPersonAccount flag
Every Account record has a system field called IsPersonAccount:
true→ Person Accountfalse→ Business Account (regular)
This field is reliable in every context: UI, reports, SOQL, formula fields, validation rules, Apex, Flow, integrations. It’s auto-set by Salesforce based on Record Type — you can’t manually flip it.
In a report filter
Account.IsPersonAccount equals True
In a list view filter
Same — add a filter on Is Person Account = True/False.
In a SOQL query
SELECT Id, Name FROM Account WHERE IsPersonAccount = true
SELECT Id, Name FROM Account WHERE IsPersonAccount = false
In Apex
for (Account a : myAccounts) {
if (a.IsPersonAccount) {
// Person Account logic
} else {
// Business Account logic
}
}
In a formula field or validation rule
IF(IsPersonAccount, "Person", "Business")
By Record Type
Each Account uses a Record Type. Person Accounts use a Record Type marked as “Person Account” (you mark this at Record Type creation). Business Accounts use any other (non-Person) Record Type.
You can filter by Account.RecordType.Name or Account.RecordType.DeveloperName:
SELECT Id FROM Account WHERE RecordType.DeveloperName = 'Person_Account_RT'
This is also reliable but slightly less robust because Record Type names can change.
Visual cues in the UI
- Person Accounts show person icons (silhouette) instead of building icons in some Lightning views
- The page layout is usually different — person fields visible (Birthdate, FirstName)
- The Account header may display “Person Account” subtext
But don’t rely on visual cues for code logic — use IsPersonAccount.
Name display
- Business Account:
Account.Name = "Acme Corp" - Person Account:
Account.Name = "John Smith"(auto-derived from FirstName + LastName)
You don’t directly edit Account.Name on a Person Account — you edit FirstName and LastName, and the platform sets the combined Name.
On the Contact side
When Person Accounts are enabled, the corresponding Contact behind the Person Account also has its own version of the flag:
SELECT Id, AccountId, IsPersonAccount FROM Contact WHERE IsPersonAccount = true
These Contacts are sort of “phantom” — they’re behind Person Accounts and you usually shouldn’t query them separately. Most apps treat the Account side as canonical.
Special considerations in automation
Validation rules, workflows, and flows often need to branch logic for Person vs Business Accounts. Best practice:
IF(IsPersonAccount,
/* require Person fields like Birthdate */
NOT(ISBLANK(PersonBirthdate)),
/* require Business fields like Industry */
NOT(ISBLANK(Industry))
)
This pattern keeps one validation rule clean while enforcing different requirements per type.
Cross-object filters
When filtering a related record (e.g., Opportunities) to only include those tied to Person Accounts, use:
SELECT Id FROM Opportunity WHERE Account.IsPersonAccount = true
The cross-object traversal works because Account is the parent reference.
Page layout assignments
- Different page layouts per type — Business Accounts use Business Account layouts; Person Accounts use Person Account layouts. The platform routes based on Record Type and
IsPersonAccountautomatically.
Differentiating during data import
When loading Account records via Data Loader / API:
- For Business Account: provide Account.Name (company), set RecordTypeId to a Business RT.
- For Person Account: provide FirstName, LastName, set RecordTypeId to the Person Account RT. Don’t set Name — it’s auto-derived. Don’t set IsPersonAccount — it’s auto-set.
If you set the wrong fields with the wrong Record Type, Salesforce throws a validation error.
Bottom line — the simple answer
Use the
IsPersonAccountfield. It’s the cleanest, most reliable way to tell Person and Business Accounts apart in every context — reports, SOQL, Apex, flows, formulas, validation rules. Record Type filtering is a viable fallback when you need to scope by specific Person-Account RT subtypes.
Verified against: Salesforce Help — Person Accounts. Last reviewed 2026-05-17.