AI Workflows

Join your services together on a canvas. Drag in steps, connect them with arrows, and let SoftSolz run the whole thing for you. Workflows run inside SoftSolz, so there is nothing to embed on your website.

Overview

A workflow is a diagram that runs. It starts with one trigger, then follows the arrows through as many steps as you like.

Unlike a simple list of tasks, a workflow can make decisions. It can ask a question and go two different ways, repeat itself once for every item in a list, wait hours or days before carrying on, and use what an earlier step found in a later step.

Things people build with it:

You do not need to know how to code. Every step is a form you fill in, and every value you might want is offered to you in a list. If you would rather describe it, Build with AI lays the workflow out for you from a sentence (this uses AI credits).

Your first workflow, step by step

This takes about two minutes and proves everything works. It only posts a notification inside SoftSolz to your own team, so it is safe to try on a live workspace.

  1. In the sidebar, open AI Workflows.
  2. Press New workflow.
  3. Type a name, for example Hello canvas.
  4. Press Create and open. The canvas opens.
  5. A gallery of templates appears. Press Escape to close it, because this time you are building by hand.
  6. On the left you will see a list of steps. Under Ways to start it, click Manual. A box appears on the canvas.
  7. Under Building blocks, click Notify the team. A second box appears.
  8. Hover over the bottom edge of the Manual box until a small circle appears. Drag from that circle to the top edge of the Notify box. An arrow now joins them.
  9. Click the Notify box. The step editor opens on the Set it up tab. In Message, type It works, then close it.
  10. Press Test run at the top.

When the run finishes, a message says Test run finished, the bar reads Finished cleanly, 1 step run, and the Notify box turns green and shows how many milliseconds it took. Open the notification bell in the top bar and your message is there.

Nothing you build runs on its own until you switch it to Active. Until then it only runs when you press Test run.

The canvas

The screen has three parts.

PartWhat it is for
Left, the step listEvery step you can add, grouped by service. Search at the top. Click a step to add it, or drag it where you want it. On smaller screens the list is hidden; use the plus button under a box instead.
Middle, the canvasYour workflow. Drag boxes to move them, drag between the circles to connect them, and select a box or a connection and press Backspace to remove it. The plus button under every box adds the next step.
The step editorOpens as a side panel when you click a box. It has three tabs: Set it up for the step's settings, Comes in for the values earlier steps produced, and Comes out for what this step returned.

Each box shows its name, a short summary of how it is set up, and after a run, whether it worked and how long it took. A box with something missing is outlined in red and tells you what it needs.

Two things that save time: Tab adds the next step after whatever is selected, and Tidy up lines every box up neatly when the canvas gets messy. Dragging a box only moves it, so you can rearrange without opening anything.

The header shows Not saved yet or All changes saved. Press Save to keep your changes; Test run and the Active switch save first on their own.

Triggers

The trigger is what starts your workflow. Every workflow has exactly one, and it is always the top box. You pick it from Ways to start it in the step list.

TriggerStarts when
ManualSomeone presses Run. Good for testing and for jobs you do occasionally.
On a scheduleA repeating timetable you choose. Type it as five parts, for example 0 9 * * 1-5 for 9am on weekdays; the plain-English meaning is shown underneath. Set the Timezone on the step.
Incoming webhookAnother system posts to the workflow's private web address. The address is not shown in the dashboard yet.
An event in a serviceEach event is its own trigger, such as Invoice paid or Form submitted. This is the powerful one.

Event triggers cover most of what happens in your workspace. A few examples:

Contacts, Sales Pipelines, Quotes, Products & Subscriptions, Newsletter, Funnels, Affiliates and SEO Intelligence add their own events too.

You only see steps and triggers for services you have installed. Install more from the Marketplace and they appear here automatically.

Steps

After the trigger, everything else is a step. There are two kinds.

Service steps

These do something in one of your services: create a draft invoice, email an invoice to its customer, send a payment reminder, create and assign a task, publish a blog post, create and publish a social post, add a newsletter subscriber, cancel an appointment, search your Knowledge Base, have one of your AI callers ring someone, and so on.

