Skip to content

Setting Up Webhooks

Webhooks let your trading group post automated updates to Slack, Discord, or any custom endpoint whenever something happens in the group.

Create a webhook

Open your group’s Webhooks page (owners and managers only), click New Webhook, give it a name, and paste the destination URL.

Choose which events to send

Pick one or more events to trigger the webhook:

  • Post Created / Post Deleted — message-board activity
  • Member Joined / Member Left — membership changes
  • Trade Shared — a member shares trades
  • Event Created — a new event is scheduled
  • Offer Created — a new offer is published

A single webhook can subscribe to several events, or create separate webhooks for different destinations.

Post to Slack

Paste a Slack incoming-webhook URL (it starts with hooks.slack.com) and Katalyst posts a formatted message to your channel automatically — no secret required.

➡️ Step-by-step Slack setup

Post to Discord

Paste a Discord webhook URL (it contains discord.com/api/webhooks) and Katalyst posts a rich embed in Discord’s native format — no secret required, and no need to append /slack.

➡️ Step-by-step Discord setup

Custom endpoints

A non-Slack/Discord URL receives a structured JSON payload signed with an HMAC-SHA256 signature in the X-Katalyst-Signature header, using a secret shown once when you create the webhook. Verify a delivery by recomputing the HMAC of the raw request body with your secret and comparing it to the header.

Reliability

Failed deliveries are retried up to three times with exponential backoff and logged on the Webhooks page with the HTTP status. A webhook that fails repeatedly is paused automatically — re-enable it from the Webhooks page once you’ve fixed the cause.

Troubleshooting

  • Nothing arrives — confirm the URL is correct and publicly reachable, and that it responds with a 2xx within 10 seconds.
  • Signature errors (custom endpoints) — verify the secret and compute the HMAC over the raw request body, not a re-serialized copy.
  • Webhook disabled — fix the underlying failure, then toggle it back to active on the Webhooks page.