Skip to main content

SF-0086 · Concept · Medium

What are cross object formula fields?

✓ Verified by Vikas Singhal · Last reviewed 5/17/2026 · Updated for Spring '26

A cross-object formula field reads data from a parent record by traversing a lookup or master-detail relationship in the formula expression. Instead of copying a parent value down to the child with automation, you reference it live — the formula always shows the parent’s current value.

The syntax — using __r

For a custom relationship field Account__c on a custom object, you reach into the parent with __r:

Account__r.Industry
Account__r.Owner.Name
Account__r.Owner.Manager.Email

For standard relationships, you use the relationship name without __r:

Account.Name          // Contact -> Account
CreatedBy.Name        // Any object -> User
Account.Owner.Email   // Contact -> Account -> User

Why use them

Use cross-object formula when…Use a copied/stored field when…
The parent value can change and you want the child to reflect it liveYou need to filter, sort, or report on the value with high performance
You only need read accessYou need the value frozen at a point in time
Data volume is moderateReports and list views will be slow with live cross-object joins

The limits

Two hard limits to memorise — interviewers love asking these:

  1. 5 levels of relationship traversal per formula. A.B.C.D.E.F would fail.
  2. 10 unique relationships referenced in a single formula. You can reference the same parent multiple times for free; you just can’t span 11 different parent objects.

A practical example

A Contact’s formula field that pulls the Account’s owner’s email:

Account_Owner_Email__c = Account.Owner.Email

When the Account’s owner changes, the Contact’s Account_Owner_Email__c reflects the new email the next time it’s read. No automation, no flow, no trigger — just a formula.

Gotchas

  • Master-detail relationships are always populated, but lookups can be null. Use BLANKVALUE(Account.Industry, "Unknown") to handle the null case.
  • Cross-object formulas cannot reference Long Text, Encrypted, or some system fields even on the parent.
  • Hierarchical traversal (Manager.Manager.Manager) is supported up to 5 levels — useful for User-object hierarchies.
  • Cross-object filtering in list views is supported, but reports may not be able to filter on certain deeply-nested formula fields efficiently.

Common interview follow-ups

  • “What’s the depth limit?” — 5 levels.
  • “What if the lookup is null?” — formula returns null; use BLANKVALUE or ISBLANK checks.
  • “Why not use a flow to copy the value?” — because then it’s stale unless you re-run on every parent change. Live formula is simpler.

Verified against: Salesforce Help — Cross-Object Formula Fields. Last reviewed 2026-05-17 for Spring ‘26 release.