There are also Find steps such as Find invoices, Find tasks and Find appointments. These return a list, which you then feed into a For each step.

Building blocks

These work in every workflow, whatever services you use.

BlockWhat it does
IfAsks a yes or no question and splits the path in two.
For eachRepeats the following steps once for every item in a list.
FilterStops the workflow here unless a condition is met.
WaitPauses for minutes, hours or days, then carries on.
Wait untilHolds the run until something happens or a moment in time arrives, checking again on a schedule.
GoalChecks whether the point of the workflow has been met, and stops there when it has.
A/B splitSends each contact down one branch, always the same branch for the same person.
Set valuesBuilds named values that later steps can use.
Call a URLSends a request to another system. It gives up after 15 seconds.
Send an emailEmails up to 20 people. See Sending email.
Notify the teamPosts a notification inside SoftSolz for your workspace members.

Passing values along

This is the part that makes workflows useful, and it is easier than it looks.

Any step can use something an earlier step produced. You never type these by hand. Click the braces button beside a box and pick the value from the list, or open the Comes in tab and click a value to drop it into the first box. Either way it drops in looking like this:

Hi {{ trigger.data.name }}, invoice {{ nodes.create_invoice.output.invoice_number }} is ready.

Underneath the box you will see what that comes out as right now, using the real values from your last run. If it reads Nothing found for ..., the value you picked does not exist, and you can fix it there and then rather than discovering it on a live run.

The Comes in tab only offers values from steps that genuinely run before this one, so you cannot pick something that will not exist yet. Each one is labelled with where it came from: from the last run, sample data, or not run yet when the step has never produced anything and you are seeing the shape it will return.

There are three families of value:

Looks likeMeans
trigger.data.somethingSomething from whatever started the workflow, such as the invoice that was paid.
nodes.step_name.output.somethingSomething an earlier step produced. The step name is shown under each box and you can rename it.
loop.itemInside a For each, the item currently being worked on. loop.index is its position.

Tidying values up

You can adjust a value with a filter, written after a vertical bar:

{{ trigger.data.total | currency }}          gives  1,250.50 in your currency
{{ trigger.data.name | upper }}             gives  ADA
{{ trigger.data.due | date: 'DD/MM/YYYY' }} gives  09/03/2026
{{ nodes.check.output.tier | default: 'standard' }}

The filters available are default, upper, lower, trim, length, join, json, number, round, date and currency.

Conditions and branching

An If step asks one question and sends the workflow one of two ways. It has two outputs at the bottom, marked true and false. Connect each to whatever should happen next. You can leave one unconnected if nothing should happen on that path.

  1. Add an If step and connect it after your trigger.
  2. In Value, use the braces button to pick what you want to check.
  3. Choose the comparison in Is.
  4. Fill in Compared with, unless the comparison does not need one.

Available comparisons: equal to, not equal to, containing, not containing, greater than, greater than or equal to, less than, less than or equal to, empty, not empty, true, false.

Numbers are compared as numbers, so 900 is correctly greater than 100. If either side is not a number, the answer is no rather than an error.

Repeating over a list

A For each step runs everything after it once per item.

  1. Add a step that returns a list, such as Find invoices.
  2. Add a For each step after it.
  3. In List, use the braces button and pick items from the finding step.
  4. Add whatever should happen per item after the For each step.
  5. Inside those steps, refer to the current item as loop.item, for example {{ loop.item.invoice_number }}.

Set Stop after (100 unless you change it) to cap how many items are handled in one run. If the list is longer than the cap, the run tells you it was cut short rather than silently skipping the rest.

Waiting

A Wait step pauses the workflow. Set an amount and a unit, from seconds to days.

Waits of 30 seconds or less happen inside the run. Longer ones put the run to sleep and it wakes itself up later, so a wait of three days costs you nothing while it waits and picks up exactly where it left off.

