How to send Digital Empire alerts to Microsoft Teams

Microsoft Teams alerts require a bit more setup than Slack because Microsoft retired the classic "Office 365 Connectors" webhook path. Every Teams webhook created today goes through Power Automate. This guide walks the current supported flow and calls out what to migrate if you still have an old Connector URL sitting in a config file.

The classic Connectors deprecation -- what changed

Microsoft announced on the Microsoft 365 developer blog at devblogs.microsoft.com that all Office 365 Connectors within Teams -- including the "Incoming Webhook" connector that many integrations depended on -- would be retired. The retirement timeline was extended more than once, but the strategic direction is clear: new Teams integrations use Power Automate (a "Workflow" in Teams terminology). As of Aug 2026 -- verify current retirement status on the Microsoft blog post above before relying on a legacy Connector URL for anything customer-facing.

If you have a Connector URL that still works today, our dispatcher will still POST to it and the message will still render. But we do not recommend creating new ones -- create the Power Automate flow described below instead.

The 5-step Power Automate flow

Power Automate ships free with any Microsoft 365 Business plan. The Power Automate documentation on learn.microsoft.com covers the general concept; the flow we need is specifically an HTTP-triggered flow that posts to a Teams channel.

In Microsoft Teams, click the "..." menu on the target channel and pick "Workflows." Search for the template named "Post to a channel when a webhook request is received." Pick it.

On the next screen, name the flow (for example "Digital Empire Alerts"), pick the target team and channel, and click "Add workflow."

Teams provisions the flow and shows you the HTTP POST URL. Copy this URL -- it is what Digital Empire will send alerts to. This URL is scoped to the specific team and channel you picked; it can only post there.

Paste the URL into the "Webhook URL" field on the Digital Empire integrations page for your product (PixelProof, EntryProof, or TariffWatch), pick "Teams" as the channel type, and save.

Click "Send test alert" on the integrations page. Within a few seconds a formatted alert card should appear in the Teams channel. If it does not, check the flow run history in Power Automate at make.powerautomate.com -- failed runs show the exact request body and Microsoft's rejection reason.

Screenshot placeholder -- Teams Workflows dialog with the HTTP URL copy button. Andy will upload the real screenshot after wire-up.



What we actually send to Teams

Our dispatcher formats the payload as an Office 365 Connector MessageCard, which Power Automate's default "Post message in a chat or channel" step renders natively. The MessageCard reference on learn.microsoft.com documents the schema. The body we POST looks like this:

{ "@type": "MessageCard", "@context": "https://schema.org/extensions", "themeColor": "b91c1c", "summary": "Pixel break on your-store.myshopify.com", "title": "Pixel break on your-store.myshopify.com", "text": "The Meta Pixel is no longer firing PageView on your product pages.", "sections": [{ "facts": [{ "name": "Severity", "value": "critical" }, { "name": "Event", "value": "pixel_missing" }] }], "potentialAction": [{ "@type": "OpenUri", "name": "Open dashboard", "targets": [{ "os": "default", "uri": "https://digital-empire-app.vercel.app/meta-monitor" }] }] }

The @context value in this payload points to Microsoft's Actionable Messages extension of the schema.org vocabulary at schema.org -- MessageCard is a legacy Office 365 shape that predates Adaptive Cards but remains the interoperable ground truth for incoming webhook payloads.

The themeColor field is a hex string minus the leading #; critical alerts render dark red, medium amber, low grey. The potentialAction array adds an "Open dashboard" button in the card that deep-links back to the relevant product page.

If you set the flow up as a fresh Power Automate flow with a custom "Post adaptive card" step instead of the templated MessageCard step, our payload will still work -- Adaptive Cards accept the same MessageCard shape as a fallback for backward compatibility, and Microsoft explicitly documents this at the Adaptive Cards reference on the same learn.microsoft.com property.

Rate limits and Teams-specific quirks

Microsoft publishes Teams API rate limits on learn.microsoft.com under "Microsoft Teams API rate limits" -- the exact numbers depend on the tenant, but the practical ceiling for message-post flows is well above what our dispatcher will ever hit. Our own 10-alert-per-hour cap sits well under it. As of Aug 2026 -- verify current, Microsoft occasionally revises these.

The one Teams quirk to know: Adaptive Cards render slightly differently on Teams mobile vs desktop. Long field values wrap on desktop but truncate on mobile. If your alert bodies routinely exceed 300 characters, consider switching to a shorter template or routing to PagerDuty for on-call context instead.

Security -- Power Automate flows are scoped

A Power Automate flow URL is scoped to one specific team and channel. Even if the URL leaks, the worst case is that an attacker can post messages into that one channel. The URL contains no tenant-wide grant. This is a meaningfully tighter blast radius than the retired Connector URLs, which any Teams tenant admin will corroborate. Still: rotate the URL if it leaks (delete the flow, create a new one) and never embed it in a client-side bundle.

Was this helpful?

Yes / No

Related articles

Send Digital Empire alerts to Slack

Send Digital Empire alerts to PagerDuty

Send Digital Empire alerts to Discord

Custom webhook endpoints with HMAC verification

PixelProof customer webhooks admin

FAQ

My old Connector URL still works -- should I migrate? Yes. Even though the URL still POSTs successfully today, the retirement timeline is not a bluff; Microsoft has retired similar features on similar timelines. Provision a Power Automate flow now while it is quiet, and swap the URL on the integrations page.

Do I need a Microsoft 365 Business plan to use Power Automate? Yes for organizational Teams channels. Personal Teams accounts also get a limited Power Automate tier that will run the flow described above, but organizational Teams is where the vast majority of alert routing lives.

Can I filter which alerts land in Teams vs Slack? Yes -- add both as separate webhook rows on the same product's integrations page and set different severity floors or event filters on each. The dispatcher fires all matching webhooks in parallel.

Why do I see two identical alerts in Teams? Almost always a duplicate Power Automate flow. Check the flow list at make.powerautomate.com -- if two flows share the same trigger URL prefix, delete one.

Still stuck? Email support@digitalempireholdings.com or support@digitalempireholdings.com.

FAQ

My old Connector URL still works -- should I migrate?

Yes. Even though the URL still POSTs successfully today, the retirement timeline is not a bluff; Microsoft has retired similar features on similar timelines. Provision a Power Automate flow now while it is quiet, and swap the URL on the integrations page.

Do I need a Microsoft 365 Business plan to use Power Automate?

Yes for organizational Teams channels. Personal Teams accounts also get a limited Power Automate tier that will run the flow described above, but organizational Teams is where the vast majority of alert routing lives.

Can I filter which alerts land in Teams vs Slack?

Yes -- add both as separate webhook rows on the same product's integrations page and set different severity floors or event filters on each. The dispatcher fires all matching webhooks in parallel.

Why do I see two identical alerts in Teams?

Almost always a duplicate Power Automate flow. Check the flow list at make.powerautomate.com -- if two flows share the same trigger URL prefix, delete one.