Step Conditions
Generate a JSONLogic condition for step execution in the Dashboard / Novu MCP.When to Use
- The step executes when the condition evaluates to
true. - Use
nullto remove the condition (the step always executes).
Merge vs Replace vs Remove
When editing an existing condition via the Novu MCP, decide based on the user’s intent:| Intent | Behavior |
|---|---|
| ADD / EXTEND — “add”, “also”, “and”, “in addition” | Combine existing condition with new using AND: { "and": [existing, new] } |
| REPLACE — “change to”, “update to”, “set to”, “replace with” | Return the new condition entirely; ignore existing |
| REMOVE — “remove”, “delete”, “clear” | Return null |
Variable Reference Format
Usevar for variable references: { "var": "path.to.value" }.
| Namespace | Source |
|---|---|
payload.* | Trigger payload (e.g. payload.amount, payload.priority) |
subscriber.* | Subscriber data (e.g. subscriber.firstName, subscriber.isOnline) |
steps.* | Previous step state (e.g. steps.welcome-in-app.read, steps.welcome-in-app.seen) |
steps.<http-step-id>.* | HTTP step response properties defined in its responseBodySchema (e.g. steps.fetch-user.role) |
Common Patterns
Subscriber offline
In-App not read
In-App not seen
HTTP response value equals
Only when the property is declared in the HTTP step’sresponseBodySchema. Seehttp-request-step.md.
Payload value equals
Payload value not equals
AND / OR / NOT
Output
Return only theskip field: a JSONLogic object or null.
See Also
design-workflow/references/step-conditions.md— side-by-side Dashboard JSON-Logic vs Frameworkskipsemantics, plus the full list of availablesubscriber.*properties and step-output pathshttp-request-step.md— declareresponseBodySchemaso an HTTP response field becomes addressable insteps.<http-step-id>.<property>design-workflow/references/channel-selection.md— when to use the “subscriber offline” gate on Push