Execus Logo
Back to the platform
Documentation
Get started
  • What the platform is
  • First access
  • Platform overview
  • Quick glossary
Dashboard Assistant
  • What the dashboard assistant is
  • How to use it
  • What it can do
  • Safety and privacy
  • Plans and usage limits
Voice agent
  • GPT Live: voices, style and listening
  • Basic configuration
  • AI hours
  • Models and voices: use cases
  • Instructions
  • Prompt tokens
  • Advanced settings
  • Evaluation criteria
  • Testing and playground
  • Updating instructions
  • External Tools
  • Built-in tools
  • MCP servers
Models offered
  • What models are and why they matter
  • Voice models
  • AI models
  • Choosing the right combination
Documents and knowledge base
  • What the knowledge base is
  • Uploading and managing documents
  • How search works during a call
  • Best practices
Calls
  • Call history
  • Transcripts and summaries
  • Audio recordings
  • Filters and search
  • Data export
Call transfers
  • When and why to transfer a call
  • Departments
  • System tools
  • AI after-hours
  • Routing rules
  • Operator app (iOS / Android)
WhatsApp
  • WhatsApp Business in Execus
  • Real-time chat
  • Automations
  • Approved templates
  • WhatsApp contacts and lists
  • WhatsApp AI agents
Meta Agent
  • The Meta agent in Execus
  • Prepare your Meta accounts
  • Connect Instagram and Facebook to Execus
  • Create the Meta agent
  • Configure the agent
  • Direct messages
  • Comments and moderation
  • Meta agent tools
  • Inbox and takeover
  • Meta in workflows
  • Plans, interactions and limits
  • Troubleshooting
Actions and campaigns
  • What actions are
  • SMS campaigns
  • Email campaigns
  • Scheduling and batch sends
Reservations
  • Calendar view
  • Availability rules
  • Confirmations and reminders
  • Changes and cancellations
Contacts
  • Customer directory
  • CSV import
  • Lead form
  • Lists and segments
  • Custom fields
Shop and catalogue
  • The shop in Execus
  • Product and service catalogue
  • Order management
  • OCR and price-list import
Integrations
  • Connect Apple Calendar
  • Connect HubSpot
  • Integrations overview
  • Calendar
  • WhatsApp
  • Meta (Instagram and Facebook)
  • SMS and email
  • Business software and PMS
  • Outbound webhooks
Workflows
  • What workflows are
  • Steps and blocks
  • Triggers and webhooks
  • Practical examples
Call center and dialer
  • What the Execus call center does
  • Outbound campaigns
  • Human operators
  • Contact lists and live sync
  • Operator panel
  • Weekly schedule for incoming calls
  • Contact list rules
External APIs and developers
  • Execus for developers
  • API keys and authentication
  • Main endpoints
  • Incoming webhooks
Use cases
  • Hotels and accommodation
  • Restaurant
  • B&Bs and short-term rentals
  • Beauty center and spa
  • Travel agency
Pricing and plans
  • How pricing works
  • Subscription plans
  • Wallet and credits
  • Consumption and invoices
  • Changing, suspending, or cancelling the plan
Management
  • Account and organization
  • Billing and subscription
  • Team and roles
  • Security and privacy
  • Notifications
Business information
  • Business details
  • Location and address
  • Opening hours
  • AI hours
  • Departments and team
Resources
  • Frequently asked questions
  • Complete glossary
  • Support
Documentation›Workflows›Steps and blocks

Workflows

Steps and blocks

The building blocks of a workflow: triggers, actions, conditions, waits, end.

A workflow is made up of connected steps. Each step performs a specific task. Knowing the available steps is the starting point for building effective automations.

