Tag Sentry releases and post Vercel deploys to Slack

Every time you promote a Vercel production deploy, register the release in Sentry, mark it deployed, and announce it in your team's Slack channel.

Deterministic Code
VercelSentrySlack BotEngineeringOperationsNotifications & AlertsData Sync

Build a deterministic code workflow that registers Vercel production deploys as Sentry releases and announces them in Slack. No AI judgement is needed; the flow is fixed.

Trigger: incoming webhook from Vercel for the deployment.promoted event, filtered to production deployments only (target == 'production'). The user will configure the webhook in Vercel pointing at this workflow's webhook URL.

Steps, in order:

1) Call Vercel's Get Deployment with the deployment id from the webhook payload. From the response, extract: the commit SHA (meta.githubCommitSha or the generic gitSource sha), the commit message (meta.githubCommitMessage), the project name, the live deployment URL (the production alias if present, otherwise the deployment URL), and the user who promoted it (the human-readable name or username from the deployment creator / promoter field on the payload).

2) Idempotency check: call Sentry's Retrieve a Release using the commit SHA as the version identifier, scoped to the Sentry organization the user configures. If it returns the release, skip step 3. If it returns 404, run step 3.

3) Call Sentry's Create a New Release. Use the commit SHA as the version. Bind it to the Sentry project the user configures (default to the Vercel project name, but expose a config field so they can override). Include the commit as a ref so Sentry can fetch commit metadata for suspect-commit grouping.

4) Call Sentry's Create a Deploy for that release. Set environment to 'production' (configurable). Set the deploy URL to the live deployment URL from step 1. Set the deploy name to something like '<project> <shortSha>'.

5) Call Slack Bot's Send a Message to the releases channel the user configures. Format a short announcement with: project name, short SHA, the first line of the commit message, who promoted it, a link to the live deployment URL, and a link to the new Sentry release (https://sentry.io/organizations/<org>/releases/<version>/). Use Slack Block Kit so the fields are nicely laid out.

Config inputs the user should set on the workflow: Sentry organization slug, Sentry project slug (optional override; defaults to Vercel project name), Sentry environment name (default 'production'), Slack channel id or name for announcements, optional Vercel project filter (only announce these project names; empty = all).

Credentials: vercel (api token), sentry (auth token with project:releases scope), slackbot (bot token with chat:write and chat:write.public). Use slackbot rather than user-token slack so the announcement is attributed to a bot identity that won't disappear when a person leaves.

Error handling: if Get Deployment fails or returns no commit SHA, log and stop (don't post to Slack with missing data). If Sentry create-release returns a 409 conflict, treat it as already-exists and continue to Create a Deploy. If Slack fails, the Sentry record should still stand; surface the Slack error in the run log.

Additional information

What does this prompt do?
  • Watches for Vercel production promotions and kicks off the moment one happens.
  • Registers the new release in Sentry using the commit so future errors get grouped by version.
  • Records the release as deployed to your production environment in Sentry with the live deployment URL.
  • Posts a short release note in Slack with the project, commit message, who promoted it, the live URL, and a link to the Sentry release.
What do I need to use this?
  • A Vercel account with permission to manage webhooks for your project or team.
  • A Sentry account with permission to create releases and deploys in the project you want to track.
  • A Slack workspace where you can install our Slack app and a channel for release announcements.
How can I customize it?
  • Pick which Slack channel the announcement lands in, and tweak the message format (emoji, fields shown, mention groups).
  • Change which Sentry project the release is bound to, or rename the environment from production to staging or preview.
  • Add a filter so only specific Vercel projects trigger announcements, instead of every promoted deploy.

Frequently asked questions

What is a Vercel promotion and how is it different from a regular deploy?
On Vercel, every git push creates a preview deploy. A promotion is when a deploy is pushed to your production domain, either automatically from your main branch or manually with Promote to Production. This workflow only fires on promotions, so preview deploys won't spam your release channel.
Why tag releases in Sentry at all?
When Sentry knows which release an error came from, it groups new errors by version, flags regressions introduced in the latest release, and shows you whether an issue is new, resurfaced, or carried over. It also lets you mark fixed issues as resolved in the next release.
Will it announce the same release twice if I redeploy?
No. The workflow checks whether a release for that commit already exists in Sentry. If it does, it skips creating the release and just records a new deploy, so the Slack message still goes out but Sentry stays clean.
Do I need Vercel's built-in Sentry integration?
You can keep it if you use it for source map uploads, but this workflow is independent. Vercel's integration does not register the release or post to Slack on promotion. That is exactly the gap this fills.
Can I send the announcement to multiple channels?
Yes. The Slack step is a normal block in the workflow, so you can duplicate it and target different channels or change the message per audience, for example engineering, support, and a public changelog channel.

Stop hand-tagging Sentry releases after every Vercel deploy.

Connect Vercel, Sentry, and Slack once. Every promotion to production gets tagged, deployed, and announced automatically.