Busabase

Workflows

Automate a repeatable process with steps that call out, wait, re-check your data, and ask a person to decide.

A Workflow runs a process you repeat: a new lead comes in, Busabase scores it, tells your CRM, waits a day, checks the lead again, and asks your sales lead to approve the handover. You draw the steps once, and each run goes through them on the server. Nobody has to keep a tab open.

A workflow on the canvas with its Runs tab open, showing which steps of the selected run are done.

Build a workflow

Create it

Press + in the sidebar and choose Workflow. If it isn't listed, open More types.

Add steps and connect them

Add steps with + in the workflow's toolbar, then drag from one step to the next. Select a step to set it up under Configure.

Save

Press Save. Runs always use the last saved version, so starting a run is blocked while you have unsaved changes.

What each step does

StepWhat it doesConnections out
TriggerWhere a run starts. It reads the record the run is about, if there is one.One
FunctionRuns a saved webhook rule whose action is Run function. Its return value stays on the step.success
WebhookSends one HTTP request with the run's data as a JSON body (GET sends no body). The response becomes the step's output.success
ConditionChecks an expression and takes one of two paths.true, false
WaitPauses the run for minutes, hours, or days. The pause survives restarts and deployments.elapsed
ActionReads the record again, or updates, creates, or deletes one. See Change records.success
ApprovalPauses until someone approves or rejects.approved, rejected
EndFinishes the run with an outcome.None

A connection's Outcome decides when it is followed. A run never visits the same step twice, and it stops with an error after 64 steps.

Use earlier results in a condition

A condition can read the step right before it as input, and any earlier step through its reference. Select a step and Use this step in formulas as shows what to write, with a button to copy it:

input.status == 200 && steps.score.score >= 80

&& and || stop as soon as the answer is known, and a value that is missing counts as null, so input.body && input.body.ok is safe. Use brackets for names that are not plain words: fields["follow-up"], items[0].

Does a Wait see the latest data?

Only if you ask it to. Every finished step keeps a snapshot of what it saw, so steps.trigger still shows the record as it was when the run began. To work with current values, put an Action step set to Read the record again after the Wait. It reloads the record, and the next step sees it as input.record.

Change records

An Action step can change your data. Choose what it does from the list:

ActionWhat it doesSettings
Update a recordSets fields on a record.Record (optional), Fields to set
Create a recordAdds a record to a Base. Later steps get its id as createdRecordId on this step.Base, Fields to set
Delete a recordMoves a record to its Base's trash, where it can be restored.Record (optional)

An Action step set to Create a record, with its Base, the fields to set, and how to refer to the step in formulas.

Record is the run's own record when left empty. It can also be a record ID, or a formula such as =steps.add.createdRecordId to change the record an earlier step created.

Fields to set is a JSON object:

{ "status": "qualified", "score": "=steps.score.score" }
  • Use a field's name or slug as the key. Plain values are stored as written.
  • A text value that starts with = is a formula over earlier steps. Start with == to store text that itself begins with =.
  • A formula that finds nothing fails the step, so a typo never blanks a field or changes the wrong record.

What else to expect:

  • The step acts as the person the run acts as, with their access to that Base. If they can edit it, the change applies right away. If they can only propose changes, it goes to the Inbox for review, nothing changes yet, and the step fails and names the change request. With On error set to Continue, the run goes on.
  • A change a step applies starts no workflow, including workflows listening to another Base. So a workflow that updates the record it listens to cannot loop, and workflows cannot set each other off. Changes a person makes, or approves later, start workflows as usual.
  • If a run deletes its own record, later steps carry on without one, except Read the record again, which fails.

Start a run

By hand. Open the Runs tab, or press the run button in the toolbar. You can pass a Record ID for the trigger to read, and Payload JSON for any extra data. Then press Start run.

When a record changes. Under Configure:

  1. Select the Trigger and choose When a record is created or When a record is updated.
  2. Pick a Base to limit it to, or leave it on all Bases.
  3. Set Execution mode to Event, then save.

Each matching change queues one run, and the scheduler starts it. Event runs act as the person who last saved the workflow in Event mode. If that person leaves the space, those runs fail and say why.

Other event names are labels only. They do not start runs by themselves. There is no time-based trigger yet.

Follow a run

The Runs tab lists the newest runs of this workflow, and Load older runs goes further back. Select a run to see each step in the order it ran, with what it saw and returned. The canvas marks the same steps as done, paused, or failed.

StatusMeaning
QueuedWaiting to start or continue. It moves on its own, usually within a minute.
RunningExecuting a step right now.
WaitingPaused on a Wait. Continue now skips the rest of the time.
Needs approvalPaused on an Approval.
CompletedReached an End step.
FailedStopped with an error. The reason is shown on the run.
CancelledSomeone stopped it. The run shows who.

