Skip to main content

We use cookies for essential site functions and anonymous analytics. Choose what to allow.

Accepts all cookies and closes this banner
Reject All
Back to Insights
Engineering & Reliability

Heroku ChatOps is Slack-Only. Here's How to Route Heroku Events to Microsoft Teams.

Heroku ChatOps is Slack-only and there is no Teams app. How to get Heroku release, build, and dyno events into Teams with webhooks, and where a bridge fits.

Published
Updated
min read
Heroku ChatOps is Slack-Only. Here's How to Route Heroku Events to Microsoft Teams.

Heroku ChatOps: Slack Interactive Commands, No Teams Equivalent

Heroku ships Heroku ChatOps — a Slack app that lets developers run deploy commands directly from Slack channels. heroku deploy, heroku rollback, heroku releases — all executable from Slack without opening the Heroku Dashboard.

There is no equivalent Teams integration. The Heroku Elements marketplace has no Teams app. Heroku Dashboard has no Teams notification option. Heroku documentation makes no mention of Teams.

Two Different Problems: Command Execution vs. Event Notification

Before bridging the gap, it's worth being precise about what Heroku ChatOps does, what Heroku webhooks do, and what SyncRivo does.

Heroku ChatOps (Slack only): Interactive command execution from chat. A developer types /heroku releases --app myapp in Slack and gets a list of recent releases. This is a two-way interactive loop — the Slack app authenticates to Heroku's API and executes commands on your behalf.

Heroku webhooks: Event notification. When Heroku fires a release webhook — release succeeded, release failed, build failed, dyno crashed — the payload goes to any HTTPS URL you configure. To get it into Teams, that URL has to be a Teams-side flow (Teams Workflows or an incoming webhook) or a small relay you host that formats and posts the message.

SyncRivo: Bridges the human conversation between Slack, Teams, Google Chat, Webex, and Zoom. It is not a webhook target — it has no inbound endpoint for Heroku events, no routing rules, and it does not relay messages posted by bots or apps.

These solve different problems. Developers keep ChatOps in Slack, Teams gets Heroku events through a Teams-side webhook, and SyncRivo keeps the conversation about a release in one place across both platforms.

Heroku Webhook Events

Heroku's webhook system fires on these event types:

  • api:release — a new release was created (deploy succeeded or release rollback)
  • api:build — a build completed (succeeded or failed)
  • api:dyno — a dyno crashed or restarted
  • api:formation — dyno formation changed (scale up/down)
  • pipeline:promotion — a pipeline promotion was triggered

The webhook payload includes the app name, release version, release description, release status, build output URL, dyno type, and git commit SHA.

Configuring Heroku → Teams

Step 1: Create a Teams-side webhook target (a Teams Workflows flow or incoming webhook for the Engineering Leads or Engineering Releases channel) and copy its URL.

Step 2: Add the webhook to Heroku via the Dashboard or CLI.

Dashboard: Navigate to your app → Settings → Webhooks → Add Webhook. Enter the Teams-side URL. Select event types: api:release, api:build, api:dyno.

CLI:

heroku webhooks:add \
  --app APP_NAME \
  --events "api:release,api:build,api:dyno" \
  --url https://YOUR-TEAMS-SIDE-ENDPOINT \
  --secret YOUR_SIGNING_SECRET

Step 3: In the Teams-side flow, format the payload (app, version, status, commit) into the message and post it. If you want different channels per event type, add a second webhook in Heroku with its own URL or branch inside the flow.

Step 4: Keep Heroku ChatOps and any Slack notifications in place for the developer channels.

Step 5: Trigger a test deploy. Verify the event appears in Slack and in Teams.

Notification Matrix for Mixed Slack/Teams Engineering Orgs

EventContextSlackTeams
api:release succeededProduction#deploysEngineering Releases
api:release failedAny#on-callEngineering Leads
api:build failedAny#on-callEngineering Leads
api:dyno crashedAny#on-callEngineering Leads
api:dyno restartedAny#platform—
pipeline:promotionAny#deploysEngineering Releases
Review app deployPreview#frontend-devs—

Where SyncRivo Fits (and Where It Doesn't)

Bridge the Slack and Teams channel pairs in the table with SyncRivo, and the conversation around a failed release — the developer's "rolling back now" in Slack, the lead's "was this customer-facing?" from Teams, the decision about the postmortem — is visible on both platforms, in both directions, with threads, edits, files, and @mentions kept in sync. The Heroku notifications themselves still arrive through ChatOps or the Teams-side webhook; SyncRivo does not copy them across.

Heroku, Vercel, Netlify: The Same Teams Gap

All three major PaaS/deployment platforms have the same structural gap: native Slack integrations (or Slack apps in Heroku's case), no native Teams integration.

If your organization runs multiple deployment platforms — Heroku for application servers, Vercel for Next.js frontends, Netlify for marketing sites — each can POST to the same Teams-side webhook so all deploy events land in one Teams channel for engineering leadership visibility, while the discussion about them is bridged to the engineers' Slack channel.

For the Heroku webhook setup reference, see the Heroku Deploy Notifications in Slack & Teams integration guide.

Bridge your messaging platforms without migrating

Connect Slack, Teams, Google Chat, Webex, and Zoom with any-to-any routing. No guest accounts. No migration. BAA available for Enterprise.

cookie_consent.banner.aria_announcement