Skip to main content
DevOps Integration
CLI-First — No Native Webhooks

Fly.io Deploy Notifications in Slack & Microsoft Teams

AM

Alex Morgan · Principal Engineer

Alex Morgan is a principal engineer at SyncRivo, focused on platform architecture, reliability engineering, and the infrastructure powering real-time messaging interoperability. LinkedIn

April 10, 2026 · 9 min read

Fly.io is CLI-first with no built-in webhook delivery system for deployment events — no Slack integration, no Teams integration. Route Fly.io deploy results and Machine health events to Slack, Teams, Webex, Google Chat, and Zoom simultaneously via GitHub Actions and SyncRivo.

Fly.io native Slack✗ No native integration
Fly.io native Teams✗ Not available
SyncRivo bridge✓ All 5 platforms via GitHub Actions
Setup time~20 minutes

Fly.io Deployment Events SyncRivo Routes

SyncRivo receives Fly.io deployment events via GitHub Actions steps or external health monitoring webhooks and routes them to Slack, Teams, Webex, Google Chat, or Zoom — simultaneously, with environment-based targeting.

Deploy Succeeded

Fly deploy completed successfully via CI/CD pipeline — routed to the engineering Slack channel and, for production deployments, the engineering releases Teams channel simultaneously.

Deploy Failed

Fly deploy returned a non-zero exit code — build failed, image push failed, health check timed out — routed to the on-call Slack channel and the engineering leads Teams channel simultaneously.

Machine Health Failed

Fly Machine health check failure detected via external monitoring — routed to the on-call Slack channel and the infrastructure Teams channel.

Machine Restarted

Fly Machine restarted due to health failure or OOM kill — surfaces application-level instability, routed to the platform engineering Slack channel and infrastructure Teams channel.

Rollback Triggered

Fly deploy rollback executed after health check failure — routed to both Slack and Teams to notify all stakeholders of the revert.

Preview/Branch Deploy

Deployments triggered from non-main branches via GitHub Actions — high-frequency, developer-focused. Typically routed to Slack only; Teams routing reserved for production events.

Route Fly.io Deploys to Teams in 5 Steps (20 Minutes)

No changes to fly.toml. Add notification steps to your GitHub Actions deployment workflow.

  1. 1

    Create a SyncRivo inbound endpoint

    In SyncRivo, create a new inbound endpoint for Fly.io deployment events. Copy the unique HTTPS endpoint URL — this is the webhook destination you'll call from GitHub Actions.

  2. 2

    Add notification steps to your GitHub Actions workflow

    In your .github/workflows/deploy.yml, after the `flyctl deploy` step, add a curl run step to POST to your SyncRivo endpoint. Include: app name, environment (production/staging/preview), commit SHA, branch name, actor, and deploy result (success/failure). Use GitHub's `if: success()` and `if: failure()` conditions to differentiate.

  3. 3

    Connect Slack and Teams in SyncRivo

    In SyncRivo, authorize your Slack workspace via OAuth2 app install and your Microsoft Teams tenant via Microsoft Graph API admin consent. Map destination channels — which Slack channels and Teams channels receive Fly.io deployment events.

  4. 4

    Configure routing rules by environment and severity

    In SyncRivo, set routing rules: Deploy succeeded (Production) → Slack #deploys + Teams Engineering Releases simultaneously. Deploy failed (any environment) → Slack #on-call + Teams Engineering Leads simultaneously. Preview/branch deploys → Slack only.

  5. 5

    Test the workflow and go live

    Trigger a test deployment via GitHub Actions. Verify the notification arrives in both your Slack channel and Teams channel within seconds. For machine health monitoring, configure your external uptime checker to POST to SyncRivo when your Fly app's health endpoint returns a non-200 response.

Routing Matrix: Event × Environment × Platform

EventEnvironmentSlackTeams
Deploy SucceededProduction✓ #deploys✓ Engineering Releases
Deploy SucceededStaging✓ #deploys
Deploy SucceededPreview/Branch✓ #fly-devs
Deploy FailedAny✓ #on-call✓ Engineering Leads
Rollback TriggeredAny✓ #on-call✓ Engineering Leads
Machine Health FailedAny✓ #on-call✓ Infrastructure
Machine RestartedAny✓ #platform-eng✓ Infrastructure

Native Fly.io Notifications vs. SyncRivo