A sleeping run shows as Waiting in Run history until it carries on.

When a step fails

Call a URL, Send an email and Notify the team have an If this step fails setting:

ChoiceWhat happens
Stop the workflowThe run stops here and is marked failed. This is the default and is usually what you want.
Carry on anywayThe failure is recorded but the workflow continues. Use this when the step is a nice-to-have.

Steps that call another system are retried automatically a few times before being treated as failed, so a brief outage does not break your run.

Testing before you go live

Test run runs the whole workflow once, immediately, and shows you exactly what happened. The trigger has no real event behind it, so its values start empty.

When the run finishes:

Open any step and the editor shows you both sides of it. Comes in lists the real values from every earlier step. Comes out shows what this step returned, along with any value it could not find, so you can fix the step name it points at.

A test run is real. It creates real records and sends real messages. Point email steps at your own address while you are still building.

Running one step at a time

You rarely need to run the whole thing. Press Run on a step's Comes out tab and SoftSolz runs everything up to and including that step, then stops (Ran up to that step). Nothing after it happens. This is the quickest way to get one step right before moving on, and it means the steps further down never fire while you are still experimenting.

Working without running anything

Every step can hold sample data. Press Set sample data on a step's Comes out tab and paste or edit the result you want it to pretend to return. From then on, test runs reuse that instead of running the step for real, which is useful when a step is slow, costs money, or sends something you do not want to send twice. Steps using sample data are marked on the canvas, and sample data is ignored once the workflow is live.

Turning it on and off

Every workflow is either Active or Inactive. There is one switch for this, and it sits in the same place in both screens: on the right of the header while you are building, and on the workflow's card in the list.

An inactive workflow never runs by itself. You can still change it freely and press Test run as often as you like.

When you switch it to Active, SoftSolz checks it first and refuses if something would not work, for example a step that is not connected to anything or a value that points at a step that no longer exists. It tells you which step is at fault. Once it is on, a message says It is on. It will run on its own now.

Editing an active workflow is safe. Press Save and your changes take effect the next time it runs.

Scheduled and event workflows start within a few seconds of their trigger rather than instantly. Test run is immediate.

Templates

Templates are complete, working workflows you can start from. The gallery opens by itself on a new workflow, and is always available from the Templates button.

Pick one and it fills the canvas, replacing anything already on it. Everything stays editable, so treat it as a starting point rather than a finished thing. Templates that need a service you have not installed are shown greyed out with the service they need.

Sending email

Emails from a workflow go out from your sending address, never from SoftSolz. This protects your customers, who would otherwise get mail about your business from a company they have never heard of.

Because of that, a workflow with a Send an email, Email an invoice or Send a payment reminder step needs a verified sending address before it can be turned on. If you have not set one up, switching it to Active shows This workflow emails people outside your workspace, so it needs your own sending address first. and a Set up email button.

  1. Open Marketplace, then the Email sending tab.
  2. Add your sending address and follow the verification steps.
  3. Return to your workflow and switch it to Active again.
Notify the team never needs this, because it posts inside SoftSolz to your own members rather than emailing anyone outside.

Run history

Open AI Workflows in the sidebar, then the Run history tab, to see every run: when it happened, what started it, how long it took and whether it worked. A run is Pending, Running, Waiting, Success or Failed.

Open a run to see its status, start time, duration, what triggered it and, if it failed, the error. To see what each step received and returned, open the workflow and look at the step's Comes in and Comes out tabs after a test run.

Limits

Sensible limits stop a mistake becoming an expensive one. You are unlikely to meet them in normal use.

LimitValue
Steps in one workflow60
Connections in one workflow120
Step runs in a single run500
How long one run may take2 minutes, not counting Wait steps
Items handled by one For each200
Runs per minute for one workflow60
People one email can go to20

Workflow runs also count towards your plan's API calls allowance. You can see usage under Subscriptions. An admin can also cap how many workflows each member may create, per role, in the role editor.

Who can do what

Set on each role under Members & access → Roles, in the AI Workflows group:

