Skip to main content

Overview

Postiz integrates with Slack workspaces to send messages to channels using a Slack bot, with support for rich formatting, media, and threaded conversations.

Authentication

Slack uses OAuth 2.0 with bot installation.
1

Connect Slack

Click “Connect Slack” in Integrations
2

Select Workspace

Choose which Slack workspace to install to
3

Authorize Bot

Grant all requested permissions
4

Select Channel

Choose channel when creating posts

Required Permissions

  • channels:read - Read public channels
  • chat:write - Send messages
  • users:read - Read user information
  • groups:read - Read private channels
  • channels:join - Join channels automatically
  • chat:write.customize - Custom name and icon
Slack bot token is configured via SLACK_ID and SLACK_SECRET environment variables.

Supported Features

Message Features

  • Maximum: 400,000 characters
  • Markdown formatting (mrkdwn)
  • Links, bold, italic, code
  • Emoji support

Channel Types

Post to:
  • Public channels
  • Private channels (if bot is invited)

Posting Messages

Message Structure

Messages use Slack’s Block Kit format:
{
  channel: "C12345678",
  username: "Your Bot Name",
  icon_url: "https://example.com/bot-icon.png",
  blocks: [
    {
      type: "section",
      text: {
        type: "mrkdwn",
        text: "Your message text with *formatting*"
      }
    },
    {
      type: "image",
      image_url: "https://example.com/image.jpg",
      alt_text: "Image description"
    }
  ]
}

Auto-Join Channels

Postiz automatically joins channels before posting:
1

Join Request

Bot joins the selected channel
2

Post Message

Send message with blocks and media
3

Get Permalink

Retrieve permanent link to message
The bot must be invited to private channels manually before posting.

Threading

Create threaded conversations:
1

Main Message

Post initial message to channel
2

Thread Reply

Reply using thread_ts of main message
3

Additional Replies

Continue thread with same thread_ts
Thread replies maintain the same formatting and media support as main messages.

Media Handling

Images are added as separate blocks:
blocks: [
  {
    type: "section",
    text: { type: "mrkdwn", text: "Message" }
  },
  {
    type: "image",
    image_url: "https://example.com/image1.jpg",
    alt_text: ""
  },
  {
    type: "image",
    image_url: "https://example.com/image2.jpg",
    alt_text: ""
  }
]
Multiple images are supported, each as a separate image block.

Channel Discovery

List available channels:
GET /channels

Returns:
[
  {
    id: "C12345678",
    name: "general"
  },
  {
    id: "C87654321",
    name: "announcements"
  }
]
Includes both public and private channels the bot can access. Each message receives a permalink:
https://workspace.slack.com/archives/C12345678/p1234567890123456
Permanent links work even if message is old or in archived channels.

Rate Limits

Slack Rate Limits:
  • 3 concurrent posting jobs
  • Moderate API rate limits
  • Tier-based limits per workspace
  • No strict message count limits

Best Practices

Markdown Formatting

Use Slack’s mrkdwn for bold, italic, and code

Thread Organization

Use threads to keep channels clean and organized

Channel Selection

Post to appropriate channels - use announcements sparingly

Bot Identity

Customize bot name and icon to match your brand

Troubleshooting

If messages fail:
  • Verify bot is in workspace
  • Check bot has chat:write permission
  • Ensure channel exists and bot can access
  • For private channels, manually invite bot first
If channel doesn’t appear:
  • Bot must be invited to private channels
  • Channel might be archived
  • Verify bot has channels:read permission
  • Check workspace permissions
Media display issues:
  • Ensure image URLs are publicly accessible
  • Check image format is supported
  • Verify URLs use HTTPS
  • Images must be hosted externally
Thread issues:
  • Verify original message exists
  • Check thread_ts is correct
  • Ensure bot has message history access
  • Original message may have been deleted

Build docs developers (and LLMs) love