Setting up account hierarchy
Use your Account model to define parent–child relationships and optional container rows.
Primary references: Configuring the account model, Account model field reference, and Advanced configuration: parent–child.
Map parent_account_id
- In Configure → Models → Accounts, map a column to the
parent_account_idproperty. - Values must be the
account_idof the parent row, not the parent’s name or CRM name. - The parent row must appear in the same Account model (same query result set). If the parent is missing, FunnelStory cannot attach the child to a parent.
- Leave
parent_account_idempty (or omit it) for top-level accounts.
After you save and refresh the Account model, open an account in the app and confirm the parent link or hierarchy view (when multi-product and hierarchy are enabled for your workspace).
Rules the product enforces
| Rule | Behavior |
|---|---|
| Self-parent | If parent_account_id equals this row’s account_id, the parent link is ignored (treated as a top-level account). |
| Unknown parent | If the value does not match any account_id in the model, the account has no parent in FunnelStory. |
| Circular chains | Avoid A → B and B → A (or longer rings); they produce an inconsistent tree and unpredictable rollups. |
| Multi-level trees | Allowed: a child can point to a parent that is itself a child of another account, and so on. Rollups use direct children only; see Parent account rollups. |
Container accounts
Some organizations use a parent row only as a rollup bucket (holding company, “All APAC,” internal grouping) with no standalone revenue motion. For those rows, add a custom property:
is_container: set to a truthy value FunnelStory recognizes (true,"true","1", or non-zero numbers). See Advanced configuration for SQL examples.
Effects at a high level:
- Predictions: container accounts are not scored like leaf customers; scores for containers can be derived from children after child accounts are updated.
- Other features: several flows treat containers differently from sellable accounts; keep
is_containeraccurate so parents that are real customers stay scored and messaged normally.
If a parent is both a real customer and a grouping parent, leave is_container false and use normal amount / expires_at on that row.
Products on accounts (products)
For multi-product hierarchy, each account should expose products as a JSON array of product_id strings that exist in your Products model. Unknown product ids are dropped on ingest. This list drives product-scoped funnels, filters, and predictions.
See Combine multiple contracts for patterns that build products from joined deal or subscription data.
Verification checklist
- Parent exists for every non-empty
parent_account_id. - No cycles in parent pointers.
account_idremains unique and stable across refreshes.productsids match the Products model when you use product funnels or predictions.- Run Refresh model, then spot-check a deep node and a parent in Accounts / revenue views.
If something looks wrong after refresh, use Verification & troubleshooting.