Use Settings to configure delivery, Routing to select events, Logs to inspect delivery history, and Help for this guide. Routing requires Tier 1; Tier 2 adds request rules. Log visibility, payload previews, and deletion can be delegated separately with Tier 2 role permissions.
Send signals to Microsoft Teams when workflow cards should notify your team.
Microsoft Teams is a premium SignalPress service. The active license must include service_teams or *.
Hub service ID: teams. Index: Integrations Overview. Target from PHP: Service Targeting.
Get the Workflow webhook URL
Microsoft is replacing the older Office 365 connector model with Teams Workflows. SignalPress uses the current Workflow webhook approach and does not require an Azure application, Microsoft Graph credentials, OAuth, or a Teams bot.
- Open the destination chat or channel in Microsoft Teams.
- Open the channel's More options (⋯) menu, choose Workflows, and select the incoming-webhook template. You can also open the Workflows app and create a flow with the When a Teams webhook request is received trigger.
- For the easiest SignalPress setup, choose Anyone for trigger authentication. Authentication modes that require a Microsoft bearer token are not supported by this version of the integration.
- Select the team, channel, or chat that should receive the message. If you created the flow manually, add Post card in a chat or channel and pass it the Adaptive Card received by the trigger.
- Save or create the workflow. Teams displays the generated webhook URL on the confirmation screen; use its copy button before closing the dialog.
- If you already closed that screen, open Workflows → Manage, edit the workflow, expand When a Teams webhook request is received, and copy the HTTP POST URL shown by the trigger. Microsoft may label this value HTTP POST URL rather than “webhook URL.”
- Activate Microsoft Teams under SignalPress → Integrations.
- Paste the complete URL into Workflow Webhook URL, set Minimum Level and Signal payload, enable the service, and save.
- Send a test signal and confirm the card appears in Teams. Microsoft may accept the request shortly before the card becomes visible.
Settings
| Field | Purpose |
|---|---|
| Workflow Webhook URL | HTTP POST URL from the Teams Workflow trigger (secret). |
| Minimum Level | Service-level gate inside delivery. Default: warning. |
| Signal payload | Include redacted JSON in the Adaptive Card. Default: on. |
Delivery thresholds
SignalPress applies two independent level checks:
- Routing → Routing Minimum Level (Tier 1+) — filters events before they are offered to Teams.
- Settings → Minimum Level — final gate inside the Teams service.
An event must pass both before SignalPress sends the signal.
Add at least one co-owner in Microsoft Power Automate so the integration does not become orphaned if its original owner leaves. Treat the webhook URL as a secret: do not publish it, commit it, or place it in an event payload.
- [Create incoming webhooks with Teams Workflows](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook)
- [Teams webhook trigger reference](https://learn.microsoft.com/en-us/connectors/teams/#when-a-teams-webhook-request-is-received)
Send a signal to Teams
PHP
sp_capture( 'backup_failed', [ 'message' => 'The nightly backup failed.', 'level' => 'error', ], [ 'source' => 'backup-worker', 'services' => [ 'teams' ], ] );
Recognized levels are debug, info, warning, error, and critical. Missing or invalid levels are informational. SignalPress sends an Adaptive Card containing project, environment, source, level, timestamp, and an optional redacted JSON payload. Large payloads are truncated to keep the complete request safely below Microsoft Teams' message-size limit.
The signalpress/teams/payload filter can adjust the final Workflow request body with Tier 1 or higher.
Troubleshooting
- A successful SignalPress test means the Workflow returned a successful HTTP response. Confirm the final card in Teams because the Workflow action can still fail after accepting the webhook.
- Confirm the Workflow is enabled and its owner still has access to the destination.
- Confirm the Workflow posts the incoming Adaptive Card rather than treating the request as plain text.
- HTTP
401or403usually indicates that the trigger requires Microsoft authentication. Recreate it with Anyone access for this integration. - HTTP
429indicates throttling. Reduce large bursts; SignalPress's Tier 2 delivery queue can smooth background delivery, while the Workflow remains subject to Microsoft's request limits. - Some Microsoft 365 administrators disable Workflows or restrict webhook triggers. The tenant administrator may need to allow the Workflows app and its Teams connector.
What to read next
- Integrations Overview — browse and activate services
- Your First Connection Test — send a test signal and read the log
- Advanced Event Routing — per-service event filters
- Connection Tests and Delivery Log — interpret delivery results
- Service Targeting — limit destinations from PHP