Why Connect Slack to Inbound Email
Teams using Slack for real-time communication often miss critical signals that arrive by email. Customer support requests, system alerts, and business notifications all land in inboxes — but Slack is where your team actually works. JsonHook connects the two, delivering parsed email content directly into Slack so nothing falls through the cracks.
Connecting your inbound email to Slack through JsonHook unlocks a range of high-value automation scenarios:
- Post a formatted message to a dedicated channel whenever a support email arrives
- Alert on-call engineers when an error notification email is received
- Notify a sales channel the moment a new lead inquiry email comes in
- Share customer feedback emails with the product team in real time
- Create a digest of daily report emails delivered each morning to a channel
Slack supports Incoming Webhook URL, which makes it a natural target for JsonHook's outbound POST requests. Every email that hits your JsonHook address is parsed within milliseconds and delivered to Slack as a clean JSON object — no polling, no manual export, no middleware server to maintain.
Setting Up Slack with JsonHook
The following steps walk you through connecting JsonHook to Slack. The entire setup typically takes under ten minutes.
- Step 1: In your Slack workspace, go to Apps and search for "Incoming WebHooks". Click "Add to Slack", select the channel where email notifications should appear, and click "Add Incoming WebHooks Integration".
- Step 2: Copy the generated Webhook URL from the setup page. This is the HTTPS endpoint that JsonHook will POST message payloads to.
- Step 3: In JsonHook, create an inbound address (e.g.,
[email protected]) and set the destination to your Slack Incoming Webhook URL. Enable the connection and set the Content-Type header toapplication/json. - Step 4: Use JsonHook's message template feature to format the Slack payload. Set the body to
{"text": "New email from {{from.address}}: *{{subject}}*\n{{text}}"}so each email appears as a clean Slack message.
Once the connection is active, every email sent to your JsonHook address will be automatically parsed and forwarded to Slack. You can test the integration by sending a plain-text email to your JsonHook address and verifying that the payload appears in Slack within a few seconds.
JsonHook supports Incoming Webhook URL on the Slack side, so no additional configuration is needed in Slack beyond the steps above. If Slack requires header-based authentication for incoming webhooks, add the required headers in the JsonHook endpoint configuration under Advanced Settings.
Example Workflow: When a support email arrives, post a formatted message to the #support Slack channel
This walkthrough demonstrates one concrete way to use JsonHook with Slack. The scenario: When a support email arrives, post a formatted message to the #support Slack channel.
When an email matching this scenario arrives, JsonHook parses the raw SMTP message and constructs the following JSON payload before POSTing it to your Slack endpoint:
{
"messageId": "",
"from": {
"name": "Jane Smith",
"address": "[email protected]"
},
"to": [
{ "address": "[email protected]" }
],
"subject": "When a support email arrives, post a formatted message to the #support Slack channel",
"text": "Hi, I need help with my account. Please contact me at your earliest convenience.",
"html": "Hi, I need help with my account...
",
"date": "2026-03-15T10:32:00.000Z",
"attachments": [],
"headers": {
"x-priority": "1"
}
}
Slack's Incoming Webhook expects a JSON body with a text field (or a blocks array for richer formatting). Map JsonHook's from.address to the sender identifier, subject to the message title, and text to the message body. Use Slack Block Kit to create structured cards with sections for each email field.
Once Slack receives this payload, it can execute any downstream action — whether that is posting a notification, creating a record, updating a field, or triggering an entire multi-step workflow. The key advantage is that the data arrives as structured JSON, so Slack never needs to parse raw email text or deal with MIME encoding.
Payload Mapping for Slack
JsonHook delivers a consistent JSON schema for every parsed email. The table below shows which JsonHook fields map to the equivalent fields in Slack. Use this as a reference when configuring your Slack Incoming Webhook URL.
| JsonHook Field | Description | Slack Field |
|---|---|---|
from.address | Sender email address | Sender / Contact email |
from.name | Sender display name | Sender / Contact name |
subject | Email subject line | Title / Subject / Name |
text | Plain-text email body | Description / Body / Message |
html | HTML email body | Rich text field / Notes |
date | Timestamp of receipt (ISO 8601) | Created date / Received at |
attachments[n].filename | Attachment filename | File name / Attachment label |
attachments[n].content | Attachment content (base64) | File content / Binary field |
headers.* | Raw email headers | Metadata / Custom properties |
messageId | Unique message identifier | External ID / Deduplication key |
Not every field will be present in every email. Always check for null or missing values before mapping to required fields in Slack. For text-only emails, html will be empty; for HTML-only emails, text may be empty or auto-generated from the HTML. The attachments array will be an empty array when no files are attached.
Best Practices for Slack Email Integration
Following these best practices will make your Slack email integration more reliable, easier to debug, and simpler to scale as your email volume grows.
- Use dedicated addresses per workflow. Create a separate JsonHook inbound address for each distinct Slack workflow you want to trigger. This makes routing explicit and avoids a single endpoint becoming a bottleneck for all email types.
- Validate the payload before acting. In Slack, add a conditional check at the start of your workflow to confirm that required fields like
from.addressandsubjectare present and non-empty before executing downstream actions. - Test with real emails first. Use JsonHook's delivery log to inspect the raw JSON payload before wiring up Slack. Confirm that all the fields you plan to map are actually populated by your email source.
- Handle errors gracefully. Configure Slack to catch webhook delivery failures and send an alert. JsonHook will retry failed deliveries, but your Slack endpoint should return a 2xx status promptly to acknowledge receipt.
- Keep secrets out of email content. Avoid routing emails that contain passwords, API keys, or PII through workflows unless you have appropriate data-handling controls configured in Slack. Use JsonHook's HTTPS delivery to protect data in transit.