How to send website events to Slack, Discord, or Zapier
Register an HTTPS endpoint, pick the events you want, and confirm the Slack message or signed JSON arrives.
The dashboard stores the message. Email can tell you it arrived. Slack and Zapier stay quiet until you send the event out.
Sitebase outbound webhooks do that. You paste an HTTPS URL on the site. Sitebase POSTs when a form is submitted, a quote arrives, or a monitor goes down.
Sitebase is in private beta. Public signup isn’t open. These steps are for accounts with access.
Pick one destination
Start with one receiver. A Slack incoming webhook is the fastest to check. A Zapier Catch Hook or a Make custom webhook is the path into another app. Any other HTTPS URL gets signed JSON.
There is no Sitebase app inside Slack or Zapier. You create the URL there. Then you paste it here.
Slack URLs live on hooks.slack.com. Discord URLs live on discord.com or discordapp.com. Sitebase reads the host and formats the body. Everything else is JSON.
The URL must use https. An http URL is rejected.
Add it under Config
Open the website in Sitebase. Open Config in the sidebar. The Webhooks card is on that page.
Paste the URL in Endpoint URL. Leave every Events box checked for this first one. Click Add webhook.
A valid URL shows “Webhook settings saved.” A malformed URL shows “That doesn’t look like a valid URL.” An http URL shows “Webhook URLs must use https.”
The card then lists the URL with a JSON, Slack, or Discord label, plus Pause and Delete. You cannot edit the URL or the event list later. Delete it and add it again.
Pause stops delivery. Resume starts it again. You can add several endpoints. Each one gets its own POST.
Choose the events
The boxes are, in this order:
- Contact message
- Form submission
- Newsletter subscriber
- Waiting list signup
- Lead magnet signup
- Testimonial received
- Job application
- Uptime incident opened
- Uptime incident resolved
All checked, or none checked, is stored as All events. New event types later are included. A smaller set stays that smaller set.
These fire when the visitor submits, not when you approve something in the dashboard. A testimonial webhook fires while the quote is still waiting. A newsletter webhook fires even if the subscriber is still pending a confirmation email. Confirming that email does not send a second webhook. A repeat signup with the same email still fires one.
Uptime open and recover fire even when incident emails are off. The email toggles on Config do not filter webhooks.
Pageviews and clicks you send with sitebase.track stay on the Events page. They do not hit these endpoints.
Read the body you will get
A Slack URL receives { "text": "..." }. A Discord URL receives { "content": "..." }. Both carry the title, the site domain, and the detail line. There are no Slack blocks and no Discord embeds.
A JSON URL receives a body like this, from a contact form on flaviocopes.com:
{
"event": "contact_message",
"created_at": "2026-10-17T09:14:22.000Z",
"website": { "domain": "flaviocopes.com" },
"feature": { "id": "wgt_…", "type": "contact_form", "name": "Contact form" },
"data": {
"name": "Maya Chen",
"email": "maya@maya.studio",
"message": "Can we talk about the workshop?"
},
"title": "New contact message on flaviocopes.com",
"detail": "maya@maya.studio sent a message through Contact form.\n\nCan we talk about the workshop?"
}
data is the submitted fields. File uploads arrive as { id, filename, size, contentType }, not the file bytes. The honeypot field, the Turnstile token, and sourceUrl are stripped.
Every POST sets Content-Type: application/json, User-Agent: Sitebase-Webhooks/1.0, X-Sitebase-Event, X-Sitebase-Timestamp (unix seconds), and X-Sitebase-Signature. The signature is sha256= plus the hex HMAC-SHA256 of timestamp.body, using the endpoint secret.
JSON endpoints show that whsec_… secret on the card. Slack and Discord cards hide it. Those products do not verify this signature.
Confirm one real delivery
You need a live feature that can fire the event. A contact form is the easiest first check. Follow the static contact form guide if that page is not up yet.
Publish the site. Submit from the public URL in a fresh window.
Open Config again. Look for Last delivery. It shows an HTTP status and a time once an attempt finished without a retry. HTTP 5xx, 429, and network errors wait 60 seconds and retry, up to 3 times. The request times out at 10 seconds. Other completed statuses are stored and not retried.
There is no Send test button and no delivery log beyond that last status.
If Slack is the destination, look in the channel. You should see the title and the domain. If Zapier is the destination, the Catch Hook should show contact_message.
A paused endpoint sends nothing. A subset that excludes Contact message also sends nothing for this test. The POST leaves from Sitebase, not from the visitor’s browser. A content blocker on your machine does not stop it.
A failed delivery does not fail the visitor’s submit. The message is still in Data.
Email is a separate path, documented under notifications. Status incidents are covered in the public status page guide. Clicks you track yourself belong in the events guide.