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

# Triggers

Choose how an automation starts, whether from an HTTP call, a time-based schedule, or an on-chain event.

The trigger is the first step of an automation: it decides when the pipeline runs. Every automation has one, configured from its **Pipeline** tab, and it comes in three types.

## Choose a trigger type

| Type                                                         | Fires when                                       | Typical uses                                                                                        |
| ------------------------------------------------------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| [**Webhook**](/baas-console/automations/triggers/webhook.md) | An external system calls its unique HTTP URL     | React to events from your backend, a payment provider, or any service that can send an HTTP request |
| [**Cron**](/baas-console/automations/triggers/cron.md)       | A time-based schedule ticks                      | Scheduled transactions, recurring reports, periodic maintenance                                     |
| [**Monitor**](/baas-console/automations/triggers/monitor.md) | A smart contract emits a matching on-chain event | Alert on token transfers, react to contract activity                                                |

## Configure it from the Pipeline tab

A new automation starts without a trigger. On the **Pipeline** tab, click **Configure** on the trigger node to open the **Configure trigger** panel. Pick one of the three types: **Webhook**, **Cron**, or **Monitor**. Each type shows its own form, and **Save** unlocks once the configuration is valid.

## One trigger, one type

* Every automation has exactly one trigger.
* The type is set the first time you save, and it stays as chosen. The configuration stays editable through the trigger node's **Edit** button. One exception: a monitor's event is [locked once the automation has actions](/baas-console/automations/triggers/monitor.md#what-stays-editable). For a different type, create a new automation.
* The trigger lives as long as its automation: it is removed when the [automation is deleted](/baas-console/automations/manage-an-automation.md).

## What the trigger passes to actions

Every [action](/baas-console/automations/actions.md) can use the data that started the automation, through `trigger.*` variables. A webhook forwards the JSON body it received as `trigger.body`, a cron delivers its planned time as `trigger.scheduledAt`, and a monitor delivers the on-chain event as `trigger.event`. Each type's page shows exactly what your actions can read.

## Every firing records a run

Each firing records exactly one [run](/baas-console/automations/runs-and-logs.md): retries and redeliveries never create duplicates. Keep the automation [**Active**](/baas-console/automations/manage-an-automation.md) so firings are accepted.

## Next

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Webhook</strong></td><td>Get the URL and secret, then call it from any system.</td><td><a href="/baas-console/automations/triggers/webhook.md">Webhook</a></td></tr><tr><td><strong>Cron</strong></td><td>Write the expression, pick the timezone, and let it tick.</td><td><a href="/baas-console/automations/triggers/cron.md">Cron</a></td></tr><tr><td><strong>Monitor</strong></td><td>Pick a contract event and filter its arguments.</td><td><a href="/baas-console/automations/triggers/monitor.md">Monitor</a></td></tr></tbody></table>
