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:
- A contact form comes in. Large enquiries create a customer record and assign a salesperson a task. Everyone else joins the mailing list.
- A blog post goes live and is shared on social automatically.
- An invoice goes unpaid, so a reminder goes out after 7 days and a chase task is raised after 30.
- Someone misses an appointment, so two hours later they get an email asking them to rebook.
- A new customer signs up but never confirms their email, so the team is told the next day.
Your first workflow, step by step
This takes about two minutes and proves everything works. It does not send anything to anyone, so it is safe to try on a live workspace.
- In the sidebar, open AI Workflows.
- Press New workflow.
- Type a name, for example Hello canvas. Leave the description box empty for now.
- Press Create and open. The canvas opens.
- A gallery of templates appears. Press Escape to close it, because this time you are building by hand.
- On the left you will see a list of steps. Under Triggers, click Manual. A box appears on the canvas.
- Under Building blocks, click Notify the team. A second box appears.
- 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.
- Click the Notify box. A panel opens on the right. In Message, type It works.
- Press Test run at the top.
Both boxes turn green and show how many milliseconds they took. Open the notification bell in the top bar and your message is there.
The canvas
The screen has three parts.
| Part | What it is for |
|---|---|
| Left, the step list | Every step you can add, grouped by service. Search at the top. Click a step to add it, or drag it where you want it. |
| Middle, the canvas | Your workflow. Drag boxes to move them, drag between the circles to connect them, click a connection and press Delete to remove it. |
| Right, the settings panel | Appears when you click a box. Two tabs: Settings to configure the step, and Data to see what it received and returned on the last run. |
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.
Triggers
The trigger is what starts your workflow. Every workflow has exactly one, and it is always the top box.
| Trigger | Starts when |
|---|---|
| Manual | Someone presses Run. Good for testing and for jobs you do occasionally. |
| On a schedule | A repeating timetable you choose, in your workspace timezone. |
| Incoming webhook | Another system posts to a private web address. Use this to connect a tool SoftSolz has no step for. |
| Something happens | An event in one of your services. This is the powerful one. |
Event triggers cover most of what happens in your workspace. A few examples:
- Invoicing - invoice paid, invoice overdue, invoice sent, invoice voided, customer created, refund issued
- Forms - form submitted
- Appointments - booked, cancelled, rescheduled, completed, no show, message received
- Tasks - assigned, submitted, completed, overdue, changes requested
- Blogs - post published, subscriber added, comment posted
- Social - post published, post failed, account connected
- Customer Auth - signed up, verified, signed in, suspended
- Knowledge Hub - chat message received, document ready
- Payments - payment received
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, 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.
| Block | What it does |
|---|---|
| If | Asks a yes or no question and splits the path in two. |
| Switch | Compares one value against several options and picks a route. |
| For each | Repeats the following steps once for every item in a list. |
| Filter | Stops the workflow here unless a condition is met. |
| Wait | Pauses for minutes, hours or days, then carries on. |
| Set values | Builds named values that later steps can use. |
| Call a URL | Sends a request to another system. |
| Send an email | Emails one or more people. See Sending email. |
| Notify the team | Posts 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. In any text box, click the braces button and pick the value you want from the list. It drops in looking like this:
Hi {{ trigger.data.name }}, invoice {{ nodes.create_invoice.output.invoice_number }} is ready.
The picker only offers values from steps that genuinely run before this one, so you cannot pick something that will not exist yet.
There are three families of value:
| Looks like | Means |
|---|---|
trigger.data.something | Something from whatever started the workflow, such as the invoice that was paid. |
nodes.step_name.output.something | Something an earlier step produced. The step name is shown under each box and you can rename it. |
loop.item | Inside 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.
- Add an If step and connect it after your trigger.
- In Value, use the braces button to pick what you want to check.
- Choose the comparison in Is.
- 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.
A Switch step does the same job when there are more than two routes. Give it a value to look at and list the options. Anything that matches nothing takes the anything else route, unless you turn that off.
Repeating over a list
A For each step runs everything after it once per item.
- Add a step that returns a list, such as Find invoices.
- Add a For each step after it.
- In List, use the braces button and pick
itemsfrom the finding step. - Add whatever should happen per item after the For each step.
- Inside those steps, refer to the current item as
loop.item, for example{{ loop.item.invoice_number }}.
Set Stop after 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.
Short waits happen immediately. 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.
When a step fails
Every step has an If this step fails setting with three choices.
| Choice | What happens |
|---|---|
| Stop the workflow | The run stops here and is marked failed. This is the default and is usually what you want. |
| Carry on anyway | The failure is recorded but the workflow continues. Use this when the step is a nice-to-have. |
| Follow the error branch | The workflow takes a separate path you have drawn, so you can raise a task or notify someone when something goes wrong. |
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.
While it runs:
- Each box shows a spinner, then turns green if it worked or red if it did not.
- A green box shows how long it took.
- A red box shows the reason on its face, and the panel opens on it automatically.
- Boxes on a path that was not taken go grey, so you can see which way an If step went.
- Arrows show how many items passed along them. Seeing 0 items is the quickest way to spot a filter that is too strict.
Click any box and open the Data tab to see two panels: what the step received after all your values were filled in, and what it returned. If a value could not be found, it is listed here so you can fix the step name it points at.
Reusing a result while you build
Once a step has run, you can pin its result using the pin button in its panel. Later test runs reuse the pinned result instead of running that step again, which is useful when the step is slow or costs money. Pinned steps are marked, and pinning is ignored once the workflow is live.
Publishing, pausing and editing
A workflow does nothing on its own until you press Publish. Before that it is a draft you can change freely.
When you press Publish, SoftSolz checks the workflow 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.
Press Pause to stop a live workflow. It stays exactly as it is and can be published again later.
Editing a published workflow is safe. Your changes are saved as a draft and only take effect when you publish again.
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. 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 that emails anyone needs a verified sending address before it can be published. If you have not set one up, publishing shows a message with a link straight to the right page.
- Open Organization, then the Email tab.
- Add your sending address and follow the verification steps.
- Return to your workflow and press Publish again.
Run history
Open Run History in the sidebar to see every run: when it happened, what started it, how long it took and whether it worked.
Open any past run to see the same step-by-step picture you get from a test run, including what each step received and returned. This is the first place to look when something did not happen the way you expected.
Limits
Sensible limits stop a mistake becoming an expensive one. You are unlikely to meet them in normal use.
| Limit | Value |
|---|---|
| Steps in one workflow | 60 |
| Connections in one workflow | 120 |
| Step runs in a single run | 500 |
| How long one run may take | 2 minutes, not counting Wait steps |
| Items handled by one For each | 200 |
| Runs per minute for one workflow | 60 |
Workflow runs also count towards your plan allowance. You can see usage under Subscriptions.
Troubleshooting
| What you see | What it usually means |
|---|---|
| A message arrives with a word missing, such as Hi , | A value could not be found. Open that step, check the Data tab, and confirm the step name it points at still exists. Renaming a step updates references automatically, but deleting one does not. |
| An arrow says 0 items | The step before it found nothing. Check its settings, for example a status filter that matches none of your records. |
| Publish is refused | Read the message. The usual causes are a step that is not connected to the trigger, a required field left empty, or an email step with no verified sending address. |
| A step is outlined in red before you have run anything | A required field is empty. Click the step and fill it in. |
| The workflow did not start when you expected | Check it is published rather than a draft, 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 step limit and was stopped | Two steps are probably connected in a circle. Follow the arrows and remove the loop. |
| A step you expected is missing from the list | Its service is not installed. Add it from the Marketplace. |
Reference
Building a deeper integration? See the developer guide for endpoints and events: