Triggers — Firestore writes, schedules, webhooks, manual

A workflow runs when something starts it. Four trigger types today:

Firestore write — fires when a doc is created, updated, or deleted. Pick the collection (opportunities, accounts, contacts), the event (create / update / delete), and optionally add a condition (a field equals X, a field changed to Y, a field is no longer Z). Inside the workflow, the doc is available as trigger.doc — reference fields anywhere downstream with ${trigger.doc.field}.

Schedule — runs on a cron preset: every 5 minutes, every 15 minutes, every hour, every day, every week. The schedule poller wakes once a minute and dispatches anything due.

Webhook — generates a token-protected URL. Anyone with the URL can POST a JSON body to it and the workflow fires. The body is available as trigger.doc throughout. Useful for hooking up an external system that already speaks HTTP.

Manual — no automatic firing. Trigger from the editor's "Run now" button or by calling the workflow ID from the API. Good for ops runbooks you want to fire on intent.

Permissions:
Workflow CRUD is org-member. Wally drafting is org-admin only. Each action a step calls has its own auth level (most are 'org-member'), and runAs can be the workflow creator, a designated user, or the org's system principal.