A pipeline needs to know when to run: on every push, only on pull requests to main, nightly, or when someone clicks a button. A workflow file and its on: triggers answer exactly that. Reach for filters like branches and paths when you want, say, tests only on PRs that touch src/. Watch out for the usual surprises: branch filters mean different things for push and pull request, and cron runs in UTC.