π Sync nightly TeamRetro health check scores with Postgres and Slack alerts
β‘ 2 views Β· π Project Management
Description
Quick overview
This workflow runs nightly to fetch each teamβs latest closed TeamRetro health checks, normalizes one row per health dimension, and upserts the scores into a Postgres table, sending a Slack alert only when errors occur.
How it works
- Runs every day at 02:00 (server time) and ensures the
team_health_scorestable exists in Postgres. - Retrieves all teams from TeamRetro and, for each team, fetches up to three most recent health checks.
- Skips teams without a closed health check and continues processing only checks whose status is
closed. - Pulls all dimensions for each closed TeamRetro health check and flattens the ratings into warehouse-ready rows (including the health model and rating scale).
- Filters out unrated or failed dimension rows and upserts valid dimension scores into Postgres using
(health_check_id, dimension)as the conflict key. - Aggregates outcomes into a single run summary and posts the error details to a Slack channel if any failures are detected.
Setup
- Create a TeamRetro credential using an account-scoped API key (
tra_) and select it for the TeamRetro nodes. - Add a Postgres credential and confirm the workflow can create and write to the
team_health_scorestable in your target database. - Add a Slack credential and set the destination channel (for example
#data-alerts) for failure notifications.
π Nodes Used
Postgres, Slack, Schedule Trigger
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File