Developer docs

Microsoft Teams notifications

DeploySeal posts Adaptive Cards into a Teams channel through a Teams Workflows webhook (Power Automate's “When a Teams webhook request is received” trigger). Nothing to install in your tenant, no bot registration — one URL per channel. Channels are configured under Settings → Integrations → Microsoft Teams; each picks its own events and severity filter.

Six-step setup

  1. 1

    Open the channel

    In Teams, go to the channel that should receive DeploySeal cards, open its menu and choose Workflows.

  2. 2

    Pick the webhook template

    Search for and select Post to a channel when a webhook request is received. (Office 365 Connectors are retired; Workflows is the supported route.)

  3. 3

    Name the flow and confirm the channel

    Give it a name such as DeploySeal, confirm the team and channel, and press Add workflow.

  4. 4

    Copy the URL

    Teams shows the webhook URL once the flow is created (it starts with https://…logic.azure.com/ or https://…powerautomate.com/). Copy it.

  5. 5

    Paste it in DeploySeal

    Go to Settings → Integrations → Microsoft Teams Add Teams channel, paste the URL and give it a label. The URL is encrypted at rest and never shown again.

  6. 6

    Send a test and choose events

    Press Send test — a card should appear in the channel within a few seconds. Then pick the events and severity filter on the channel card.

The URL must be https and reachable over the public internet; DeploySeal validates the shape when you paste it and refuses private or internal addresses. Redirects are never followed. Any https host is accepted so relays and regional Logic Apps domains work — you do not need to whitelist anything.

What each card shows

Every card is an Adaptive Card 1.4 with a bold header, a fact list, an optional note and one Open in DeploySeal button. Header colour follows the same vocabulary as Slack: Critical and “Do not approve” in red, High and reservations in amber, a cleared launch gate in green.

EventHeaderFacts
issue.createdNew high issue: #12 Checkout button unresponsiveSeverity · Type · Campaign · Reported by · Page
issue.status_changed#12 Checkout button unresponsive → Retest FailedStatus (old → new) · Severity · Campaign · Changed by · reason as a note
campaign.launchedCampaign launched: Spring relaunchSite · Testers invited · Target ship date · Launched by
tester.completedSarah N. finished testing: Approve with reservationsVerdict · Issues reported · Campaign · closing note as a quote
report.sealedReadiness report sealed: Spring relaunchLaunch gate · Readiness · Seal + version · Signatures · Site · Sealed by + decision
signoff.requestedSign-off requested: Spring relaunchSigners · Requested by · Target ship date

Status changes post only Fixed, Retest failed, Closed and Won't fix unless “all status changes” is on. The severity filter (all / High and above / Critical only) applies to both issue events. Cards are delivered from a durable queue with three quick attempts; a channel whose last delivery failed shows a Failed badge with the reason and heals on the next success.

The payload, for the curious

If you would rather route the card through your own flow steps (conditions, mentions, a different channel), this is the exact envelope the Workflows trigger receives:

POST <your Workflows webhook URL>
Content-Type: application/json

{
  "type": "message",
  "summary": "New High issue #12: Checkout button unresponsive",
  "attachments": [
    {
      "contentType": "application/vnd.microsoft.card.adaptive",
      "contentUrl": null,
      "content": {
        "type": "AdaptiveCard",
        "version": "1.4",
        "msteams": { "width": "Full" },
        "body": [
          { "type": "TextBlock", "size": "Medium", "weight": "Bolder", "wrap": true,
            "color": "Warning", "text": "New high issue: #12 Checkout button unresponsive" },
          { "type": "FactSet", "facts": [
            { "title": "Severity", "value": "🟠 High" },
            { "title": "Type", "value": "Bug" },
            { "title": "Campaign", "value": "Spring relaunch" },
            { "title": "Reported by", "value": "sarah@example.com" },
            { "title": "Page", "value": "https://staging.example.com/checkout" }
          ] }
        ],
        "actions": [
          { "type": "Action.OpenUrl", "title": "Open in DeploySeal",
            "url": "https://app.deployseal.com/issues/9b2c5d4e-…" }
        ]
      }
    }
  ]
}

Ready to wire it up? Teams channels live in your workspace settings.

Open Teams settings

Using Slack? See the Slack setup guide. Need raw events? See the webhook reference.