# External triggers: webhooks and polling

**Category:** [Orchestration](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/categories/orchestration)
**Updated:** 2026-08-19

## Start a workflow from another app

Workflows can also be triggered by events that happen *outside* TotalCtrl. There are two mechanisms.
### Webhooks (push)

Each workflow has a unique **webhook URL**, shown in the trigger settings. Point an external app's webhook at that URL and it will start the workflow whenever it sends an event. The incoming payload is available to later steps as `{{trigger.<field>}}`.

For providers that sign their requests (such as Stripe, GitHub, Shopify, Slack, and Typeform), paste the provider's **signing secret** into the trigger so TotalCtrl can verify each request really came from them and reject anything that isn't properly signed.
### Polling (pull)

Some apps don't push events. For these, TotalCtrl **polls** on a schedule and starts your workflow once per new item — for example a new row in **Google Sheets** or a new record in **Airtable**. Connect the account in the trigger and TotalCtrl checks regularly. The first check sets a baseline, so you won't get a flood of runs for items that already existed.

---

## Related Articles

- [Delays: pause a workflow for minutes, hours, or days](https://help.totalctrl.app/en-US/articles/flow-control-delays)
- [Orchestration Overview](https://help.totalctrl.app/en-US/articles/orchestration-overview)
- [Connect an app](https://help.totalctrl.app/en-US/articles/connect-an-app-1)
- [Build your first workflow](https://help.totalctrl.app/en-US/articles/build-your-first-workflow)
- [Filters: stop a run when conditions aren't met](https://help.totalctrl.app/en-US/articles/flow-control-filters)

---
[← Back to TotalCtrl Help Center](https://help.totalctrl.app/en-US/)