---
title: "Slack"
description: "Connect Slack, choose a channel, and send a response link with up to three explicitly selected answers."
group: "Deliver & operate"
order: 3
type: "integration"
parent: "integrations"
keywords:
  - "Slack"
  - "Slack app"
  - "private channel"
  - "response alert"
  - "destination"
updated: "2026-07-21"
---

The Slack integration posts a compact signal to one public or private channel when Fillo accepts a new or updated response. Connect one Slack workspace, then choose a channel separately for each form.

## Install Fillo for Slack

Create or sign in to your Fillo account, then open [Workspace connections](/settings/connections) and choose **Connect Slack**. Approve the workspace install, return to the form you want to configure, and open **Settings → Response destinations → Slack**.

Fillo requests permission to post notifications and list basic channel metadata for the picker. It does not request permission to read channel messages or files.

## Message contents

By default, the message contains the form name, event time, a verified respondent label when available, and a link to the response in Fillo. A form manager can explicitly include up to three answer fields. Every other answer — and all file contents — stays out of Slack.

| Fillo value | Slack output |
| --- | --- |
| New accepted response | "New response" headline |
| Update-in-place response | "Updated response" headline with update time |
| Verified respondent name or email | Optional From line |
| Up to three owner-selected fields | Label and formatted answer value |
| Response ID | Encoded in the authenticated Fillo link, not printed as answer data |

Slack renders the timestamp in each reader's own timezone.

## Connect a channel

1. Open the Fillo form's **Settings → Response destinations**.
2. Choose **Slack**, then **Connect Slack**.
3. Approve the workspace install. Fillo caches public channels and private channels that already include `@Fillo`.
4. Open Slack setup again, choose a channel, and select **Use this channel**.
5. Choose **Manage** on the Slack row to allowlist up to three answer fields when needed.
6. Submit a test response and open it from the Slack message.

Opening the setup dialog uses the cached list; it doesn't contact Slack. Use **Refresh channels** after a channel is created or renamed. For a private channel, invite `@Fillo` from inside that channel, return to Fillo, and refresh. Slack exposes basic metadata only for private channels the app has joined; the integration does not request private message history.

The advanced channel-ID control remains available for Slack Connect or a channel missing from a truncated cache. The app must still be a member of a private channel before it can post there.

## Code-defined forms

The form structure can be synced from code, but Slack connections, channel choices, and the field allowlist are authenticated workspace settings. Configure them in the dashboard rather than `defineForm`, browser-exposed environment variables, or custom field config.

## Delivery behavior and limits

Slack messages are append-only: an updated response posts another message. Slack has provider-side rate and policy limits independent of Fillo. The integration is available on every Fillo plan.

Unlike Sheets and Notion, Slack doesn't provide this integration with a reliable way to ask whether a message already landed. If Slack accepts a request but Fillo doesn't record the success, a retry can post a duplicate message.

## Troubleshooting FAQ

### Why isn't a channel in the picker?

Use **Refresh channels** for a newly created or renamed public channel. For a private channel, invite `@Fillo` from inside the channel first, then refresh. Fillo cannot discover a private channel before Slack grants the bot membership.

### Why does Fillo ask me to pick the channel again?

The form was connected to a different Slack workspace than the workspace currently installed in Fillo, or Slack no longer exposes that channel. Pick a valid channel in the current workspace. Failed deliveries remain available in **Activity** for replay after the repair.

### Why is the respondent missing?

Slack shows identity only when your server verified it. An email typed into a form is answer data, not verified identity.

### Can the message include answers?

Yes, but only through the explicit per-form allowlist under **Manage**, with a maximum of three fields. Links-only remains the default. Use Zapier or a signed webhook receiver when a reviewed workflow needs a larger or transformed payload.

## Support

Installation, channel discovery, or delivery problem? Email [hello@fillo.so](mailto:hello@fillo.so). Include the Fillo form URL, the approximate delivery time, and the error shown in **Activity**. Never send a Slack access token or respondent answer content by email.

## Related

- [Delivery health and replay](/docs/delivery-health): See terminal failures and replay the failed backlog.
- [Respondents and identity](/docs/respondents): Verify the name or email shown in the signal.
- [Webhooks](/docs/webhooks): Build a custom Slack message on your own server.
