Context
Issue #1217 covered adding Slack incoming-webhook setup guidance, but it is already closed. QA feedback showed that the current instruction is still not clear enough for at least one user. The user succeeded only after receiving a more explicit, step-by-step explanation of the Slack-side setup flow.
Create a new follow-up task to replace the current Slack setup description with the approved detailed instruction below.
This is a documentation/UI-copy task only. Slack delivery behavior does not need to change.
Goals / Proposed scope
- Replace the existing Slack incoming-webhook help text in
src/server/HSMServer/Views/Notifications/EditSlackDestination.cshtml.
- Explain in simple words what a Slack incoming webhook is and why HSM needs the generated URL.
- Use the modern Slack app flow:
api.slack.com/apps -> Create New App -> From scratch -> Incoming Webhooks -> Activate Incoming Webhooks -> Add New Webhook to Workspace.
- Keep the app name example as
my space.
- Explicitly state that the target Slack channel must already exist before selecting it for the webhook.
- Preserve the rule that one webhook is connected to one Slack channel, so multiple channels require multiple Slack destinations in HSM.
- Keep the Razor/HTML markup clean and aligned.
- Update the relevant
aicontext/features/server/notifications/feature.md documentation after changing the view.
Approved UI copy
Use this text as the source copy for the help block. Minor wording adjustments are acceptable only if they improve the in-app layout without removing any step.
How to create a Slack Incoming Webhook
A Slack incoming webhook is a private URL that lets HSM send alert messages to one selected Slack channel. First create this URL in Slack, then paste it into the Webhook URL field in HSM.
- You need Slack workspace admin permissions, or permission to install apps.
- Open
api.slack.com/apps.
- Click
Create New App.
- Choose
From scratch.
- Enter an app name, for example
my space.
- Select the Slack workspace where alerts should be sent.
- Click
Create App.
- In the left menu, open
Incoming Webhooks under Features.
- Turn on
Activate Incoming Webhooks. The switch should change from Off to On.
- Click
Add New Webhook to Workspace at the bottom of the page.
- Slack will ask which channel should receive messages. Select the channel. The channel must already exist in Slack before this step.
- Click
Allow.
- Slack will generate a URL like
https://hooks.slack.com/services/....
- Copy this URL.
- Paste it into the
Webhook URL field in HSM.
- Save the Slack destination.
- In HSM, use
Send test message to confirm that Slack receives the message.
Important: one webhook is connected to one Slack channel. To send alerts to multiple channels, create one Slack destination per channel.
Tasks
Markup / alignment notes
When implementing the help block, keep the Razor/HTML markup clean and consistently aligned. During an earlier draft, QA noticed formatting issues that should be avoided in the final change:
- the
<div id="slackWebhookHelp" class="collapse"> line was shifted by one extra leading space compared with the surrounding form markup;
- one closing
</li> around the Add New Webhook to Workspace step was misaligned.
The final markup should keep the collapse block, card body, paragraph, ordered list, and list items nested consistently. No malformed tags, visibly broken indentation, or UI alignment regressions should be introduced.
Acceptance criteria
- A user can follow the in-app instruction from a blank Slack app setup to a generated webhook URL without needing an additional explanation.
- The help text includes all required Slack steps: create app, choose
From scratch, app name example my space, select workspace, open Incoming Webhooks, activate incoming webhooks, add webhook to workspace, select an already existing Slack channel, click Allow, copy the generated URL, paste it into HSM, save, and send a test message.
- The instruction clearly states that the target Slack channel must already exist before the webhook is connected to it.
- The instruction clearly states that one webhook belongs to one Slack channel.
- The Slack destination form still renders correctly in both Add and Edit states.
- The Razor/HTML indentation is clean and the collapse help block does not visually break the form layout.
- Relevant
aicontext documentation is updated.
Out of scope
- Changing Slack payload format.
- Adding OAuth-based Slack app installation from HSM.
- Adding channel override support in HSM.
- Changing backend Slack delivery behavior.
References
Context
Issue #1217 covered adding Slack incoming-webhook setup guidance, but it is already closed. QA feedback showed that the current instruction is still not clear enough for at least one user. The user succeeded only after receiving a more explicit, step-by-step explanation of the Slack-side setup flow.
Create a new follow-up task to replace the current Slack setup description with the approved detailed instruction below.
This is a documentation/UI-copy task only. Slack delivery behavior does not need to change.
Goals / Proposed scope
src/server/HSMServer/Views/Notifications/EditSlackDestination.cshtml.api.slack.com/apps->Create New App->From scratch->Incoming Webhooks->Activate Incoming Webhooks->Add New Webhook to Workspace.my space.aicontext/features/server/notifications/feature.mddocumentation after changing the view.Approved UI copy
Use this text as the source copy for the help block. Minor wording adjustments are acceptable only if they improve the in-app layout without removing any step.
How to create a Slack Incoming Webhook
A Slack incoming webhook is a private URL that lets HSM send alert messages to one selected Slack channel. First create this URL in Slack, then paste it into the Webhook URL field in HSM.
api.slack.com/apps.Create New App.From scratch.my space.Create App.Incoming WebhooksunderFeatures.Activate Incoming Webhooks. The switch should change from Off to On.Add New Webhook to Workspaceat the bottom of the page.Allow.https://hooks.slack.com/services/....Webhook URLfield in HSM.Send test messageto confirm that Slack receives the message.Important: one webhook is connected to one Slack channel. To send alerts to multiple channels, create one Slack destination per channel.
Tasks
src/server/HSMServer/Views/Notifications/EditSlackDestination.cshtml.Webhook URLplaceholder/example URL shape, but avoid duplicating the full instruction outside the help block.Send test messagewording matches the existing UI action in the Slack destinations list.aicontext/features/server/notifications/feature.mdto mention the expanded Slack incoming-webhook setup guide.Markup / alignment notes
When implementing the help block, keep the Razor/HTML markup clean and consistently aligned. During an earlier draft, QA noticed formatting issues that should be avoided in the final change:
<div id="slackWebhookHelp" class="collapse">line was shifted by one extra leading space compared with the surrounding form markup;</li>around theAdd New Webhook to Workspacestep was misaligned.The final markup should keep the collapse block, card body, paragraph, ordered list, and list items nested consistently. No malformed tags, visibly broken indentation, or UI alignment regressions should be introduced.
Acceptance criteria
From scratch, app name examplemy space, select workspace, openIncoming Webhooks, activate incoming webhooks, add webhook to workspace, select an already existing Slack channel, clickAllow, copy the generated URL, paste it into HSM, save, and send a test message.aicontextdocumentation is updated.Out of scope
References
src/server/HSMServer/Views/Notifications/EditSlackDestination.cshtmlaicontext/features/server/notifications/feature.md