https://docs.github.com/pt/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows
Em projetos com diversas branches para diferentes áreas de desenvolvimento, nem sempre é necessário executar um workflow em todo push, especialmente na main, por exemplo.
Além disso, em eventos como pull_request, pode ser importante ter mais controle:
Queremos rodar o workflow quando o pull request é aberto? Quando é sincronizado? Ou apenas quando é aceito (merge)?
Para isso, o GitHub Actions permite configurar filtros e tipos de atividades para cada evento.

Todo evento tem seu funcionamento padrão caso não defina o tipo de atividade.
No caso de pull_request, se não especificarmos nada, o workflow será disparado automaticamente quando o pull request for:
Se quiser acionar o workflow em outras situações, como quando o PR é fechado ou mesclado, é necessário definir explicitamente.
name: Events Demo 1
on:
pull_request: #define que o workflow devera ser ativado se o pull request for aberto ou editado
types: [opened, edited]
workflow_dispatch: #define a possibilidade de ativar manualmente. Mesmo que não tenha tipos, é preciso colocar os ":" pois o anterior foi definido
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Output event data
run: echo "${{ toJSON(github.event) }}"
- name: Get code
uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Test code
run: npm run test
- name: Build code
run: npm run build
- name: Deploy project
run: echo "Deploying..."