S

Slack Workspace Agentic Workflow

Browser: Post Message — Slack Workspace Agentic Workflow

Navigate to a Slack channel, type a message, and send it

Available free v1.0.0 Browser
$ sidebutton install slack
Download ZIP

A browser-driven write primitive for Slack. The agent navigates to the target channel or direct message, places the supplied message body into the composer, and submits. Formatting is preserved as long as the caller uses Slack's standard markdown — bold, italics, lists, inline code, and code fences all survive the round trip.

Use it as the send step behind any drafting or triage workflow. Channel targeting can be by channel ID, by @-mention URL, or by channel name; the workflow resolves each to the correct URL before composing.

Steps

  1. 1.
    Navigate to a URL
    url
    {{env.SLACK_BROWSER_URL}}/{{channel}}
    browser.navigate
  2. 2.
    Wait
    ms
    3000
    browser.wait
  3. 3.
    Click an element
    selector
    [data-qa='message_input'] .ql-editor, .c-wysiwyg_container [contenteditable='true']
    browser.click
  4. 4.
    Type into a field
    selector
    [data-qa='message_input'] .ql-editor, .c-wysiwyg_container [contenteditable='true']
    text
    {{message}}
    browser.type
  5. 5.
    browser key
    key
    Enter
    browser.key
  6. 6.
    Wait
    ms
    1000
    browser.wait
  7. 7.
    Capture page snapshot
    as
    result
    browser.snapshot

Workflow definition

schema_version: 1
version: "1.0.0"
last_verified: "2026-02-09"
id: slack_browser_post_message
title: "Browser: Post Message"
description: "Navigate to a Slack channel, type a message, and send it"
overview: |
  A browser-driven write primitive for Slack. The agent navigates to the target channel or direct message, places the supplied message body into the composer, and submits. Formatting is preserved as long as the caller uses Slack's standard markdown — bold, italics, lists, inline code, and code fences all survive the round trip.

  Use it as the send step behind any drafting or triage workflow. Channel targeting can be by channel ID, by @-mention URL, or by channel name; the workflow resolves each to the correct URL before composing.

category:
  level: task
  domain: ops
  reusable: true
params:
  channel: string
  message: string
steps:
  - type: browser.navigate
    url: "{{env.SLACK_BROWSER_URL}}/{{channel}}"

  - type: browser.wait
    ms: 3000

  - type: browser.click
    selector: "[data-qa='message_input'] .ql-editor, .c-wysiwyg_container [contenteditable='true']"

  - type: browser.type
    selector: "[data-qa='message_input'] .ql-editor, .c-wysiwyg_container [contenteditable='true']"
    text: "{{message}}"

  - type: browser.key
    key: "Enter"

  - type: browser.wait
    ms: 1000

  - type: browser.snapshot
    as: result