Log every GitHub release to Supabase and announce it in Slack

When you publish a new GitHub release, save it as a row in your Supabase changelog table and post a clean announcement to your Slack release channel.

Deterministic Code
GitHubSupabaseSlack BotEngineeringProductNotifications & AlertsData Sync

When a new release is published in my GitHub repository, I want to capture it as a row in my Supabase changelog table and announce it in my team's Slack channel. Pure deterministic pipeline, no reasoning or judgement involved.

Trigger: a GitHub webhook on the release.published event from my product repository. Only fire on full published releases. Skip drafts and pre-releases.

Step 1. In GitHub, call Get a Release using the release ID from the webhook payload so I have the full release metadata: tag name, release name, body, author login, published_at timestamp, and the HTML URL back to the release page.

Step 2. In Supabase, call Create Row to insert into my `releases` table. Map these columns from the GitHub release object: tag (text, from tag_name), name (text, from name), body (text, from body), author (text, from author.login), published_at (timestamp, from published_at), and html_url (text, from html_url). Assume the table already exists with those columns.

Step 3. In Slack, call Send a Message as the bot to channel #releases. Format the message in Slack mrkdwn with the tag as a bold heading, the release name on the next line, the release body underneath, and a link back to the GitHub release page at the bottom. Keep the formatting clean so it reads well in the channel.

Make the Slack channel name, the Supabase table name, and the watched GitHub repository configurable inputs so I can reuse the same workflow for other repos or other channels later.

Additional information

What does this prompt do?
  • The moment you publish a release on GitHub, we save the tag, title, notes, author, and date as a new row in your Supabase changelog table.
  • We post a clean announcement to your Slack release channel with the version, title, and the release notes so the whole team sees it at the same time.
  • Your database and your Slack channel stay in sync, giving you one source of truth for everything you have ever shipped.
  • Drafts and pre-releases are skipped, so only finished releases get logged and announced.
What do I need to use this?
  • A GitHub account with access to the repository you want to track releases for
  • A Supabase project with a table ready to store release records
  • A Slack workspace and the announcement channel you want the bot to post in
How can I customize it?
  • Choose which Slack channel the announcement gets posted in
  • Decide which fields from each release get saved to your changelog table
  • Add a filter so only specific repositories, or tags with a certain prefix, get tracked

Frequently asked questions

Will this fire for draft releases or pre-releases?
No. The workflow only runs when you publish a full release. Drafts and pre-releases are ignored so your changelog stays clean.
What happens if I edit a release after publishing it?
The first publish creates the changelog row and the Slack announcement. Later edits do not overwrite the row or repost in Slack by default. You can extend the workflow to update the row on edits if you want.
Can I track releases from more than one repository?
Yes. You can connect any number of repositories from the same GitHub account, and every published release lands in the same Supabase table and Slack channel.
Do I need to create the Supabase table first?
Yes. Create a table in Supabase with columns for the release tag, name, body, author, and publish date before turning this on. The workflow will not create the table for you.
Will the release notes look good in Slack?
Yes. The release body gets formatted for Slack so headings, lists, and links render the way your team expects in the channel.

Stop copy-pasting release notes into Slack.

Connect GitHub, Supabase, and Slack once. Every new release lands in your changelog database and your team's Slack channel automatically.