Slack
The Slack integration posts every share you create as a Block Kit card into a Slack channel: title, page, environment, diagnostics counts, a link to the annotated screenshot, and a View full report button that opens the share page.
It uses Slack Incoming Webhooks — no OAuth, no app review. One webhook URL maps to one channel, so if you want reports in three channels, add three integrations.
Step 1: Create an Incoming Webhook in Slack
Section titled “Step 1: Create an Incoming Webhook in Slack”- Go to api.slack.com/apps → Create New App → From scratch
- Give it a name, pick the target workspace, then click Create App
- In the left sidebar open Incoming Webhooks and toggle Activate Incoming Webhooks on
- Click Add New Webhook to Workspace at the bottom, choose the channel that should receive reports, and allow access
- Copy the generated URL — it looks like
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX
Step 2: Add the integration in BugCapturer
Section titled “Step 2: Add the integration in BugCapturer”- Sign in and open the integrations page
- Pick Slack in the left platform list → Add integration
- Fill in a name and the Incoming Webhook URL from step 1
- Click Verify & save — the backend checks the URL belongs to
hooks.slack.comand posts a test card to your channel - When the card shows up in Slack, the integration is active. Every new share will now post a card to that channel
What the card contains
Section titled “What the card contains”| Element | Content |
|---|---|
| Header | 🐞 [type] first line of the description |
| Page | Title of the page where the report was captured, linked to the sanitized URL |
| Env | Browser · OS · screen resolution |
| Diagnostics | Counts only — Console 2 · Network 0 |
| Screenshot | Link to the annotated screenshot — shown inline when Slack can fetch the image |
| Button | View full report → the share page (with the full error details) |
One webhook URL = one channel
Section titled “One webhook URL = one channel”Slack Incoming Webhooks are channel-scoped by design. If you get reports for several teams, either:
- add one integration per channel, or
- post everything into one channel and let Slack’s own workflows route it further.
The card always appears as your Slack app, with the channel’s name shown normally.
Delivery, retries and failures
Section titled “Delivery, retries and failures”- BugCapturer treats any
2xxresponse as success; Slack returnsokfor accepted messages - Failures are retried twice (5s / 15s backoff) and recorded in the delivery log
- 20 consecutive failures auto-disable the integration and email you
- Common causes of failure: the webhook was revoked in Slack, the app was uninstalled, or the channel was deleted. Click Test after fixing it to resume
Security
Section titled “Security”- The webhook URL is the credential — anyone holding it can post messages into that channel
- BugCapturer therefore never shows it back in full: the card and list only display the last 6 characters
- To replace it, paste the full URL again when editing the integration
- To revoke it, remove the webhook in Slack (the integration then fails and gets auto-disabled after 20 failures)
- Only
https://hooks.slack.com/services/…(andhooks.slack-gov.comfor GovSlack) is accepted
“Official webhook domains only” on save? The URL must be a Slack Incoming Webhook — no other host is accepted, because that URL is a credential and can post into your workspace.
Where is the screenshot? The card always carries a link to the annotated screenshot. Slack fetches and renders the image itself; if it cannot reach our screenshot proxy (a 302 redirect to a signed URL), the card still posts and the link still works.
Can I choose the channel from BugCapturer? Not with Incoming Webhooks. Picking a channel requires a full Slack app with OAuth; it is on the roadmap, not in this release.
Can I get interactive buttons that change state in BugCapturer? Not yet. The button is a plain link to the report, which keeps this integration a thin, low-risk notification layer.
See also: delivery logs and auto-disable.