ACTION_ID: slack_send_message NAME: Slack: Send a message CATEGORY: Outreach CREDITS: 0 Send a Slack message. PREREQUISITE: Slack workspace connection — the user must create it in the Floqer UI (Connections page); an agent cannot. Without it the action fails the row with a connection / authentication error. Confirm it exists before configuring. 1. INPUTS select_slack_channel (string, required) Select Slack channel. The id of the channel to post the message in. Must be a valid channel id from the user's connected Slack workspace — the user picks this from a dropdown of their channels when configuring the action in the UI. message (string, optional) Message. The text body of the Slack message. Most commonly an {{llm_models_*.generated_content}} reference so the message is a per-row summary or notification generated upstream by an LLM. form_data (raw_array, optional) Form Data. Structured key/value rows rendered as a Slack message block (e.g. Company -> Floqer, Owner -> Jane). Use this when you want a clean tabular layout instead of, or alongside, free-form message text. 2. OUTPUTS status (string) — Status. Status/Response of the request. Placeholder: "completed". channel (string) — Channel. Slack channel ID where the message was posted. Placeholder: "C12345678". message_timestamp (string) — Message Timestamp. Placeholder: "1698071045.123456". message_text (string) — Message Text. Placeholder: "Hello world!". bot_name (string) — Bot Name. Placeholder: "MySlackBot". 3. HOW TO CONFIGURE Resolve the channel list via Get Action Field Options: POST /api/v1/workflows/{workflow_id}/sheets/{sheet_id}/actions/{action_instance_id}/options/select_slack_channel (body: {}) → returns the user's Slack channels with `value` = channel ID (e.g. `C072REW4K2R`) and `label` = channel name. Configure Action body: { "inputs": { "select_slack_channel": "C072REW4K2R", "message": "{{llm_models_1.generated_content}}", "form_data": [ { "name": "Company", "value": "{{input.company_name}}" }, { "name": "Owner", "value": "{{input.owner_name}}" } ] } } Field-by-field: - select_slack_channel Slack channel ID from the `select_slack_channel` options call. - message Free-form text. Usually an `{{llm_models_*.generated_content}}` reference for a per-row generated summary; a literal string works too. - form_data Optional `[{name, value}]` rows rendered as a structured Slack block (key → value). Use alongside or instead of `message`. 4. WHERE IT FITS IN A WORKFLOW UPSTREAM — how the message text reaches this action Typically the message body is generated by an upstream llm_models action whose prompt formats the upstream data into the exact Slack notification text. The exact upstream actions depend on the user's workflow, but the minimum useful pattern is: (e.g. get_fireflies_meeting_transcription for a call-summary alert, or any enrichment / scoring action) -> llm_models (format the data into the Slack message text) -> THIS ACTION THIS ACTION Posts the message to the selected Slack channel. The team / rep receives a notification in Slack with the LLM-generated summary or alert content. This is typically a terminal action — once the Slack notification is posted, the branch of the workflow ends. 5. WHEN TO USE - Send AI-summarized call insights to a Slack channel right after a meeting (chained from get_fireflies_meeting_transcription via llm_models). The team gets notified with key discussion points, action items, and next steps. - Send hot-lead alerts when enrichment + scoring identifies a high-value prospect, so the rep is notified immediately. - Send workflow status or completion notifications (e.g. "X leads enrolled in campaign Y", "scrape job finished, Z rows updated"). 6. WHEN NOT TO USE - Do NOT use this action to fetch / read data from Slack. This action only sends messages to Slack — it cannot list channels, read message history, fetch users, or pull any data out of Slack. If the user needs to read from Slack, this is the wrong action. Last updated: 2026-04-28.