Back to Novu

Step Conditions

docs/.mintlify/skills/dashboard-workflows/references/step-conditions.md

3.18.03.7 KB
Original Source

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 null to 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:

IntentBehavior
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

Use var for variable references: { "var": "path.to.value" }.

NamespaceSource
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

json
{ "==": [{ "var": "subscriber.isOnline" }, "false"] }

In-App not read

json
{ "==": [{ "var": "steps.<stepId>.read" }, "false"] }

In-App not seen

json
{ "==": [{ "var": "steps.<stepId>.seen" }, "false"] }

HTTP response value equals

json
{ "==": [{ "var": "steps.<http-step-id>.status" }, "active"] }

Only when the property is declared in the HTTP step's responseBodySchema. See http-request-step.md.

Payload value equals

json
{ "==": [{ "var": "payload.priority" }, "high"] }

Payload value not equals

json
{ "!=": [{ "var": "payload.priority" }, "low"] }

AND / OR / NOT

json
{ "and": [condition1, condition2] }
json
{ "or": [condition1, condition2] }
json
{ "!": [condition] }

Output

Return only the skip field: a JSONLogic object or null.

See Also