> For the complete documentation index, see [llms.txt](https://docs.helvia.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.helvia.ai/build/automations.md).

# Automations

Automations run an agent's workflows on a recurring schedule, without anyone starting a conversation. Use them to fetch external data on a schedule, post periodic updates on a fixed interval, generate reports, or kick off any task an agent can already handle on its own.

Open **Designer > Automations** to see every automation attached to the agent.

<div data-with-frame="true"><figure><img src="/files/SYbIq7OfSAYl2TPCF8YD" alt=""><figcaption></figcaption></figure></div>

### What Automations Unlock

Scheduling a workflow turns an agent from purely reactive into something that acts on its own clock. The same workflow you'd run inside a conversation can fire on a schedule or on demand, and every run is traceable back to the session it produced.

<table data-column-title-hidden data-view="cards"><thead><tr><th>Title</th><th>Description</th></tr></thead><tbody><tr><td><h4><i class="fa-clock">:clock:</i></h4><h4>Schedule Automatic Runs</h4></td><td>Run any workflow on set days and times, or on a fixed minute interval</td></tr><tr><td><h4><i class="fa-play">:play:</i></h4><h4>Trigger Workflows On Demand</h4></td><td>Run any schedule immediately with <strong>Run Now</strong>, without waiting for the next slot</td></tr><tr><td><h4><i class="fa-eye">:eye:</i></h4><h4>Audit Every Execution</h4></td><td>Inspect status, duration, and the underlying session for each run</td></tr></tbody></table>

### Creating an Automation

{% stepper %}
{% step %}

#### Start a New Schedule

Navigate to **Designer > Automations** and select **Add Schedule** to open the creation dialog.
{% endstep %}

{% step %}

#### Choose a Deployment and Workflow

Pick the **Deployment** that will host the run, then select the workflow to execute.

{% hint style="info" %}
Automations always run through an API deployment. Make sure the agent has one set up before scheduling.
{% endhint %}
{% endstep %}

{% step %}

#### Pick a Cadence

Set **Schedule type** to control how often the workflow runs:

* **Recurring (days & time):** Choose the days of the week and the time of day the workflow runs.
* **Interval (every X minutes):** Set **Interval (minutes)** to a whole number from 1 to 10080 (up to 7 days). The workflow then runs approximately every N minutes, regardless of day or clock time.

The **Timezone** shows your Workspace timezone and cannot be changed from the dialog. It applies only to a recurring day-and-time schedule; an interval schedule runs independently of timezone.

{% hint style="info" %}
The schedule type is fixed once the automation is created. To move between recurring and interval, delete the automation and create a new one.
{% endhint %}
{% endstep %}

{% step %}

#### Save the Schedule

Select **Create Schedule** to activate the schedule. It appears in the Automation table, active by default, and starts running on its schedule.
{% endstep %}
{% endstepper %}

### Managing Automations

The Automations tab is where you manage every automation on the agent. You can see which of them are active, which failed last time they ran, and when each one is due next. Search by workflow name to find one quickly, or filter by status to focus on what needs attention.

From here you can pause an automation, run it on demand, or open it to adjust its schedule, deployment, or workflow. The schedule type itself stays fixed: an automation created as recurring stays recurring, and one created on an interval stays on an interval.&#x20;

Three actions are available for any automation:

<table data-column-title-hidden data-view="cards"><thead><tr><th>Title</th><th>Description</th></tr></thead><tbody><tr><td><h4><i class="fa-pen">:pen:</i> </h4><h4>Edit</h4></td><td>Adjust the automation's schedule, deployment, or workflow</td></tr><tr><td><h4><i class="fa-play">:play:</i> </h4><h4>Run Now</h4></td><td>Trigger the automation immediately, without waiting for its next slot</td></tr><tr><td><h4><i class="fa-trash-can">:trash-can:</i> </h4><h4>Delete</h4></td><td>Remove the automation and stop all future runs</td></tr></tbody></table>

### Execution History

Every automation keeps a record of all runs it has produced, so you can confirm whether it actually fired and investigate the ones that didn't. The history shows when each run happened, how long it took, and whether it succeeded. When something looks wrong, jump straight to the underlying session in Observatory to see what the workflow actually did.

<div data-with-frame="true"><figure><img src="/files/k6pM1IoL8OkT5vuHtWAM" alt="" width="563"><figcaption></figcaption></figure></div>

#### Tracking Executions in Observatory

Every execution links to the Observatory session it produced via the <i class="fa-eye">:eye:</i> action button. Open the session to replay the workflow, inspect variables, and confirm the run did what you expected. Sessions from automations are tagged `AUTOMATION_<workflow-slug>_<id>` and recorded with the contact type `Scheduled Flow`.&#x20;

{% hint style="info" %}
**Filter by automation:** Use the automation tag to isolate one schedule's history, or filter by the contact type to see every automation run across the agent in one view.
{% endhint %}

### How Scheduled Runs Behave

A scheduled run is not a live conversation. When the schedule triggers, the workflow runs without a user message to react to, so build it to do useful work on its own from the moment it starts. Apart from the missing user message, everything else works the same. Plugins, knowledge retrieval, LLM nodes, and integrations behave the same as in a conversation.

Each execution can run for up to 30 minutes before the platform stops it. The default fits multi-step workflows that legitimately take minutes to complete.

{% hint style="warning" %}
**Exactly once on timeout:** If a scheduled run hits the timeout, the platform does not retry it. Each trigger produces exactly one execution, which keeps non-idempotent workflows (orders, tickets, payments) from running twice.
{% endhint %}

### How Interval Schedules Fire

An interval schedule runs on a fixed grid anchored to the time the automation was created: a 15-minute interval fires 15 minutes after creation, then every 15 minutes after that. Cadence is approximate rather than exact to the second, because the scheduler polls periodically. In other words, a run can start a few seconds early or late.

Each run is independent of the one before it:

* **Overlapping runs are allowed:** If a run is still executing when the next grid point arrives, a new run starts alongside it
* **Missed ticks are skipped, not caught up:** If the scheduler is unavailable when a tick is due, that tick is dropped. Scheduling resumes at the next future grid point instead of backfilling the missed run

### Best Practices

* **Design for no user input:** Scheduled workflows start with an empty session. Make sure the first node knows what to do without a prompt.
* **Test with Run Now first:** Validate the workflow once on demand before relying on the schedule
* **Watch the Last Run filter:** Bookmark the `Failed` filter on Active schedules to spot drift early
* **Pause instead of delete:** Toggling **Active** off preserves the schedule and its history, which is safer than deleting during incident response

{% hint style="success" %}
You can now schedule workflows to run on set days and times or a fixed interval, trigger them on demand, and trace every execution back to the session that produced it.
{% endhint %}
