Send waitlist signups, feedback and changelog entries to Slack
A line in a Slack channel each time someone joins the waitlist, feedback arrives or a changelog entry goes live. No app to build on your side: a Slack incoming webhook URL is all Launch needs.
How do I connect Nordva Launch to Slack?
Create an incoming webhook in Slack, paste its URL as a Nordva Launch webhook and choose the events. Launch recognises hooks.slack.com and posts one readable line per event instead of JSON. Available on Indie and Builder; the URL is stored encrypted and never shown in full again.
01Get the Slack URL
- Open api.slack.com/apps, create an app (from scratch) in your workspace, and turn on Incoming Webhooks under Features.
- Press Add New Webhook to Workspace, pick the channel, and copy the URL. It starts with https://hooks.slack.com/services/.
- Treat that URL as a password: anyone who has it can post to the channel.
02Create the endpoint
Three ways, same result. In the dashboard: Webhooks → Add webhook, paste the URL, tick the events, press Test. Over the API with a secret key:
curl -X POST https://api.nordva.dev/v1/webhooks \
-H "Authorization: Bearer nv_live_…" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.slack.com/services/T…/B…/…",
"events": ["waitlist.signup.created", "feedback.created"],
"description": "Slack"
}'
# → data.signing_secret is returned once (unused for Slack, which cannot verify it) Or from an AI agent with the MCP server connected: “send new waitlist signups and feedback to Slack, here is the URL”. The agent calls create_webhook, then test_webhook, and reads the delivery log if the test fails.
Events you can subscribe to: waitlist.signup.created, waitlist.signups.invited, changelog.entry.published, changelog.subscriber.created, feedback.created, or "*" for all of them.
03What Slack receives
Launch recognises the Slack URL and sends one readable line per event, in the shape Slack accepts, instead of the JSON envelope:
New waitlist signup: [email protected] (position 42) from hn
New feedback (bug): Export fails for lists over 2,000 rows
Changelog published: Dark mode https://launch.nordva.dev/log/acme/ce_01K5… - Press Test on the endpoint. A line reading “Test message from Nordva Launch. This webhook works.” appears in the channel within a few seconds.
- One endpoint per channel. A #signups endpoint subscribed to waitlist.signup.created and a #feedback endpoint subscribed to feedback.created keeps each channel readable.
- Slack rejects anything but its own message shape, so the payload is a text line, not the JSON envelope. If you need the fields, send the event to your own server or to n8n as well.
Delivery, retries, limits
- Any 2xx within 10 seconds counts as delivered. A 3xx, 4xx, 5xx or a timeout is retried after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours, then given up.
- An endpoint that fails 20 deliveries in a row is switched off; the dashboard says why, and one click switches it back on.
- Every delivery of the last 30 days is in the log with what was sent and what Slack answered.
- Indie includes 2 endpoints per project, Builder 5. Webhooks are not on the Free plan.
- A webhook never slows or fails the API call that caused it: if Slack is down, the signup still succeeds.
Questions
Does the Slack message include the feedback submitter's email?
No. The line carries the classification and the summary or first line of the text. The email, when one was left, is never sent to a routing destination or a webhook; read it with GET /v1/feedback/<id> or in the dashboard.
Can I change the message format?
Not on the Slack format. It is one line per event so a channel stays readable. Send the JSON envelope to your own endpoint if you want to build a richer Block Kit message.
Is this the same as feedback routing to Slack?
Feedback routing (Project → Feedback → Destinations) sends every feedback item to Slack with its classification and is available on Indie and Builder. A webhook adds waitlist and changelog events, per-endpoint event selection and a delivery log. Use either; using both sends feedback twice.