PermissionWhat it allows
View AI workflows and their run historyOpen workflows and Run History.
Create AI workflowsPress New workflow.
Edit AI workflows, including pause and resumeChange steps, and use the switch on a workflow's card.
Delete AI workflowsRemove a workflow.
Manually trigger a workflow (run now)Test run, Run on a step, and Run now.
Publish and pause workflows so they run automaticallyThe Active switch on the canvas.

By default Admins hold all of these, Managers can view and run, and Users can view. Steps run with the permissions of the person who created the workflow.

Troubleshooting

What you seeWhat it usually means
A message arrives with a word missing, such as Hi ,A value could not be found. Open that step and check Comes out, which lists any value it could not resolve. Confirm the step name it points at still exists. Renaming or deleting a step does not update the values that point at it, so pick them again.
An arrow says 0 itemsThe step before it found nothing. Check its settings, for example a status filter that matches none of your records.
It refuses to turn onRead the message. The usual causes are Choose a trigger so this workflow knows when to run., Add at least one step after the trigger before publishing., a step that is not connected to the trigger, or an email step with no verified sending address.
A step is outlined in red before you have run anythingA required field is empty. Click the step and fill it in.
The workflow did not start when you expectedCheck the switch says Active, and that the trigger matches the event you think it does. Scheduled and event runs begin within a few seconds rather than instantly.
This run passed the 500 step limit and was stopped. Check for a loop.Two steps are probably connected in a circle. Follow the arrows and remove the loop.
This workflow is already running.A run started less than 30 seconds ago. Wait a moment and try again.
The person who owns this workflow does not have permission for the ... step.Steps run as the person who created the workflow, and their role no longer allows that step. Give their role the permission, or have someone who holds it rebuild the step.
A step you expected is missing from the listIts service is not installed. Add it from the Marketplace.

Test it step by step

  1. Install the service. Open Marketplace, find AI Workflows and click Install. You need to be an owner or admin to install services.
  2. Check your permissions. To build and test you need to create, edit and run workflows (see Who can do what). Turning a workflow on needs Publish and pause workflows so they run automatically, which Admins hold by default.
  3. Try it in the sandbox if you like. Open the menu under your name at the bottom of the sidebar and choose Switch to Sandbox mode. The sandbox has its own records, so test runs there do not touch your live data.
  4. Build the Hello canvas workflow exactly as in Your first workflow: a Manual trigger joined to Notify the team with the message It works.
  5. Press Test run. Success looks like the message Test run finished, the bar Finished cleanly, 1 step run, a green Notify box, and your message in the notification bell.
  6. Check Run history. Open the Run history tab of AI Workflows. The run is listed with the status Success.
  7. Turn it on. Switch the workflow to Active. A message says It is on. It will run on its own now. For a scheduled or event workflow, wait for the trigger and check Run History again.
  8. Test email last. If your workflow sends email, set up your sending address first (see Sending email), and point the step at your own address while testing. A real outside email account is needed to receive it.

For developers

Create a sandbox API key under Global API keys with the View workflows permission, then list your workflows:

curl https://app.softsolz.uk/api/v1/services/workflows/workflows \
  -H "Authorization: Bearer sk_test_your_key"

A 200 reply listing Hello canvas means it worked. The AI Workflows developer guide shows how to start a run and read its result.

If something goes wrong

What you seeWhat it means
This workflow emails people outside your workspace, so it needs your own sending address first.Set up a sending address in Marketplace → Email sending, then switch the workflow on again.
These steps are not connected to the trigger, so they would never run: ...A box is not joined to the rest. Drag an arrow to it, or delete it.
You've reached your assigned limit of ... workflows. Contact a workspace admin to increase your limit.Your role has a cap on how many workflows each member may create. An admin can raise it in the role editor.
Test run is greyed outAdd a trigger first. If it is still unavailable, your role cannot run workflows, or the workflow belongs to someone else and is not shared with the team.

Reference

Building a deeper integration? See the developer guide for endpoints and events: