Signal (formerly Goal)
The Signal node records a milestone when the flow passes through it: a typed value (with history) attached to the borrower, optionally scoped to a deal. It mirrors how metrics work. If you leave the signal empty it behaves like the legacy Goal node — a visual label with no effect.
Configuration
| Option | Description |
|---|---|
signalKey | Signal from the data-models catalog (Settings → Data Models → Signal). Leave empty for a plain marker |
value | Literal value or a flow variable ({{key}}), rendered at runtime. Defaults to true |
dealMode | none (borrower-level), borrower (resolve the borrower's deal at runtime) or fixed (a specific deal) |
dealStepKey | With dealMode: borrower, filters candidate deals by step; most recent wins |
createDealIfMissing | With dealMode: borrower, creates the deal (and its contact link) when none exists |
dealContactRole | Role (from the deal_role catalog) used when linking the borrower to a created deal |
dealId | With dealMode: fixed, the concrete deal |
Signal keys are managed in Settings → Data Models → Signal; give each one a dataType so the stored value is typed correctly. The value input adapts to that type.
When to Use It
Record funnel milestones ("kyc_completed", "offer_accepted"), states that other systems will query, or per-deal progress. If you only want a visual label on the canvas, place the node without selecting a signal key.
Output Handles
Signal has one input and one output; it always advances to the next node. Recording failures never block the flow — they leave a notice instead.