Webhook-triggered workflow returns 200 but never executes: no run recorded, no message posted
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
**Version:** Buzz Desktop v0.5.2 (AppImage, Linux)
**Deployment:** Block-hosted community (`*.communities.buzz.xyz`)
**Feature:** Workflows (enabled via Settings → Experiments)
## Summary
A workflow with a `webhook` trigger and a single `send_message` step accepts POSTs with `200 OK`, but the run never appears in Run History and no message is posted to the channel.
## Workflow definition
```json
{
"name": "deskcrew3",
"steps": [
{
"action": "send_message",
"channel": "1702c01e-4a14-44ad-853f-31c226695085",
"id": "step_1",
"name": "dess",
"text": "{{trigger.text}}"
}
],
"trigger": {
"on": "webhook"
}
}
```
## Steps to reproduce
1. Enable **Workflows** in Settings → Experiments
2. Create a workflow: trigger `Webhook`, one step `Send Message`, message text `{{trigger.text}}`, and a valid channel UUID in **Channel override**
3. POST to the generated hook URL:
```bash
curl -X POST https://.communities.buzz.xyz/hooks/ \
-H 'content-type: application/json' \
-H 'x-webhook-secret: ' \
-d '{"text":"hello from the webhook"}'
```
**Expected:** message posted to the channel, and a run appears in Run History.
**Actual:** `200 OK` returned. Run History shows "No runs yet". No message appears in the target channel or any other channel.
## Notes
Authentication and routing are clearly being evaluated, so only the valid case fails silently:
| Request | Response |
|---|---|
| No secret | `401 {"error":"authentication failed"}` |
| Deleted/unknown workflow | `404 {"error":"workflow not found"}` |
| Valid secret + valid workflow | `200`, but no run and no message |
- **Channel override is set**, so the "This step will fail for webhook-triggered runs until a channel override is set" warning does not apply.
- Reproduced across several freshly created workflows.
## Question
Does a webhook-triggered `send_message` need additional setup that isn't surfaced in the UI, such as a posting identity for the workflow, or a permission on the target channel?
If so, the failure mode is very hard to debug: a `200` with no run recorded and no error gives an operator nothing to work from. Even a rejected run appearing in Run History with a reason would make this self-diagnosing.
Contributor guide
Assessment
This issue has not been assessed yet.