Quick Setup
Get dread running in under a minute.
1. Install dread
curl -fsSL https://dread.sh/install | sh2. Create a channel
A channel is where webhooks get sent. Create one for each service (e.g. Stripe, GitHub):
dread new "Stripe Prod"This prints your webhook URL. This is the URL you paste into other services:
https://dread.sh/wh/ch_stripe-prod_a1b2c3Every channel gets its own unique URL. Copy it — you'll paste it in the next step.
3. Paste the URL into your service
Go to whatever service you want to monitor (Stripe, GitHub, Vercel, etc.), find its webhook settings, and paste the URL from step 2. Each guide below shows you exactly where.
4. Start watching
dreadYour First Webhook
Don't have a service ready yet? Send a test event to make sure everything works:
dread test ch_stripe-prod_a1b2c3Or send a real HTTP request from anywhere:
curl -X POST https://dread.sh/wh/ch_stripe-prod_a1b2c3 \
-H "Content-Type: application/json" \
-d '{"event":"test","message":"Hello from curl"}'Customise Channel Name, Source & Summary
Change the channel name
The channel name is set when you create it with dread new. To rename it, remove and re-add with the new name:
dread remove ch_old-name_abc123
dread add ch_old-name_abc123 "New Display Name"The channel ID and webhook URL stay the same — only the display name changes in the TUI, notifications, and dashboard.
Change the source label
dread auto-detects the source from HTTP headers (Stripe-Signature, X-GitHub-Event, etc.). For services that aren't auto-detected, add ?source=name to your webhook URL:
https://dread.sh/wh/ch_xxx?source=trigger.devJust paste the URL with ?source= into your service's webhook settings — no custom headers needed. You can also use the X-Dread-Source header for programmatic control.
The source label controls how events are grouped in the dashboard and which colour appears in the TUI. Auto-detected sources (stripe, github, vercel, sentry, etc.) always take priority.
Change the summary text
The summary is extracted automatically from known payload formats. For custom services, dread looks for these JSON fields in order:
type,event,event_type,action,topic— used as the event typemessage,description,summary,text,status— used as the summary text
To control what appears in notifications, structure your JSON payload with these fields:
curl -X POST "https://dread.sh/wh/ch_xxx?source=deploy-bot" \
-H "Content-Type: application/json" \
-d '{"type":"deploy.success","message":"v2.1.0 deployed to production"}'Stripe
- Open Stripe Dashboard → click Developers in the top nav
- Select Webhooks from the submenu
- Click Create an event destination
- Select Account as the event source, then choose Webhook endpoint
- Paste your dread webhook URL in Endpoint URL
- Select the events you want (e.g.
payment_intent.succeeded,charge.failed) or choose all events for testing - Click Add endpoint
PayPal
- Log in to developer.paypal.com/dashboard
- Go to Apps & Credentials and select your app (or create one)
- Open the Webhooks section
- Click Add Webhook
- Paste your dread webhook URL (must be HTTPS)
- Select event types (e.g.
PAYMENT.CAPTURE.COMPLETED,BILLING.SUBSCRIPTION.ACTIVATED) - Click Save
Paddle
- Open Paddle Dashboard → Developer Tools → Notifications
- Click + New destination
- Select Webhook as the type
- Paste your dread webhook URL
- Select events (subscriptions, transactions, customers, adjustments)
- Click Save destination
Shopify
- Open Shopify Admin → Settings (bottom left) → Notifications
- Scroll down to Webhooks and click Create webhook
- Select an event topic from the dropdown (e.g.
orders/create) - Set format to JSON
- Paste your dread webhook URL
- Click Save
Note: you can't change the event topic after creation — create a new webhook for each topic you need.
Square
- Log in to developer.squareup.com → open your application
- Click Webhooks in the left sidebar
- Click Add subscription
- Enter a name for the subscription
- Paste your dread webhook URL in the URL field
- Select event types:
payment.completed,order.created,refund.created,invoice.published, etc. - Click Save
Use the Send test event button to verify. Square signs all webhooks with a signature in the x-square-hmacsha256-signature header.
Razorpay
- Log in to the Razorpay Dashboard
- Go to Account & Settings → Webhooks
- Click Add New Webhook
- Paste your dread webhook URL
- Enter a Secret (used to verify webhook signatures)
- Select events:
payment.captured,payment.failed,order.paid,subscription.activated,refund.processed, etc. - Click Create Webhook
Razorpay sends events in both test and live modes. Toggle between modes in the dashboard to configure webhooks for each.
Recurly
- Log in to the Recurly Dashboard
- Go to Integrations → Webhooks
- Click Configure
- Click New Endpoint
- Paste your dread webhook URL
- Select notification types:
new_subscription,successful_payment,failed_payment,canceled_subscription, etc. - Click Save
Recurly sends XML payloads by default. dread will detect the source via the X-Recurly-Notification-Type header.
Chargebee
- Log in to Chargebee → go to Settings → Configure Chargebee
- Select Webhooks under API & Webhooks
- Click Add Webhook
- Paste your dread webhook URL
- Select V2 API version
- Choose event types:
subscription_created,payment_succeeded,payment_failed,invoice_generated, etc. - Click Create
Use the Test Webhook button to send a sample event. Chargebee retries failed deliveries automatically.
Coinbase Commerce
- Log in to commerce.coinbase.com
- Go to Settings → Webhook subscriptions
- Click Add an endpoint
- Paste your dread webhook URL
- Click Save
- Copy the Shared Secret displayed (used for signature verification)
Coinbase Commerce sends events for charges: charge:created, charge:confirmed, charge:failed, charge:pending, charge:resolved.
LemonSqueezy
- Log in to app.lemonsqueezy.com
- Go to Settings → Webhooks
- Click Add webhook (the + button)
- Paste your dread webhook URL in the Callback URL field
- Enter a Signing secret
- Select events:
order_created,subscription_created,subscription_payment_success,license_key_created, etc. - Click Save webhook
LemonSqueezy signs payloads with HMAC-SHA256 using the signing secret in the X-Signature header.
GitHub
- Go to your repository → Settings tab → Webhooks in the left sidebar
- Click Add webhook
- Paste your dread webhook URL in Payload URL
- Set Content type to
application/json - Under "Which events would you like to trigger this webhook?" select Let me select individual events and check the ones you want, or choose Send me everything
- Make sure Active is checked and click Add webhook
GitHub sends a ping event to confirm the setup.
GitLab
- Go to your project → Settings → Webhooks
- Click Add new webhook
- Paste your dread webhook URL in the URL field
- Select trigger events: Push events, Merge request events, Issues events, Pipeline events, etc.
- Click Add webhook
Requires Maintainer or Owner role. Use the Test dropdown to send a test event.
Vercel
Requires Pro or Enterprise plan. Webhooks are configured at the team level, not per project.
- Go to your Team Settings → Webhooks
- Click Create Webhook
- Select events: Deployment (created, succeeded, error), Project (created, removed), etc.
- Choose target projects (all or specific ones)
- Paste your dread webhook URL
- Click Create Webhook and copy the secret key shown (it's only displayed once)
Sentry
- Go to Settings → Developer Settings
- Click Create New Integration → select Internal Integration
- Enter a name for the integration
- Paste your dread webhook URL in the Webhook URL field
- Set Permissions: Issue & Event to Read
- Under Webhooks, check: Issue, Error, and any other events you want
- Click Save Changes — the integration installs automatically on your org
Linear
- Click your profile icon → Settings
- Go to API (under Administration)
- Click New webhook
- Paste your dread webhook URL (must be publicly accessible HTTPS)
- Add a label and select resources: Issues, Comments, Projects, Cycles, etc.
- Save the webhook
Only workspace admins can create webhooks.
Jira
Requires the Administer Jira global permission.
- Click the gear icon → System
- Go to Advanced → WebHooks
- Click Create a WebHook
- Enter a name and paste your dread webhook URL
- Select events (e.g.
jira:issue_created,jira:issue_updated,comment_created) - Optionally add a JQL filter to limit which issues trigger the webhook (e.g.
project = PROD) - Click Save
Bitbucket
- Open your repository in Bitbucket
- Go to Repository settings → Webhooks
- Click Add webhook
- Enter a title and paste your dread webhook URL
- Under Triggers, select events: push, pull request (created, updated, merged, declined), issue events, etc.
- Click Save
Bitbucket sends a unique X-Hook-UUID header with each delivery. Use View requests on the webhook to see delivery history.
CircleCI
- Open your project in CircleCI
- Go to Project Settings → Webhooks
- Click Add Webhook
- Enter a name for the webhook
- Paste your dread webhook URL in the Receiver URL field
- Select events:
workflow-completedand/orjob-completed - Click Save
CircleCI includes a circleci-signature header for verification. Payloads include pipeline, workflow, and job details.
Buildkite
- Go to your Organisation Settings → Notification Services
- Click Add next to Webhook
- Paste your dread webhook URL
- Select events:
build.scheduled,build.running,build.finished,job.started,agent.connected, etc. - Optionally filter by pipeline
- Click Add Webhook Notification
Buildkite sends a X-Buildkite-Event header with every delivery. Use the Send test button to verify.
Netlify
- Open your site in Netlify
- Go to Site configuration → Notifications
- Click Add notification → Outgoing webhook
- Select an event:
Deploy started,Deploy succeeded,Deploy failed,Form submission, etc. - Paste your dread webhook URL
- Click Save
Note: Netlify creates one notification per event type. Repeat the steps for each event you want to receive.
AWS SNS
- Open the SNS console → Topics → Create topic
- Choose Standard, enter a name, and click Create topic
- Select your topic, then click Create subscription
- Set Protocol to HTTPS
- Paste your dread webhook URL as the endpoint
- Click Create subscription
- dread will receive a
SubscriptionConfirmationmessage — the subscription auto-confirms when dread responds with 200
Check the SNS console Subscriptions page — status should change from PendingConfirmation to Confirmed.
PagerDuty
- Go to Integrations → Generic Webhooks (v3)
- Click New Webhook
- Paste your dread webhook URL
- Select event subscriptions: incident events (triggered, acknowledged, resolved, escalated) and/or service events
- Optionally add a description and custom headers
- Click Add Webhook and save the generated webhook secret
Requires Manager, Admin, or Account Owner role. Max 10 webhook subscriptions per scope.
Supabase
Supabase Database Webhooks fire when rows are inserted, updated, or deleted in your tables.
- Open your project in the Supabase Dashboard
- Go to Database → Webhooks in the sidebar
- Click Create a new hook
- Name your hook (e.g.
new-booking) and select the table to watch - Tick the events to fire on: Insert, Update, and/or Delete
- Under Hook type, select HTTP Request
- Set Method to POST and paste your dread webhook URL
- Add the header
Content-Type: application/json - Click Create webhook
The payload includes the type (INSERT/UPDATE/DELETE), the table name, record (new row data), and old_record (previous row data for updates/deletes).
X-Supabase-Event-Signature header and show the table name and operation type.Grafana
- Open Grafana → go to Alerting → Contact points
- Click Add contact point
- Enter a name and select Webhook as the integration type
- Paste your dread webhook URL
- Set HTTP method to POST
- Optionally add a
usernameandpasswordfor basic auth - Click Save contact point
- Go to Notification policies and route alerts to your new contact point
Grafana sends alerts with labels, annotations, and the alert state (firing or resolved).
Datadog
- Log in to Datadog
- Go to Integrations → Webhooks
- Click New (or + New)
- Enter a name for the webhook
- Paste your dread webhook URL
- Optionally customise the Payload JSON template using Datadog variables (
$EVENT_TITLE,$ALERT_STATUS, etc.) - Click Save
- Use the webhook in monitor notifications by adding
@webhook-your-nameto the alert message
The webhook only fires when referenced in a monitor — it won't send events on its own.
Cloudflare
- Log in to the Cloudflare Dashboard
- Go to Notifications in the left sidebar
- Click the Destinations tab
- Under Webhooks, click Create
- Enter a name and paste your dread webhook URL
- Click Save and Test — Cloudflare sends a verification request
- Go to the Notifications tab and create a notification
- Select an alert type (e.g.
Origin Error Rate Alert,DDoS Attack Alert,SSL Certificate Expiration) - Choose the webhook as the delivery destination
- Click Save
Heroku
Heroku uses the app-webhooks add-on for webhook notifications.
- Install the CLI plugin:
heroku plugins:install @heroku-cli/plugin-webhooks - Create a webhook:
heroku webhooks:add \
--app your-app-name \
--url https://dread.sh/wh/ch_xxx \
--include api:release api:build api:dyno \
--level notify- Verify with
heroku webhooks --app your-app-name
Events include api:release, api:build, api:dyno, api:formation, and api:addon. Set --level sync for guaranteed delivery (slower) or --level notify for best-effort (faster).
Pingdom
- Log in to my.pingdom.com
- Go to Settings → Integrations
- Click Add integration
- Select Webhook as the type
- Enter a name and paste your dread webhook URL
- Click Save integration
- Go to Monitoring → select a check → Edit
- Under Connect integrations, select your webhook
- Click Save
Pingdom sends alerts when checks go up or down, including the check name, status, and response time.
UptimeRobot
- Log in to uptimerobot.com
- Go to My Settings (top right)
- Scroll to Alert Contacts and click Add Alert Contact
- Select Webhook as the alert contact type
- Paste your dread webhook URL
- Select POST as the method
- Optionally enable Send as JSON (recommended)
- Click Create Alert Contact
- Go to your monitor and add the new alert contact under Alert Contacts To Notify
New Relic
- Log in to New Relic
- Go to Alerts & AI → Destinations
- Click Add a destination → select Webhook
- Enter a name and paste your dread webhook URL
- Click Save destination
- Go to Workflows → Add a workflow
- Set your filter (e.g. policy name, priority, condition)
- Under Notify, select Webhook and choose your destination
- Customise the payload template if needed
- Click Activate workflow
New Relic sends alert notifications with issue details, condition name, and violation details.
Slack (as event source)
This receives events from Slack into dread. (For forwarding dread events to Slack, see Docs → Slack/Discord Forwarding.)
- Go to api.slack.com/apps → Create New App → From scratch
- Name your app and select your workspace
- In the sidebar, click Event Subscriptions and toggle it on
- Paste your dread webhook URL in Request URL — Slack sends a verification challenge that dread handles automatically
- Under Subscribe to bot events, add events like
message.channels,app_mention, etc. - Go to OAuth & Permissions and add the required scopes
- Click Install App to install to your workspace
Discord (as event source)
This receives interactions from Discord into dread.
- Go to discord.com/developers/applications → New Application
- Navigate to the General Information tab
- Paste your dread webhook URL in Interactions Endpoint URL
- Click Save Changes — Discord will send test PING requests to verify your endpoint
Your endpoint must handle the PING verification (dread does this automatically). Discord sends all interactions (slash commands, buttons) as HTTP POST requests.
Twilio
- Log in to console.twilio.com
- Go to Phone Numbers → Active Numbers
- Click on the phone number you want to configure
- Scroll to the Messaging section
- Under "A Message Comes In", select Webhook
- Paste your dread webhook URL and set the method to POST
- Click Save
For Messaging Services: go to Messaging Services → select your service → Integration tab → enter the Inbound Request URL.
SendGrid
- Log in to SendGrid → go to Settings → Mail Settings
- Select Event Webhooks
- Click Create new webhook
- Paste your dread webhook URL in the Post URL field
- Select event types: processed, delivered, bounced, open, click, spam report, etc.
- Toggle Enabled on
- Click Save
Use Test Your Integration to send a sample payload and verify.
Mailchimp
- Log in to Mailchimp
- Go to your Audience → Settings → Webhooks
- Click Create New Webhook
- Paste your dread webhook URL in the Callback URL field
- Select events:
subscribes,unsubscribes,profile updates,cleaned,email changed,campaign sent - Choose whether to fire for API-initiated changes, admin changes, or subscriber-initiated changes
- Click Save
Mailchimp sends form-encoded POST data (not JSON). dread handles both formats automatically.
Zendesk
Requires Admin access. Zendesk uses Webhooks (destination) paired with Triggers (rules) to send events.
- Go to Admin Centre → Apps and integrations → Webhooks
- Click Create webhook
- Select Trigger or automation as the connection method
- Enter a name and paste your dread webhook URL
- Set request method to POST and format to JSON
- Click Create webhook
- Go to Business rules → Triggers → Add trigger
- Set conditions (e.g. ticket created, status changed)
- Under Actions, select Notify webhook and choose your webhook
- Define the JSON body using placeholders (
{{ticket.id}},{{ticket.title}})
Intercom
- Log in to Intercom
- Go to Settings → Integrations → Developer Hub
- Select your app (or create one) → click Webhooks
- Paste your dread webhook URL in the Webhook URL field
- Select topics:
conversation.created,conversation.user.replied,contact.created,ticket.created, etc. - Click Save
Intercom signs webhooks with HMAC-SHA1 using your app's client secret. The signature is in the X-Hub-Signature header.
Postmark
- Log in to account.postmarkapp.com
- Select your Server → go to Settings → Webhooks
- Click Add webhook
- Paste your dread webhook URL
- Select message events:
Delivery,Bounce,Spam Complaint,Open,Click,Subscription Change - Optionally enable Include message content
- Click Save webhook
Use the Send test button on each event type to verify delivery. Postmark sends a X-Postmark-Webhooks-Auth header if you set an HTTP Auth username/password.
Mailgun
- Log in to app.mailgun.com
- Go to Sending → Webhooks
- Select your domain from the dropdown
- Click on an event type:
Delivered,Opened,Clicked,Bounced,Complained,Unsubscribed, orFailed - Paste your dread webhook URL and click Create webhook
- Repeat for each event type you want
Mailgun signs webhooks using your domain's API key. The signature is in the POST body as signature.token, signature.timestamp, and signature.signature.
Telegram
Telegram uses Bot API webhooks to push updates to your URL instead of polling.
- Create a bot via @BotFather on Telegram and note the bot token
- Set the webhook URL using the Telegram API:
curl -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/setWebhook" \
-d "url=https://dread.sh/wh/ch_xxx"- Verify the webhook is set:
curl "https://api.telegram.org/botYOUR_BOT_TOKEN/getWebhookInfo"Telegram sends updates for messages, edited messages, channel posts, callback queries, and inline queries.
HubSpot
Requires a HubSpot developer account and a registered app.
- Log in to your HubSpot developer account
- Go to your app dashboard and select your app (or create one)
- Click Webhooks in the left sidebar
- Enter your dread webhook URL as the Target URL
- Click Create subscription
- Select the Object type (Contacts, Companies, Deals, Tickets)
- Select event types (creation, deletion, property changes)
- Click Subscribe — subscriptions start paused
- Hover over the subscription, check it, and click Activate
Typeform
- Open your form in Typeform
- Click Connect in the top menu
- Click the Webhooks tab
- Click Add a webhook
- Paste your dread webhook URL
- Toggle the webhook ON (off by default)
- Optionally click Edit to add a secret for signature verification
Use View deliveries → Send test request to verify.
Clerk
Clerk uses Svix for webhook delivery.
- Log in to your Clerk Dashboard
- Go to Webhooks in the left sidebar
- Click Add Endpoint
- Paste your dread webhook URL
- Select events to receive:
user.created,user.updated,user.deleted, organization events, session events, etc. (or leave unselected for all) - Click Create
- Copy the Webhook Signing Secret from the endpoint settings page
Use the Testing tab on your endpoint page to send example events.
Svix-Id header and show as svix events with the event type.Twitch EventSub
Twitch EventSub requires API calls to create subscriptions (no dashboard UI).
- Register an app at dev.twitch.tv/console → Applications → Register Your Application
- Note your Client ID and generate a Client Secret
- Get an access token via the Client Credentials flow:
curl -X POST "https://id.twitch.tv/oauth2/token" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "grant_type=client_credentials"- Create a webhook subscription:
curl -X POST "https://api.twitch.tv/helix/eventsub/subscriptions" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Client-Id: YOUR_CLIENT_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "channel.follow",
"version": "2",
"condition": {"broadcaster_user_id": "USER_ID", "moderator_user_id": "USER_ID"},
"transport": {"method": "webhook", "callback": "https://dread.sh/wh/ch_xxx", "secret": "your-secret"}
}'- Twitch sends a verification challenge — dread responds automatically
Zapier
Zapier can connect 7,000+ apps to dread — even services that don't have native webhooks. Use a Zap to trigger from any supported service and POST to your dread channel.
- Log in to zapier.com → click Create → Zaps
- Choose your Trigger app (e.g. Google Sheets, Notion, Airtable, QuickBooks, Monday.com — anything Zapier supports)
- Configure the trigger event (e.g. "New Row in Spreadsheet", "New Database Item")
- Connect your account and test the trigger
- Add an Action step → search for Webhooks by Zapier
- Select POST as the action event
- Set the URL to your dread webhook URL
- Set Payload Type to Json
- Map fields from the trigger into the payload data (e.g.
type= "row.added",message= the row data) - Add
?source=google-sheetsto the end of your webhook URL to label events - Test the action and turn on the Zap
This is the best way to connect services that don't support webhooks natively — Notion databases, Google Sheets, Airtable, Monday.com, Trello, and thousands more.
Calendly
- Log in to calendly.com
- Go to Integrations & apps
- Scroll to Webhooks (under API & connectors) and click Learn more
- You'll need to use the Calendly API to create a webhook subscription:
curl -X POST "https://api.calendly.com/webhook_subscriptions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://dread.sh/wh/ch_xxx",
"events": ["invitee.created", "invitee.canceled"],
"organization": "https://api.calendly.com/organizations/YOUR_ORG_UUID",
"scope": "organization"
}'- Get your API token from Integrations & apps → API & connectors → Personal access tokens
- Get your organisation UUID from
GET /users/me
Events: invitee.created (new booking), invitee.canceled (cancelled booking), routing_form_submission.created.
DocuSign
DocuSign Connect sends real-time envelope status updates.
- Log in to DocuSign Admin
- Go to Settings → Connect
- Click Add Configuration → Custom
- Enter a name for the configuration
- Paste your dread webhook URL in the URL to Publish field
- Under Trigger events, select envelope events:
Sent,Delivered,Completed,Declined,Voided - Set data format to JSON
- Click Save
Requires DocuSign Admin or Account Administrator role. Use Logs in the Connect settings to debug delivery issues.
Auth0
Auth0 uses Log Streams to send authentication events via webhook.
- Log in to the Auth0 Dashboard
- Go to Monitoring → Streams
- Click Create Log Stream
- Select Custom Webhook
- Enter a name and paste your dread webhook URL
- Set Content Type to
application/json - Optionally set an Authorization Token (sent as a Bearer token)
- Under Filter by Event Category, select categories: login success, login failure, signup, password change, etc.
- Click Save
Auth0 sends events in batches. Each delivery may contain multiple log entries.
LaunchDarkly
- Log in to LaunchDarkly
- Go to Integrations in the left sidebar
- Find Webhooks and click Add integration
- Paste your dread webhook URL
- Optionally check Sign this webhook and note the generated secret
- Select a Policy to filter which events trigger the webhook (or leave blank for all events)
- Toggle the webhook On
- Click Save
LaunchDarkly sends events for flag changes, project updates, environment changes, and member actions. Use policy filters to narrow to specific projects or flags.
Figma
Figma webhooks are created via the Figma API (no dashboard UI).
- Generate a Personal Access Token at figma.com/developers → Manage personal access tokens
- Find your Team ID from the URL when viewing a team page (e.g.
figma.com/files/team/123456) - Create a webhook subscription:
curl -X POST "https://api.figma.com/v2/webhooks" \
-H "Authorization: Bearer YOUR_FIGMA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"event_type": "FILE_UPDATE",
"team_id": "123456",
"endpoint": "https://dread.sh/wh/ch_xxx",
"passcode": "your-secret"
}'- Available event types:
FILE_UPDATE,FILE_DELETE,FILE_VERSION_UPDATE,FILE_COMMENT,LIBRARY_PUBLISH
Figma sends events for all files within the specified team. The passcode is included in every payload for verification.
Salesforce
Salesforce sends webhook-style notifications via Outbound Messages in Workflow Rules or Flow.
- Go to Setup → search Outbound Messages → New Outbound Message
- Select the Object (e.g. Lead, Opportunity, Case)
- Set Endpoint URL to your dread channel URL:
https://dread.sh/wh/ch_xxx?source=salesforce - Select the fields to include in the payload
- Create a Workflow Rule or Flow that triggers the outbound message on record create/update
Alternatively, use Salesforce Platform Events with a custom Apex trigger to POST JSON to your dread URL for more flexibility.
Notion
Notion doesn't have native outgoing webhooks, but you can use Notion automations with a webhook action or connect via Zapier/Make.
- Open a Notion database → click Automations (lightning bolt icon)
- Set a trigger (e.g. When a page is added or When a property changes)
- Add action → Send webhook
- Set the URL to your dread channel:
https://dread.sh/wh/ch_xxx?source=notion
Alternatively, use the Notion API with a polling script or connect Notion to dread via Zapier using a Webhooks by Zapier action.
Airtable
Airtable supports webhooks via Airtable Automations.
- Open your base → click Automations in the top bar
- Create a new automation with a trigger (e.g. When a record is created, When a record is updated)
- Add action → Send a webhook
- Set the URL to:
https://dread.sh/wh/ch_xxx?source=airtable - Configure the body to include the fields you want to track
- Test and enable the automation
Asana
Asana sends webhooks via its API. Create a webhook subscription using the Asana API.
- Generate a Personal Access Token at app.asana.com/0/developer-console
- Find your Project GID from the project URL
- Create a webhook subscription:
curl -X POST "https://app.asana.com/api/1.0/webhooks" \
-H "Authorization: Bearer YOUR_ASANA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": {
"resource": "PROJECT_GID",
"target": "https://dread.sh/wh/ch_xxx?source=asana"
}
}'- Asana will send a handshake request — dread handles this automatically
- Events fire for task creation, completion, assignment, comments, and more
Webflow
Webflow supports webhooks for site, form, and e-commerce events.
- Go to Site Settings → Integrations → Webhooks
- Click Add Webhook
- Select a Trigger Type (e.g. Form submission, Site publish, Ecommerce order)
- Set the Webhook URL to:
https://dread.sh/wh/ch_xxx?source=webflow - Click Add Webhook to save
Available triggers include: form_submission, site_publish, page_created, ecomm_new_order, ecomm_order_changed, memberships_user_account_added, and more.
Custom / Any Service
Any service that sends JSON webhooks works with dread. Just point it at your channel URL:
curl -X POST "https://dread.sh/wh/ch_xxx?source=myapp" \
-H "Content-Type: application/json" \
-d '{"type":"deploy.success","message":"v1.2.3 deployed to production"}'Add ?source=myapp to the URL to control the source label. Use type or event in your JSON for the event type, and message or description for the summary text. You can also use the X-Dread-Source header instead.
For all other features (muting, alerts, export, digest, forwarding, status page, dashboard), see the Documentation.