Skip to content

Plugin: hook-teams

Sends release notifications to Microsoft Teams via Incoming Webhooks. Use it to share new versions and changelog highlights with your team in a Teams channel.

Terminal window
semrel plugin install @semrel/hook-teams

semrel plugin install downloads the binary to .semrel/plugins/ and updates .semrel.lock. Commit .semrel.lock to pin the version for your team.

Pre-built, signed multi-platform images (linux/amd64, linux/arm64) are published on every release:

Terminal window
docker pull ghcr.io/semrels/hook-teams:latest

Verify the image signature with cosign:

Terminal window
cosign verify ghcr.io/semrels/hook-teams:latest \
--certificate-identity-regexp 'https://github.com/SemRels/hook-teams/.github/workflows/release.yml.*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
plugins:
- uses: @semrel/hook-teams
args:
webhook_url: "https://your-tenant.webhook.office.com/webhookb2/..."
title: "🚀 New Release" # optional
theme_color: "0078D7" # optional, hex without #
mention: "user@example.com" # optional, Teams user to @mention
NameRequiredDefaultDescription
SEMREL_PLUGIN_WEBHOOK_URLyesMicrosoft Teams Incoming Webhook URL.
SEMREL_PLUGIN_TITLEno🚀 New ReleaseCard title shown in the Teams message.
SEMREL_PLUGIN_THEME_COLORno0078D7Hex colour (without #) for the card accent.
SEMREL_PLUGIN_MENTIONnoEmail address of a Teams user to @mention.
  1. In Teams, open the target channel → ···Connectors
  2. Search for Incoming WebhookConfigure
  3. Give it a name (e.g. semrel) and optionally upload an icon
  4. Copy the generated webhook URL and store it as a secret
  • SEMREL_VERSION
  • SEMREL_TAG_NAME
  • SEMREL_NEXT_VERSION
  • SEMREL_CHANGELOG
  • SEMREL_DRY_RUN

When SEMREL_DRY_RUN=true, the plugin prints what it would send and exits 0 without making any HTTP calls:

hook-teams: [dry-run] would send Teams notification for v1.4.0

A successful release posts an adaptive card to your Teams channel showing the version number, release branch, and the generated changelog.