Microsoft Teams
Create tasks from Teams outgoing-webhook commands and route them by Teams sender.
1. Create the Denly connection
This comes first: the Teams outgoing webhook needs a callback URL, and Denly only generates that once the connection exists.
Open Workspace → Integrations → Connect → Microsoft Teams. Fill in the team or conversation ID, the Workflow webhook URL Denly posts its cards to, the command alias, and the project scope. Leave Teams outgoing-webhook secret blank for now – Teams has not generated it yet.
Routing is optional. Leave Default Denly assignee blank for unassigned tasks, or choose one workspace member to own everything from this connection.
For per-person routing use Route by external assignee: each row pairs one person in the provider (left) with a workspace member (right), and + adds another row. Routing follows the item's assignee in the provider, not whoever created it, and a matching row beats the default above.
The left-hand value must be the identifier the provider actually sends, which the field's placeholder names for you. Matching ignores surrounding spaces and letter case, but nothing else: a near-miss routes nothing and looks the same as a broken integration.
Save, then copy the generated Webhook URL.
2. Create the Teams outgoing webhook
Add an outgoing webhook to the target team, name it Denly, and set its callback URL to the Denly URL you just copied. Teams generates a base64 security token and shows it once.
Return to Workspace → Integrations → Microsoft Teams → Edit and paste it into Teams outgoing-webhook secret. Teams signs every request with it, so nothing arrives until this is stored – the secret Denly generated is unused here. Read Teams outgoing webhooks.
3. Send the command
Mention the outgoing webhook with /denly followed by the task text. Teams signs requests as Authorization: HMAC <base64-signature>. Denly must be publicly reachable over HTTPS.
4. Test and troubleshoot
Processed means Denly created the task and answered Teams; Skipped means the command, conversation or project mapping did not match. An empty list means the base64 Teams secret is wrong, so no request from Teams ever verifies.
Denly