CapabilityNative Fly.ioWith SyncRivo
Notify Slack✗ No native Slack integration or ChatOps app✓ Via SyncRivo step in GitHub Actions or health monitoring webhook
Notify Microsoft Teams✗ No native Teams integration or notification option✓ Full Teams channel delivery via SyncRivo routing
Notify Webex / Google Chat / Zoom✗ Not available natively✓ All 5 platforms from a single SyncRivo endpoint
Single deploy event → Slack AND Teams simultaneously✗ No built-in webhook delivery system✓ One SyncRivo endpoint, fan-out to all platforms
Production deploys → Teams, preview → Slack only✗ No platform-side routing rules✓ Per-environment platform targeting via routing rules
Deploy failure → on-call Slack + engineering leads Teams✗ No built-in notification system✓ Severity-driven routing rules in SyncRivo
Zero code changes to fly.toml✓ fly.toml is unchanged✓ Changes are in GitHub Actions workflow only
Works with multi-region Fly deployments✓ Route per-region events with region tag in payload

Fly.io Teams Integration — Frequently Asked Questions

Does Fly.io have a Microsoft Teams integration?+
Fly.io does not have a native Microsoft Teams integration for deployment or machine health notifications. Fly.io is a CLI-first platform — its deployment model uses `fly deploy` and its notification story relies on external health checks (fly-proxy healthcheck), GitHub Actions CI/CD pipelines, or custom log aggregation via Fly's log streaming feature. There is no built-in Slack notification option in the Fly.io dashboard either, unlike Heroku ChatOps or Vercel's Slack integration. For engineering organizations where developers deploy to Fly.io but leadership, QA, or operations teams use Teams, use SyncRivo as a webhook relay via GitHub Actions or Fly Machine health endpoints to fan deployment and health events to Slack, Teams, Webex, Google Chat, and Zoom simultaneously.
How do I send Fly.io deploy notifications to Microsoft Teams?+
Since Fly.io does not have native webhook delivery for deployment events, the standard approach is to emit notifications from your CI/CD pipeline. If you deploy via GitHub Actions, add a step after `fly deploy` that POSTs the deployment result to your SyncRivo inbound endpoint. SyncRivo routes the deployment notification to Teams, Slack, Webex, Google Chat, and Zoom simultaneously. For Fly Machine health monitoring, configure Fly's log streaming to an HTTP sink or use the Fly metrics API with an external polling job to detect health state changes and route them to SyncRivo.
What Fly.io events can SyncRivo route to messaging platforms?+
Via GitHub Actions CI/CD integration: deploy succeeded (exit code 0 from `fly deploy`), deploy failed (non-zero exit code), rollback triggered. Via Fly Machine health polling: machine started, machine stopped, machine health check failed, machine restarted. Via Fly log streaming: application error spikes, OOM kills, custom application log events. Configure routing rules in SyncRivo — route deploy failures to both the on-call Slack channel and the engineering leads Teams channel simultaneously; route production deploy success to Slack and Teams; route health failures to the on-call Slack channel and the infrastructure Teams channel.
How does Fly.io compare to Railway and Render for notifications?+
Railway and Render both have built-in webhook systems that fire deployment events directly from the platform dashboard with no pipeline changes required. Fly.io is CLI-first and does not have a built-in webhook delivery system for deployment events. Fly.io notifications require either emitting events from your CI/CD pipeline (GitHub Actions, GitLab CI) or polling Fly's machine health APIs. For organizations standardized on Fly.io with GitHub Actions, the setup is straightforward: add SyncRivo notification steps to your GitHub Actions workflow and route deployment results to Teams, Slack, and other platforms via SyncRivo.
Can I route Fly.io machine health failures to Microsoft Teams?+
Yes. Fly's proxy runs configurable health checks on deployed Machines — HTTP path health checks, TCP port checks, and process checks. When a health check fails, Fly restarts the Machine. To get notified in Teams when this happens, configure an external uptime monitoring tool (like Better Uptime, UptimeRobot, or Grafana Synthetic Monitoring) to check your Fly app's public endpoint. When the check fails, configure the uptime tool to POST a webhook to SyncRivo. SyncRivo routes the health failure event to Teams, Slack, Webex, Google Chat, and Zoom simultaneously.
Does SyncRivo work with Fly.io multi-region deployments?+
Yes. SyncRivo routes deployment and health events regardless of which Fly.io region your Machines run in. If you deploy to multiple Fly regions (e.g., iad, lhr, nrt), your GitHub Actions workflow runs `fly deploy` for each region (or uses Fly's auto-scaling placement). Add notification steps to each deployment step, tagging the region in the payload. SyncRivo routing rules can differentiate by region — route production health failures from primary regions to on-call Slack and Teams; route secondary region events to infrastructure channels only.

Route Fly.io Deploys to Teams Today

Free to start. No changes to fly.toml. Add SyncRivo notification steps to your GitHub Actions workflow and route deploy results to Slack, Teams, Webex, Google Chat, and Zoom simultaneously.