Finished runs are kept for 90 days, then deleted. Runs that have not finished are never deleted.

Approvals

An approval step that names a member by email. Only that member and space admins can decide it.

The Approver field decides who can approve or reject:

  • Member emails, separated by commas: only those members and space admins can decide. They need read access to the workflow, but not edit access.
  • No email (empty, or a name like "Sales lead"): anyone who can edit the workflow can decide. A name is just a label.
  • Agents can't decide unless you turn on Let agents decide. See Let agents use workflows.

When a named approver who cannot edit the workflow decides, the run goes to Queued and the scheduler continues it with the access of the person who started it, so an approver's narrower access never changes what the later steps can do.

Workflow approvals live in the Runs tab and in notifications. They are separate from the Inbox, which is for Change Requests.

Cancel a run

Select a run that is Queued, Waiting, or Needs approval, then press Cancel run. A cancelled run cannot be continued, and steps that already ran are not undone.

A run that is executing a step cannot be cancelled until that step finishes, because a request already sent cannot be taken back.

If a bulk import queued more runs than you wanted, Cancel N queued runs at the top of the list stops all the queued ones at once. Runs that are executing a step or paused keep going.

Notifications

WhenWho hears about it
A run stops on an Approval that names peopleThose people
A run stops on an Approval that names nobodyThe person who started the run, and people subscribed to the workflow
A run failsThe person who started the run, and the workflow's creator

You get an in-app notification and an email, and the link opens that run. Whoever is pressing the button at that moment is left out, because they can already see it. Bursts are rolled up: approvals into one message per workflow every 10 minutes, failures into one per hour. The open-source single-user app has no notifications, so check the Runs tab there.

Permissions

To do thisYou need
See runs and their step dataRead access to the workflow
Start, continue early, or cancelEdit access to the workflow
Have a step update, create, or delete a recordWhat the person the run acts as may do in that Base: edit it directly, or propose a change
Approve or rejectDepends on the step, see Approvals

Function and Webhook steps send data outside Busabase, and Action steps can change your data, which is why starting a run needs edit access. Anyone who can read the workflow can see each step's data, so don't put secrets in a payload.

Settings

Select nothing on the canvas (or scroll down under Configure) to change these for the whole workflow.

SettingWhat it does
Execution modeManual starts runs only by hand. Event also lets a record Trigger start them.
On errorStop workflow fails the run when a Function or Webhook step fails. Continue records the error and follows the success path.
ConcurrencyHow many runs of this workflow can execute steps at the same time. Runs paused on a Wait or an Approval don't count. Extra runs queue and start when a slot frees up. With several servers, two starting at the same instant can briefly go one over.
Timeout (ms)The longest a Function or Webhook step can take. A Webhook step never waits more than 30 seconds.

Webhook steps send once and do not retry, because repeating a request is not always safe. Private and internal addresses are refused, including through redirects.

Let agents use workflows

Agents with an API key can use workflows through the REST API, MCP, and the CLI.

Agents canNeeds
See runs and their step dataA key that can read the workflow
Start a run, or cancel oneA write-level key, and edit access to the workflow
Approve or rejectA step that allows it, see below

Continuing a Wait early and cancelling everything queued stay in the app.

An approval is a person's decision by default. Select the step and turn on Let agents decide to allow an agent. Even then, the key must be write-level and its owner must meet the step's approver rule. The run records which key decided.

A run never outgrows the key that started it. It acts as the key's owner, limited by the key, and the run shows the key's name. Busabase checks the key again each time the run continues, so a run that is waiting stops with a clear error if you revoke the key or it expires, and it can't write if you lower the key's level.

Alerts about a run an agent started go to the key's owner too, because they aren't watching it happen.

Good to know

A run stays Queued for a long time. The workflow may be at its Concurrency, so the run is waiting for a slot. Otherwise check that the scheduler is running. It is built into self-hosted installs (configuration).

"The run was interrupted". The server stopped while a step was running. Busabase marks the run as failed instead of repeating the step, because a half-sent request must not silently run twice. Start it again.

"Could not continue as the person who started this run". That person has left the space or lost access to the workflow. Start a new run, or save the workflow in Event mode yourself so event runs act as you.

Approve and Reject don't appear. The step names other approvers, or you don't have edit access. The run tells you which rule applies.

The demo fails on Function and Webhook steps. The demo has no saved functions and sends no requests. Try those steps in your own space.

A formula fails on a step with a dash in its id. Write steps["step-a1b2c3d4"].status, not steps.step-a1b2c3d4.status. The step's Use this step in formulas as shows the right form.

See also: Node Types · Webhooks & Events · Change Requests

On this page