Integrations & automation

# Build a workflow in the designer

Drag steps onto the canvas, connect them, configure triggers, conditions, updates, messages and waits, and use values from earlier steps.

Updated October 5, 2026

**Who can do this:** The Workflows feature on your platform and role level 300 or higher.

The workflow designer shows a workflow as a diagram. On the left is the list of **Steps** you can add, in the middle the canvas, and on the right the settings of the step you select.

## Build the flow

1. Open a workflow, or create one from the **Workflows** list.
2. Drag a **Trigger** step from the **Steps** list onto the canvas. This is where the workflow starts.
3. Drag the next step onto the canvas.
4. Drag from the output point of the first step to the input point of the next one to connect them.
5. Click a step to open its settings on the right.
6. Fill in the **Step Name**, an optional **Description** and the fields under **Configuration**.
7. Repeat for every step. Finish a branch with an **End** step where you want the run to stop.
8. Click **Save** in the toolbar.

To remove a step, select it and click **Delete Step** in the settings panel, or press Delete. Select a connection and press Delete to remove it. Click **Close** to hide the settings panel, and **Back** to leave the designer.

## Step types

| Step              | What it does                                                                                                                                                                                          |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Trigger**       | Starts the workflow. Choose the **Trigger Type**: a scheduled run with a **Cron Expression** (for example 0 \*/5 \* \* \* for every 5 minutes), or an event in Transportial with a **Trigger Event**. |
| **Condition**     | Checks the data against filters and continues on the green (true) or red (false) output.                                                                                                              |
| **Load Entity**   | Reads a record again, for example after a wait, so later conditions see its current state.                                                                                                            |
| **Update Entity** | Changes fields on a record.                                                                                                                                                                           |
| **Create Entity** | Creates a new record. Later steps can use it under the **Result Variable Name**.                                                                                                                      |
| **HTTP Request**  | Calls another system with a **URL**, **Method**, headers, body and **Authentication**.                                                                                                                |
| **Send Message**  | Sends a message (see below).                                                                                                                                                                          |
| **Delay**         | Waits for a **Duration** in seconds, minutes, hours or days, or until a date.                                                                                                                         |
| **TQL Query**     | Looks up records and stores them in a variable.                                                                                                                                                       |
| **Set Variable**  | Stores a value for later steps.                                                                                                                                                                       |
| **Log**           | Writes a message with a **Log Level** (INFO, WARNING or ERROR), useful while testing.                                                                                                                 |
| **End**           | Ends the flow.                                                                                                                                                                                        |

## Trigger options

* **Time zone**: used for time-based conditions, such as "only on working days". UTC is used when it is empty.
* **Working day starts at (hour)**: when a working day begins for those conditions.
* **Dedupe on (path in trigger data)** and **Dedupe window (minutes)**: for event triggers. Skip a run when the same value (for example the record's id) already started one within the window. Use this for events that fire on every position or sensor update.

## Send a message

In a **Send Message** step, choose **Send via**:

* **Message automation**: runs the message automations you select, with the data of the workflow.
* **Directly on a channel**: pick a **Channel**, optionally a **Connector**, the **Recipients (one per line)**, a **Subject** and the text. Switch on **Skip this message when no recipient resolves (instead of failing the run)** if a missing recipient is not a problem.
* **Reply in the same chat**: posts the text in the chat the triggering message belongs to.

## Use values from the trigger and earlier steps

In most text fields you can insert values with expressions. Write the field name between `${` and `}`: for example `${trigger.reference}` for a field of the record that started the workflow, or `${myVariable}` for a variable set by an earlier step.

## Try it out

1. Add a **Log** step where you want to see what happens.
2. Click **Save**, then **Execute** to run the workflow once.
3. Click **Execution history** and open the run to see which steps ran and what each one received and returned.
4. Check that the result is what you expect, then switch the workflow on.

A **Delay** longer than 30 seconds does not block anything: the run is parked and picked up again when the wait is over.

## Related articles

* [Automate work with workflows](/en-us/help/workflows)
* [Send messages automatically with message automations](/en-us/help/message-automations)
* [Connect other systems with integrations](/en-us/help/integrations)

## Still need help?

Our support team is happy to answer any question about Transportial.

[Contact support](/en-us/contact)[Report an issue](/en-us/report-issue)

---
Canonical page: https://transportial.com/en-us/help/workflow-designer
