Microsoft Teams
Datafly Signal posts events to a Microsoft Teams channel as Adaptive Card messages through a Workflows webhook. Useful for routing lead notifications, sign-ups and high-value orders to the team that owns them.
Microsoft retired the Office 365 / Microsoft 365 connectors, including the webhook.office.com Incoming Webhook, in May 2026. Those URLs no longer deliver. Create the webhook with the Teams Workflows app as described below and replace the URL in any existing integration.
Why route Microsoft Teams through Datafly Signal
- Alerts fire off the same event stream as everything else. No separate instrumentation, and no gap between what your destinations received and what Microsoft Teams told you about.
- Which events reach you is configuration, not code. The trigger conditions live in the pipeline alongside every other rule, so tuning what reaches Microsoft Teams does not require an application release.
- Alert volume is rate-limited. Signal applies the same rate limiting and retry behaviour it uses for any destination, so an incident that spikes your event rate does not flood the channel.
Prerequisites
- A Microsoft Teams team and channel you can add workflows to.
- One webhook per channel: split traffic by creating one Signal integration per channel.
Get your credentials
- In Microsoft Teams, open the channel, select More options (…) next to it and choose Workflows.
- Pick the template Send webhook alerts to a channel (or create a flow with the When a Teams webhook request is received trigger that posts the received Adaptive Card).
- Configure the team and channel and save.
- Copy the webhook URL the workflow shows. It looks like
https://....logic.azure.com/workflows/.../invoke?...&sig=...(or a Power Platform environment URL).
The URL is a secret: anyone holding it can post to the channel. Workflows belong to the user who created them; add a co-owner so the flow keeps running if that person leaves.
Configure in Signal
Configuration fields
| Field | Required | Description |
|---|---|---|
webhook_url | Yes | The Workflows webhook URL. Stored as a secret. |
Management UI setup
- Go to Integrations > Add Integration > Microsoft Teams.
- Paste the
webhook_urland choose the General preset. - Click Save.
Turn on Only send mapped fields (strict_output_contract) for this integration. It is the default for integrations created since the strict contract became the default; an integration created before it, or one set to forward unmapped fields, also sends every property the blueprint did not map, which can include personal data added by identity enrichment (#1557).
API endpoint
Signal POSTs JSON to the webhook URL. There is no other credential.
Event mapping
General preset
| Signal event | Message title | Detail lines | Default |
|---|---|---|---|
purchase | New order | Order ID (transaction_id, else order_id); value and currency (value, else revenue; currency upper-cased) | On |
generate_lead | New lead | Lead type; value and currency | On |
sign_up | New sign-up | Sign-up method; plan | On |
subscription_started | New subscription | Plan; value and currency | Off |
| Every other event, page views included | Dropped |
A missing value shows as -, and the detail text is truncated at 20,000 bytes so the card stays within Teams’ 28 KB message limit. No message carries the visitor’s email, phone, name or address.
Example: purchase
{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{ "type": "TextBlock", "text": "New order", "weight": "Bolder", "size": "Medium" },
{ "type": "TextBlock", "text": "Order: ORD-001\n\nValue: 129.99 GBP", "wrap": true }
]
}
}],
"title": "New order"
}The root title is the event title the delivery spec always adds; the Workflows trigger ignores it.
Splitting events across channels
Create one integration per channel, each with its own Workflows URL, and enable only the events that channel should see.
Identity
Teams cards carry no identity data: no email, phone, name, address or user ID.
Consent
Teams notifications are internal operational alerts. Configure the integration under the functional consent category.
Verify it’s working
Step 1: Trigger a test event
From a page running Datafly.js:
datafly.track("generate_lead", {
lead_type: "Test from Signal"
});Step 2: Check the Teams channel
Within a few seconds, a card titled New lead with Lead type: Test from Signal should appear in the channel.
Step 3: Inspect the Signal event debugger
In the Signal Management UI, open the integration’s Recent Events tab. You should see the event with a 2xx response and the Adaptive Card payload that was posted.
Troubleshooting
| Problem | Solution |
|---|---|
| No card appears, 2xx response | Open the workflow’s run history in the Workflows app: the flow may be off, or its owner may have left (add a co-owner). |
404 or 410 from a webhook.office.com URL | The connector was retired in May 2026. Create a Workflows webhook and update webhook_url. |
| Burst of events causes some to drop | Teams throttles a channel above about 4 requests per second (429). Signal rate-limits below this; split high-volume events across channels. |
| Card shows as raw JSON or not at all after a mapping edit | The workflow expects the attachments[0] Adaptive Card envelope; revert the edited mapping to the preset’s. |
See also
- Microsoft Teams Incoming Webhooks docs
- Retirement of Office 365 connectors within Microsoft Teams
- Adaptive Cards schema
- PagerDuty integration — for paging on-call rotations instead of chat notifications