Platform · Workflows & actions

Run your process, end to end.

Saltcorn workflows are durable: every step is persisted, every failure is recoverable, and a run can suspend mid-execution to wait for a person — then pick up exactly where it left off.

Events · triggers · actions Durable · resumable · auditable
01 / Events & triggers

One idea, all the way down.

Everything automatic in Saltcorn is the same shape: something happens, a trigger notices, and an action responds. An action can be a single step — or an entire workflow.

Event

Something happens

A row changes, a schedule ticks, a user logs in, an API is called — carrying a user, a channel and a payload.

Trigger

Something notices

A trigger binds one action to one event, scoped to a table or channel, configured by the action it runs.

Action

Something responds

One action, or a durable multi-step workflow — the same actions also run straight from buttons in views and pages.

Events you can trigger on

Table insert / update / deleteReact whenever rows in a table change.
Validate variantsRun before a change commits — and veto it if needed.
PeriodicHourly, daily and weekly schedules.
Login / logoutRespond to a user's session lifecycle.
ErrorsCatch failures and route them somewhere useful.
Custom eventsEmit and handle your own named events.
API callsFire automation from the auto-generated REST API.
Plugin eventsMQTT, Twilio, Stripe and more via the eventTypes extension point.
02 / Actions

The smallest unit of automation.

Actions are the verbs of a Saltcorn application. Wire them onto a trigger, drop them behind a button, or chain them into a workflow.

Built-in vocabulary

Do the common things

Modify a row, send an email, call a webhook or external API, run an SQL query, or run arbitrary JavaScript. Plugins add more through the actions extension point.

No-code to full-code

Author how you like

Build action logic block-by-block with Blockly, or write it directly in a CodeMirror editor. The same action runs the same way, however you composed it.

Run from anywhere

Events, buttons, agents

Fire an action from an event, from a button a user clicks, or expose it — along with whole workflows — as a tool an AI agent can call.

03 / Workflows

From one action to many steps.

A workflow — stable since Saltcorn 1.2.0 — is triggered like any other trigger, but instead of one action it runs a sequence of named steps that share a context: a JSON object accumulating state as the run proceeds.

Control flow is declarative. Each step carries a next_step formula, evaluated against the context after the step runs, with every other step's name in scope — so age < 18 ? step2 : step3 wires a branch with no glue code. A dedicated ForLoop step handles iteration, and any step can still drop to JavaScript when it needs to.

The Saltcorn workflow editor canvas: a Start node flowing into named steps that branch across the plane
The workflow canvas — a Start node flowing into named steps (SetContext, UserForm, run_js_code) that branch and merge.
· Why it holds
A workflow run is persisted — its context and current step live in the database, so it survives a restart, waits days for a human, and resumes exactly where it stopped.

Most automation tools lose their place the moment a process dies or a person walks away. Saltcorn treats a running workflow as data, not as a thread in memory — which is what lets a step pause for an approval on Friday and continue on Monday, and what lets multi-node deployments hand a run between servers without dropping it.

Durable by construction Runs are rows, not threads — pausable, resumable, portable
04 / The builder
The Saltcorn workflow step configuration panel: step name, initial-step toggle, an only-if guard, a next-step branch formula, and the step's action settings
Configuring a step — name, initial-step toggle, an only if guard, the next_step branch formula, and the action's own settings.

Wire it up on a canvas.

Lay steps out visually and configure each one in a side panel — no scripting the plumbing between them.

Every step has a name (the identifier other steps' formulas reference), a toggle for whether it's the initial step, an optional only if guard, and the next_step formula that decides what runs next. Pick the action the step performs, fill in that action's settings, and copy, delete or rewire steps freely.

05 / Human-in-the-loop

Bring a person into the run.

Because a run is durable, it can stop and wait for someone, then resume when they respond. Since Saltcorn 1.4 the server can push interactions to the user over the collaboration websocket, and stream LLM output as it is produced.

Modal dialogs

Ask, then continue

Pause to present a form — an approval, a data correction, a checklist — and resume only when the user submits. The run holds its place in between.

WorkflowRoom

Run it as a chat

The WorkflowRoom view template exposes a running workflow as a chat interface — ideal for AI-backed processes that interleave LLM steps with forms and actions, with text streamed live.

06 / Observability

See what ran, and when.

Automation you can't inspect is automation you can't trust. Every run and every event is recorded and reviewable.

Durable runs

Survives restarts

A run's context and current step are stored, so it outlives process restarts and moves cleanly between nodes in a multi-server deployment.

Step traces

Replay each run

Opt in to save a step-by-step trace of every run, then review exactly which steps fired and how the context evolved from the Workflow runs view.

Event log

Audit the whole system

Record events to a configurable event log for auditing and debugging — a durable trail of what happened across triggers, actions and workflows.

Next in the platform
Try it now

Automate a process that actually holds.

Spin up Saltcorn and wire your first trigger, action and workflow together in minutes — free, open-source, durable by default.

Want a hand?

Build it with us.

The Saltcorn team can map your process and build the triggers, actions and workflows behind it.

Contact us