How to Send Form Submissions to Slack
Post every form submission to a Slack channel as a formatted Block Kit message with the managed Slack connector — plus a free webhook + automation route.
The ShipMyForm team
· 6 min read
An email that lands in an inbox nobody watches is a lead you have already lost. Slack is where most teams actually live, so having each form submission drop straight into a channel — where someone can react, claim it, or reply within minutes — is one of the highest-leverage things you can do with a contact form. The problem is the plumbing: a plain HTML form on a static site has no way to post to Slack on its own.
There are two clean ways to bridge that gap with ShipMyForm, and this guide covers both: the managed Slack connector, which posts a nicely formatted message to your channel after you paste one webhook URL, and a free do-it-yourself route that sends ShipMyForm's raw webhook into an automation that reshapes it for Slack. Pick whichever fits your plan and how much you want to wire up.
The two approaches at a glance
| Managed Slack connector | Webhook + automation | |
|---|---|---|
| Setup | Paste one Slack webhook URL | Wire an automation to reshape the payload |
| Plan | Paid (Starter and up) | Free plan works |
| Message formatting | Block Kit message, built for you | You build the Slack message yourself |
| Maintenance | None | You own the automation |
| Best for | Get it working in a minute | Free tier or full control |
Both rely on ShipMyForm sitting in front of your form: it catches the POST, stores the submission, and filters spam before anything reaches a connector — so only genuine submissions ever hit your channel instead of a stream of bot noise.
Option A: the managed Slack connector
This is the one-paste path. You give ShipMyForm a Slack Incoming Webhook URL, and from then on every non-spam submission is posted to that channel as a formatted message — no automation, no code.
Step 1: point your form at ShipMyForm
Your form stays plain HTML. Set its action to your form endpoint — no JavaScript
required:
<form action="https://shipmyform.com/f/YOUR_FORM_ID" method="POST">
<input name="name" required />
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button type="submit">Send</button>
</form>Step 2: get a Slack incoming webhook URL
A Slack Incoming Webhook is a URL that posts a message into one specific channel. To create one:
- Go to api.slack.com/apps and create a new app (or open an existing one) in your workspace.
- Open Incoming Webhooks and turn the feature on.
- Click Add New Webhook to Workspace, then choose the channel you want submissions to post into.
- Copy the generated URL — it looks like
https://hooks.slack.com/services/T000/B000/xxxx.
The webhook URL is bound to the channel you picked when you created it. If you later want submissions in a different channel, create a new webhook for that channel and swap the URL — you cannot repoint an existing one from ShipMyForm.
Step 3: add the Slack connector
In your dashboard, open the form, go to Connectors, and add Slack. Paste
the https://hooks.slack.com/services/... URL into the connector and save. The
connector only accepts a hooks.slack.com URL, so if the paste is rejected,
double-check you copied the Incoming Webhook URL and not some other Slack link.
Step 4: send a test
Hit Send test in the connector (or just submit the real form). A formatted message appears in your channel almost immediately. ShipMyForm posts each submission as a Slack Block Kit message with three parts:
- a header —
📨 New submission: <form name>, - a section listing up to 10 of the submitted fields, and
- a context line with the submission timestamp.
Because spam is filtered out upstream, only real submissions ever produce a message — your channel does not fill up with bot garbage.
Posting to more than one channel
Each Slack connector maps to exactly one webhook, which maps to one channel. To
send the same submissions into several channels, add a separate Slack connector
for each one, each with its own webhook URL. There is no limit to how you split
them — for example, sales enquiries into #sales and a copy into #leads.
That is the whole managed setup. From here every genuine submission shows up in Slack, formatted and ready to act on.
Option B: free, via the webhook connector and an automation
On the free plan, or if you want to control exactly how the Slack message looks, you can get submissions into Slack without the managed connector. The key thing to understand is why you cannot skip the middle step.
ShipMyForm's free Webhook connector sends its own raw JSON — a submission
object with your fields under data. A Slack Incoming Webhook, on the other hand,
expects Slack's own message JSON (a text field or a blocks array). Those
two shapes are not the same, so pointing the generic webhook connector straight at
a hooks.slack.com URL will not produce a readable message — Slack will reject or
mangle it.
The fix is to put a small automation in between that receives ShipMyForm's payload, reshapes it into Slack's format, and forwards it on:
ShipMyForm ──webhook (raw JSON)──▶ n8n / Zapier / Make ──▶ Slack
(reshapes the payload)Step 1: point the webhook connector at your automation
In your ShipMyForm form, open Connectors, add the Webhook connector (it is on the free plan), and paste the inbound URL of your automation — an n8n Webhook node URL, a Zapier Catch Hook, or a Make custom-webhook URL. Save, and ShipMyForm will deliver every submission there as JSON.
Step 2: reshape the payload and post to Slack
In the automation, read the incoming fields (they arrive under data) and build a
Slack message from them, then send it to your Slack Incoming Webhook — or use the
platform's native Slack action, which builds the message for you. A minimal Slack
payload is just:
{
"text": "📨 New submission from [email protected]: Loved the guide, can we talk?"
}Every webhook delivery carries an X-ShipMyForm-Signature header:
sha256= followed by an HMAC-SHA256 of the raw body, keyed with the
connector’s signing secret. Since your automation’s inbound URL is open to
the internet, recompute that hash and reject anything that does not match before
you post to Slack.
The full n8n walkthrough covers this exact pattern — the Webhook node, the field mapping, and the signature check — and the same idea works in Zapier and Make. The trade-off is ownership: this route is free and fully in your control, but you build and maintain the automation, whereas the managed connector formats the message for you and needs nothing to keep running.
Which one should you use?
- On a paid plan and just want it working? Use the managed Slack connector. Paste one webhook URL and every submission arrives as a formatted Block Kit message, spam already excluded.
- On the free plan, or you want to design the Slack message yourself? Route the free webhook connector through n8n, Zapier, or Make and format it there.
Either way, ShipMyForm's storage means every submission is also kept in your dashboard, so even if a Slack post fails you still have a durable copy — nothing is lost.
Next steps
- New to this? Start with what a form backend actually is.
- Read the Slack connector docs for the full setup and message reference.
- Want the same submissions in a spreadsheet too? See form submissions to Google Sheets.
- Building the free route? Follow the connect-your-form-to-n8n guide.
- Start free — email and the webhook connector are on every plan, with 100 submissions a month and no card required.
Frequently asked questions
- Do I need a paid plan to send form submissions to Slack?
- The managed Slack connector is on ShipMyForm's paid plans (Starter and up). It posts each submission to your channel as a formatted Block Kit message with no code. On the free plan you can still reach Slack by routing the free webhook connector through an automation (n8n, Zapier, or Make) that reshapes the payload into Slack's message format — that route is covered below.
- How do I get a Slack incoming webhook URL?
- In Slack, go to api.slack.com/apps, create or open an app, enable Incoming Webhooks, click "Add New Webhook to Workspace", choose the channel to post into, and copy the https://hooks.slack.com/services/... URL it gives you. That single URL is tied to the channel you picked, and it is what you paste into the Slack connector.
- Can I post to more than one Slack channel?
- Yes. Each Slack connector maps to one incoming webhook, which maps to one channel. To post the same submissions into several channels, add a separate Slack connector for each one, each with its own webhook URL for its target channel.
- Will spam submissions post to Slack?
- No. ShipMyForm filters spam before anything reaches your connectors, so only genuine, non-spam submissions are delivered to Slack. Your channel stays clean instead of filling up with bot noise.
Related guides
How to Connect Your Form to n8n
Send every form submission straight into an n8n workflow with the free webhook connector. No serverless glue, no polling.
How to Send Form Submissions to Google Sheets
Turn a static-site form into a live Google Sheet. Connect Google once and every submission appends as a row — or do it free with a webhook and Apps Script.
What Is a Form Backend? (And When You Need One)
The plain-language definition, how form endpoints work, and when a hosted backend beats rolling your own.