[object Object]

If you sell to enterprises, a single “Account” record cannot represent reality. Acme Global has Acme US, Acme EMEA, Acme APAC, each with separate buyers, separate POs, and often separate currencies. The account hierarchy field is how you model that without creating duplicate accounts.

How the hierarchy works

The Accounts module ships with a parent_account lookup field. Set it on a child to point at the parent. Freshsales then lets you query “all descendants of Acme Global” in reports and views, and roll up deal amounts up the tree.

The tree is unlimited depth, but practical limit is four: Global, Region, Country, Subsidiary. Beyond that, the hierarchy view in the UI becomes unreadable and rollup queries slow down.

Ownership at each level

Each node owns separately. The global account owner can be the global account director; the country account owner can be the local AE. Activities log against the specific node. This matters for commissions: a deal closed against Acme US credits the US AE, not the global director.

To give the global director visibility into all child activities, share child accounts with them via a sharing rule, do not change ownership. Sharing keeps the commission split intact.

Auto-linking from incoming leads

When a new contact comes in with email [email protected], you do not want them auto-linked to “Acme Global.” Build a domain-to-account map as a custom module: rows of domain, account_id. The lead-create workflow looks up the domain and links the contact to the right child account. New domains fall to a manual triage queue.

Rollup deal amounts

Freshsales does not auto-roll deal amounts up the hierarchy. Build a scheduled workflow nightly that walks the tree and writes a total_pipeline_at_or_below field on each parent. Use this field in account reports for “top global accounts by total pipeline” without summing in Excel.

Visibility traps

Default record sharing is by owner. If your AE owns Acme US but the EMEA AE owns Acme EMEA, the US AE cannot see EMEA deals. For account-team selling, create a “Global Account Team” group and share all child accounts with the group. Otherwise the global call has missing context.

Merging duplicates inside a hierarchy

If two records exist for “Acme UK,” merge them, do not delete. Merge preserves the hierarchy link and reassigns activities. Delete orphans the children and breaks rollup.

API model

Via the REST API, the parent link is parent_sales_account_id. To fetch the full subtree, call /api/sales_accounts?filter=parent_sales_account_id:<id> recursively. There is no single-call subtree endpoint; cache the tree client-side if your app shows it often.

Reporting on hierarchy

The native account report has a “Roll up child accounts” toggle. It works for amount and count but not for custom fields. If you need to roll up a custom metric (NPS, support tickets), do it via the nightly workflow above and report on the rollup field.

What to do this week

Pick your top 10 global accounts, draw their real org structure on paper, and confirm the Freshsales hierarchy matches. Fix the gaps, set up domain-based auto-linking for one of them.

[object Object]
Share