Jobs and Steps
Every automation in Automation Hub is built from two simple concepts: Jobs and Steps. Think of it like a recipe - the Job is the complete recipe, and each Step is an individual instruction.
Understanding Jobs
A Job is a complete automation workflow. It's your entire automation from start to finish.
What's a Job?
When you create an automation, you're creating a Job. For example:
- "Send daily sales report to Slack"
- "Backup database to AWS S3 every night"
- "Notify team when new customer signs up"
- "Sync Salesforce contacts to the data warehouse"
Each of these is one Job. Jobs are stored in Automation Hub and can be triggered manually, on a schedule, via webhook, through an API call, or by an AI agent.
Job Basics
Every job has a few core properties:
| Property | What it means |
|---|---|
| Name | A clear name so you know what the job does |
| Description | Explains why this automation exists and what it accomplishes |
| Version | Tracks changes to the job over time |
| Tags | Labels that help you search and filter jobs (e.g., "finance", "daily", "critical") |
| Enabled / Disabled | Turn a job on or off without deleting it - useful for pausing automations temporarily |
| Color | A visual identifier to help distinguish jobs at a glance |
Where Jobs Live
Jobs are organized into a simple hierarchy:
You can also clone a job to create a copy, or import/export jobs to move them between environments.
Job Settings (the Configurations tab)
Job-level settings live on the Configurations tab of the job canvas (alongside the Canvas and Executions tabs), under the Job configuration panel. These settings apply to the whole job - retry, timeout, notifications, and SLA are all defined here, not per step. Save with Save configuration, or discard changes with Reset.
The panel is organized into groups:
Execution
| Setting | What it controls | Example |
|---|---|---|
| Job timeout (min) | Maximum time the job can run before it's automatically stopped | 30 |
| Max concurrent executions | How many instances of this job can run at the same time (leave blank for no limit) | 5 |
| On limit behavior | What happens when the concurrency limit is reached | Queue (wait in line) or Reject (refuse the run) |
| Enable archival | Whether older execution records are moved to archive storage instead of deleted | On |
| Executions to keep | How many recent execution records to keep in active history | 100 |
Retry policy
Turn on Retry on failure to reveal the retry fields. The available fields depend on the chosen strategy.
| Setting | What it controls | Example |
|---|---|---|
| Retry on failure | Toggle that enables automatic retry of the whole job when it fails | On |
| Max retries | Maximum retry attempts after a failure (the first run is not counted) | 3 |
| Retry delay (sec) | How long to wait before the next retry attempt | 60 |
| Retry strategy | How the delay between retries grows - Fixed (same delay every time) or Exponential Backoff (delay grows each attempt) | Fixed |
| Backoff coefficient | Multiplier applied to the delay after each retry (Exponential Backoff only) | 2.0 |
| Max retry delay (sec) | Cap on the wait time between retries (Exponential Backoff only) | 600 |
Notifications and alerting
Choose which events to notify on, then enable one or more delivery channels.
| Setting | What it controls | Example |
|---|---|---|
| Notify on | Which events trigger a notification: Success, Failure, Timeout, Long running | Failure, Timeout |
| Alert after N consecutive failures | Only send a failure alert after this many failures in a row (shown when Failure is selected) | 3 |
| Include execution summary | Attach a per-step summary of what succeeded, failed, or was skipped | On |
Notifications can be delivered through any of these channels:
| Channel | What you configure |
|---|---|
| Recipient addresses | |
| Slack | Channel ID and bot token |
| MS Teams | Incoming webhook URL |
| Webhook | A callback URL to POST notifications to |
Logging and observability
| Setting | What it controls | Example |
|---|---|---|
| Log level | How much detail is captured in logs | INFO, DEBUG, ERROR |
Intelligent Twin
The Intelligent Twin group holds two advanced toggles. Leave them off unless you are deliberately exercising resilience testing or recovery.
| Toggle | What it's for |
|---|---|
| Apply Chaos | Chaos testing - simulate failures during a run to validate how resilient the job is |
| Apply Rollback | Automatic rollback - attempt to undo the run's effects when execution fails |
General
| Setting | What it controls | Example |
|---|---|---|
| Expected duration (min) | The job's SLA. If a run exceeds this, it is flagged as Slow - the job is not stopped | 15 |
| Description / notes | Freeform notes about the job (supports Markdown) | -- |
Understanding Steps
A Step is a single action within a job. Every step does one specific thing.
What's a Step?
Steps are the individual actions that make up your automation. Each step has a type that determines what it does, and configuration that tells it how to do it.
For example, a job to "Notify team of new customer" might have these steps:
Step Properties
Each step has these properties:
| Property | What it means |
|---|---|
| Name | A descriptive name for what this step does |
| Description | Additional detail about the step's purpose |
| Order / Position | Where this step sits in the workflow |
| Enabled / Disabled | Turn individual steps on or off without removing them |
| Category | The general category (Communication, API, Database, etc.) |
| Action Type | The specific action (Send Email, REST API Call, SQL Query, etc.) |
| Config | Action-specific settings (email details, database query, API endpoint, etc.) |
| Settings | A dynamic, action-specific template - the fields shown depend on which node the step is built from |
Step Types by Category
Automation Hub offers 30+ step types organized by what they do:
Communication
| Step Type | What It Does |
|---|---|
| Send or retrieve emails | |
| Slack | Send messages to Slack channels |
| Microsoft Teams | Send messages to Teams channels |
API and Server
| Step Type | What It Does |
|---|---|
| REST API | Make HTTP requests (GET, POST, PUT, DELETE, PATCH) with authentication and pagination support |
| SSH | Run commands on remote servers |
| Kafka | Produce or consume messages from Kafka topics |
File Transfer
| Step Type | What It Does |
|---|---|
| FTP | Transfer files using FTP |
| SFTP | Transfer files using secure FTP |
| FTPS | Transfer files using FTP over SSL |
| AWS S3 | Upload, download, or manage files in Amazon S3 buckets |
Database
| Step Type | What It Does |
|---|---|
| SQL Databases | Query or update MySQL, PostgreSQL, and MSSQL databases |
| NoSQL Databases | Work with MongoDB and DynamoDB |
| DataTable | Create and manipulate in-memory data tables |
Enterprise
| Step Type | What It Does |
|---|---|
| Salesforce | Create, read, update, and delete Salesforce records |
| AI Agent | Use an AI agent to process data or make decisions |
Data Preparation
| Step Type | What It Does |
|---|---|
| Group | Group records by a field |
| Merge | Combine data from multiple sources |
| Split Out | Break a list into individual items for processing |
| JSON Array | Work with JSON arrays |
| Parse | Extract structured data from raw text or files |
| Format | Convert data into a specific format |
| Export | Export data to files (CSV, JSON, etc.) |
Logic and Flow
| Step Type | What It Does |
|---|---|
| Conditional | Create if/else branches based on data values |
| Loop | Repeat steps while a condition is true |
| Call | Invoke another job as a sub-workflow |
| Boolean | Evaluate true/false expressions |
| Variables | Set, get, and manipulate workflow variables |
Utility
| Step Type | What It Does |
|---|---|
| Date Time | Parse, format, and calculate dates and times |
| Cryptography | Encrypt, decrypt, hash, or encode data |
| Util | General utilities like generating random values or waiting |
Browser
| Step Type | What It Does |
|---|---|
| Web Automation | Automate browser interactions using Playwright (click, fill forms, scrape pages) |
Human-in-the-Loop
| Step Type | What It Does |
|---|---|
| Human-in-the-Loop | Pause the workflow and send an email-based approval request; the job continues after someone approves or rejects |
Step Configuration
When you open a step, its editor has two tabs - Configuration and Settings:
Configuration - the action-specific details:
- For an Email step: recipients, subject, body, attachments
- For a REST API step: URL, method, headers, authentication, pagination settings
- For a SQL Database step: connection, query, parameters
- For a Conditional step: the condition to evaluate
Settings - a dynamic template rendered from the node's definition. Because it is action-specific, the fields you see here change depending on the node the step is built from. This tab is not where you set job-wide retry or timeout behavior - those live at the job level, on the Configurations tab.
A step also has a mandatory filled flag that indicates whether all required configuration fields have been completed.
How Steps Work Together
DAG Execution - Not Just Sequential
Steps in Automation Hub are connected via Links that form a directed acyclic graph (DAG). This means steps don't just run one after another in a straight line. Instead, you draw connections between steps on the Canvas to define the flow.
Why this matters:
- Parallel execution - Steps that don't depend on each other can run at the same time, making your job faster
- Branching - Conditional steps create separate true/false paths, so different steps run based on your data
- Flexible routing - You can merge branches back together, split work across paths, and build complex workflows visually
The DAG engine validates your workflow to make sure there are no cycles (a step cannot depend on itself, directly or indirectly). It performs a topological sort to determine the correct execution order.
Data Flow Between Steps
Each step produces output that downstream steps can reference. When you configure a later step, you can pull in data from any earlier step in the workflow.
For example:
- Step 1 (SQL Query) produces a list of 50 customers
- Step 2 (Conditional) checks if the count is greater than 10
- Step 3 (Email) uses the customer list from Step 1 and the result from Step 2 to send the right message
This lets you build dynamic, data-driven automations where each step builds on the work of previous steps.
Error Handling
Error handling is driven primarily at the job level. On the Configurations tab, the Retry policy group decides whether a failed job retries (and how the delay grows), the Job timeout decides when a long run is stopped, and Notifications decide who is alerted on failure or timeout.
At the step level, how a failure is surfaced depends on the node - a step's behavior on error is part of its action-specific Settings template rather than a single fixed dropdown shared by every step type. Downstream steps can still see and react to an upstream step's output, which lets you route around failures where the node supports it.
Design critical steps (payment processing, data writes) so the job stops or retries on failure, and treat non-essential steps (a status notification) as safe to let the run continue. See Error Handling for a deeper look.
Test Mode
Jobs have a test mode flag that changes how steps behave. When test mode is enabled, steps use pinned data (mock data) instead of making live calls to external systems.
This is useful for:
- Safe testing - Try out your workflow without sending real emails, modifying databases, or calling production APIs
- Predictable results - Pinned data always returns the same output, making it easy to verify your logic
- Faster development - No need to wait for slow external systems while building your workflow
Each step can have its own pinned data configured. When test mode is on, the step skips its normal execution and returns the pinned data instead.
The Complete Flow
Here's how Jobs and Steps come together from creation to execution:
Key Concepts
DAG Execution
Steps form a directed acyclic graph (DAG), not just a simple list. The execution engine figures out which steps can run in parallel based on their dependencies, and it validates that no cycles exist. This means your workflows are both correct and fast.
Data Flow
Each step's output becomes available to every downstream step. You can reference data from any earlier step, not just the one immediately before it. This makes it easy to build workflows where a step near the end uses data from the very first step.
Error Handling
Retry, timeout, and failure notifications are configured once at the job level, on the Configurations tab. Individual steps surface failures through their action-specific Settings and their output, which later steps can react to. See Error Handling for a deeper look.
Reusability
The Call step type lets you invoke another job as a sub-workflow. This means you can build common automations once and reuse them across multiple jobs. For example, a "Send formatted report" job can be called by any job that needs to generate and deliver a report.
Tips for Better Jobs
Start Simple
- Begin with a job that has 2-3 steps
- Add complexity once you understand the basics and verify the simple version works
Use Test Mode First
- Pin sample data on your steps and run in test mode before going live
- This catches logic errors without affecting real systems
Name Steps Clearly
- Name your steps so anyone can understand what they do
- Example: "Get today's sales" instead of "SQL query task 1"
Set Appropriate Timeouts
- Configure job timeouts to prevent runaway automations
- Consider the slowest external system your job talks to
Plan Your Error Handling
- Set the job's retry policy and timeout on the Configurations tab to match how critical the job is
- Route downstream steps off an upstream step's output when you want to build recovery logic
Keep Jobs Focused
- Each job should do one thing well
- Use the Call step to compose larger workflows from smaller, focused jobs
Use Tags for Organization
- Tag jobs with meaningful labels like "finance", "daily", "critical"
- Makes it much easier to find and filter jobs as your automation library grows
Monitor and Improve
- Check execution logs regularly to spot failures and slow steps
- Use execution history to optimize your workflows over time