Summary
A notify node's message templates (title / body) cannot traverse lookup or formula fields of the triggering record. {record.full_name} (a formula field) and {record.account.name} (a lookup hop) render as empty strings, silently producing notifications like "New lead to assign: " with the name missing.
Environment
@objectstack/* 16.1.0 (open edition), single-tenant, sqlite-wasm driver
Steps to reproduce
- On an object, define a formula field, e.g.
crm_lead.full_name = F\record.first_name + " " + record.last_name``.
- In a
record_change flow's notify node, use it in a template:
title: 'New lead to assign: {record.full_name}',
body: '{record.full_name} from {record.company}',
- Trigger the flow (insert a lead) and read the resulting
sys_inbox_message.
Actual behaviour
- The inbox message title is
"New lead to assign: " — {record.full_name} resolved to empty.
- Same for a lookup hop like
{record.crm_account.name}.
- Non-computed scalar columns on the same record (
{record.company}, {record.first_name}) interpolate correctly.
Expected behaviour
The record seeded into a record-change run should expose the same computed/related fields the record has when read via the data API — at minimum formula fields, ideally single-hop lookups. If traversal genuinely isn't supported, templates referencing an unresolvable path should be documented as unsupported and ideally warn at build time, rather than silently emitting blanks.
Impact
Medium. Notifications and alerts are a primary flow output; silently blank names/values make them look broken to end users and there's no design-time signal.
Workaround
Recompose from raw scalar columns in the template, e.g. {record.first_name} {record.last_name} instead of {record.full_name}. Works for formula fields built from local columns; doesn't help for lookup traversal.
Summary
A
notifynode's message templates (title/body) cannot traverse lookup or formula fields of the triggering record.{record.full_name}(a formula field) and{record.account.name}(a lookup hop) render as empty strings, silently producing notifications like"New lead to assign: "with the name missing.Environment
@objectstack/*16.1.0 (open edition), single-tenant, sqlite-wasm driverSteps to reproduce
crm_lead.full_name = F\record.first_name + " " + record.last_name``.record_changeflow'snotifynode, use it in a template:sys_inbox_message.Actual behaviour
"New lead to assign: "—{record.full_name}resolved to empty.{record.crm_account.name}.{record.company},{record.first_name}) interpolate correctly.Expected behaviour
The
recordseeded into a record-change run should expose the same computed/related fields the record has when read via the data API — at minimum formula fields, ideally single-hop lookups. If traversal genuinely isn't supported, templates referencing an unresolvable path should be documented as unsupported and ideally warn at build time, rather than silently emitting blanks.Impact
Medium. Notifications and alerts are a primary flow output; silently blank names/values make them look broken to end users and there's no design-time signal.
Workaround
Recompose from raw scalar columns in the template, e.g.
{record.first_name} {record.last_name}instead of{record.full_name}. Works for formula fields built from local columns; doesn't help for lookup traversal.