Step types

  • Trigger (start). Defines when the workflow starts. It can be an event (new call, new order), a time (every day at 8), an incoming webhook, or manual (you launch it). A workflow can have several triggers: each one runs only the steps you connect it to.
  • Action. Performs an operation: send SMS, create contact, update field, call external API, log a note. It's the block that "does things".
  • Condition (If-Criteria). Chooses a branch based on a check: "if the customer already has an active order, do X; otherwise do Y". Conditions make the workflow intelligent.
  • Wait. Pauses execution for a duration (5 minutes, 2 hours, 3 days) or until an event occurs (e.g. customer replies).
  • Sub-workflow. Invokes another workflow from within the current one. Lets you reuse common logic without duplicating steps.
  • End. Closes the workflow recording the outcome (completed, failed, cancelled). There can be more than one end step to express different outcomes.

Steps with more than one output

Some steps continue on more than one arrow. The "Send WhatsApp template" step, for example, has "Always, right after sending", one output for each quick-reply button ("On button tap: …") and "If delivery fails": see WhatsApp > Automations, "Branch on buttons and delivery failures".

Wait: three modes

The Wait step can pause for a duration (up to 31 days), until a date and time (e.g. {{ event.start.dateTime | add_days:"-1" }} for the day before the appointment), or until business hours: outside them it resumes at the next opening, skipping non-working days and Italian public holidays.

Variables and expressions

Steps can read and write variables: data that flows through the workflow. For example, the "New order" trigger step exposes variables like "customer.name", "order.total", "order.items". Subsequent actions can use them to personalize messages or decide branches.

Simple expressions, not programming

The system supports basic expressions ("equals", "greater than", "contains", elementary arithmetic operators). You don't need to know how to program: the editor shows contextual suggestions at every step.

Functions in expressions

After a value you can add functions with |, chained: | phone (number as +39…), | digits | last:"9" (last 9 digits), | add_days:"1", | add_hours:"2", | date:"DD/MM/YYYY HH:mm", | tz:"Europe/Rome", | upper, | lower, | trim, | default:"…", | number, | round, | length, | first, | last, | slice:"0,3", | split:",", | join, | json, | parse_json, | weekday. List items are read by index: items.0.name. {{ now }} is the current date and time.

The visual canvas

Build the workflow by dragging steps onto the canvas and connecting them with arrows. Each step has a configuration panel that opens when you click it. For long workflows you can create groups and labels to stay oriented.

Connect two steps by dragging from one connection point to the other, or by clicking one connection point and then the other. Scrolling with two fingers pans the canvas; pinching (or Ctrl/Cmd + wheel) zooms. Every step has a name, numbered by kind when you add more than one (“Check a condition”, “Check a condition 1”, “Check a condition 2”): to rename it, open the step's settings and click its title; Enter or clicking away saves, Esc cancels.

Executions and the run log

Each run is saved in the workflow's “Executions” tab. It opens on the latest run, and every run has its own link that you can share with a colleague.

  • The canvas is the run. Each step shows its icon, its name and a ✓ or ⚠ mark, with a step number that matches the log. Every output is labelled (“True”, “False”, “If delivery fails”). Arrows that ran are green; what did not run stays grey.
  • Click and double-click. Click a step to select it in the log. Double-click a step, or a log row, to open it read-only: Input (what came from the previous step) on the left, Parameters in the middle, Output (with the branch taken and any error) on the right. Under Parameters, “Values used in this run” shows the values after the placeholders were filled in.
  • The “Execution log” panel. Under the canvas, collapsed by default: click its bar to open or close it and drag to resize it. At the top you see the total time (for example “Failed in 1.8s”); each row is a step with icon, name, status, duration and the branch taken. The log opens on the failed step, or on the first one. For the selected step you choose Input, Output or both, and switch between Fields and JSON, with “Copy JSON”.

Loops

A step that runs several times in the same run shows only one record: the single iterations are not shown yet.

Sending data to other systems

In the “Web request (HTTP)” and “Send data (webhook)” steps, placeholders (for example {{ contact.id }}) are filled in the URL, headers, query parameters and body, and the URL's own query string is kept. A JSON body is sent as JSON: {"id": "{{ contact.id }}"} sends the number 7, or null when the variable is missing. A header whose variable is missing is left out.

Was this page helpful?

PreviousWhat workflows areNextTriggers and webhooks