Elsa Workflows: start real workflows from your Justflows site
Elsa Workflows is a new first-party plugin that connects Justflows to Elsa Workflows 3. Design in Elsa Studio inside the admin, and start workflows from comments, forms, your own plugins or by hand, while the credentials stay on the server.

A website is often where a process starts. Someone fills in a form, leaves a comment, or places a booking, and then a person has to notice it and do the next five steps by hand. Usually that means a webhook to an automation service that has its own login, its own copy of your data, and its own idea of who is allowed to change what.
Elsa Workflows is a new first-party plugin that connects a Justflows site to Elsa Workflows 3, the open-source workflow engine for .NET. You design workflows in Elsa Studio, without leaving the Justflows admin, and your site starts them: from a comment, from a form, from another plugin, or by hand.
Elsa Studio inside the admin
Elsa gets its own section in the admin sidebar, marked with the Elsa logo. It has an Overview with the connection health, a Workflows list, an Executions list, and Studio: the Elsa designer, embedded in the admin and opened for this site's tenant.
If you are already signed in to Justflows, Studio does not ask you to sign in again. It uses your Justflows session, and the Elsa API key stays on the server. Full width stretches the designer across the content area, which helps once a workflow grows past a handful of activities.
Start a workflow from anywhere
- By hand. An operator picks a published workflow, adds optional JSON input and a correlation id, confirms, and starts it.
- From a comment. While Elsa is active, the content editor has a Workflow section for each page or post, drafts included. A comment stored as pending or approved starts the workflow you chose there. Spam and trash do not. Elsa is called after the comment is saved, so a slow Elsa server never keeps a visitor waiting.
- From a form. Forms can run one published workflow per form, or publish the Elsa event
justflows.forms.submittedthat any workflow can listen for. The field values arrive as workflow input, and the form keeps working when Elsa is not connected. - From your own plugin. The plugin SDK can trigger an event, dispatch a workflow, or run one and wait for the instance id. More on that below.
Executions shows what happened afterwards: running, finished or faulted, with the correlation id, times and incidents for each run. You do not need to open Elsa to find out why something stopped.
One server, a tenant for every site
You connect the main site to an Elsa 3 server once, with an API key, a bearer token or OAuth client credentials. The connection page tests the server before it saves anything.
On a multisite installation that connection is the shared pool. Every site gets its own Elsa tenant on it, and a site only sees its own workflows and executions. A workspace that needs more can get a dedicated Elsa server, set on the Platform's workspace page. Subsites never see the server address or the credentials.
Platforms decide who gets Elsa and how much. Each website has a monthly limit on workflow starts, and Elsa can be turned off per website. Shared pool and dedicated server are workspace features, so a shop subscription plan can switch them on.
Credentials stay on the server
A workflow engine can usually do a lot, which makes its keys worth protecting. So the browser never receives them. Staff see whether a credential is stored, never its value, and a save that leaves a credential field empty keeps the stored one.
- Every call to Elsa is checked before it leaves your server. Addresses must be HTTPS, and loopback, private, link-local and cloud metadata hosts are refused.
- Errors are turned into fixed categories, and credentials in incident messages are redacted, so no secret ends up in a log.
- Workflow input, variables and output are sent to Elsa or read for display. They are not stored in Justflows.
- An audit log records connection changes and who started which workflow, without the input.
- Only administrators change the connection. Two ready-made roles cover the rest: Elsa operators can view and start workflows, Elsa viewers can only look. Every route checks its own capability, so hiding a menu item is not the only gate.
The plugin also checks the connection every five minutes per site, counts definitions and running and faulted executions twice an hour, and adds an Elsa check to Diagnostics. When Elsa stops answering, you find out in Justflows.
For plugin developers
Any plugin can start a workflow for the current site without ever holding the Elsa credentials. After Elsa has loaded, a plugin calls the SDK like this:
const elsa = globalThis[Symbol.for("justflows.elsa-workflows.sdk")];
await elsa?.triggerElsaEvent({
eventName: "acme.booking.confirmed",
correlationId: bookingId,
input: { bookingId },
});
// → { ok: true, instanceIds: [ … ], correlationId }
In Studio, a workflow that starts with an Event activity of the same name picks it up.
dispatchElsaWorkflow queues one published definition, and executeElsaWorkflow runs one and waits for the instance id. Each successful call emits a hook and a webhook event. When Elsa is not active, or the site has no connection, the call returns ok: false instead of throwing. The SDK reference and the route reference have the details.Like our other first-party plugins, Elsa Workflows uses only the public plugin SDK. Justflows core has no Elsa code in it.
What it does not do yet
Elsa Workflows is in beta, so expect changes before 1.0. A few limits are worth knowing up front:
- Justflows does not host Elsa for you yet. You run the Elsa server yourself.
- Only published workflows can be started.
- Studio sign-in with your Justflows session needs API-key authentication.
- Shop events do not start workflows yet. Use the SDK from your own plugin, or a webhook to an Elsa HTTP endpoint.
- There are no AI agent tools for Elsa yet.
Try it
Elsa Workflows is free, GPL-licensed, and listed as coming soon in the marketplace. It needs Justflows 0.4.1 or later. The documentation covers connecting a server, Studio, comment and form workflows, staff access and limits. If you want to try it without a production Elsa server, the plugin's connection guide explains how to point it at a local one.
You can follow its progress in issue #146. Questions or problems go to support.justflows.com.
View Elsa Workflows in the marketplace✌️
Thanks for reading!
Find more posts on the blog or star Justflows on GitHub.