Slack Integration for Internal Newsletters

Connect Slack to Internal Newsletter. Automatically turn pinned messages, channel updates, and team announcements into polished newsletter content blocks.

Turn Slack channel activity into newsletter content automatically. No more copy-pasting between Slack and your newsletter tool.

Why Slack → Newsletter?

Your best company updates are already in Slack. The problem is they disappear in the scroll. By connecting Slack to Internal Newsletter, important updates become permanent, polished newsletter content.

Integration approaches

Approach 1: Webhook ingest via Zapier/Make (easiest)

See the Zapier & Make guide for step-by-step setup.

Best for: Teams that want a quick, no-code solution.

Approach 2: Slack Bot + API (most control)

Build a Slack bot that:

  1. Listens for reactions (e.g. :newsletter: emoji) or slash commands (/newsletter)
  2. Extracts the message content
  3. POSTs to the Internal Newsletter API
// When someone reacts with :newsletter:
app.event('reaction_added', async ({ event, client }) => {
  if (event.reaction !== 'newsletter') return;

  const message = await client.conversations.history({
    channel: event.item.channel,
    latest: event.item.ts,
    limit: 1,
    inclusive: true
  });

  const text = message.messages[0].text;
  const user = await client.users.info({ user: message.messages[0].user });

  await fetch('https://your-app.com/api/v1/webhooks/ingest', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer inl_your_key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      title: `Update from ${user.user.real_name}`,
      body: `<p>${text}</p>`,
      block_type: 'general'
    })
  });
});

Best for: Teams that want custom logic, emoji-based workflows, or slash commands.

Approach 3: MCP agent with Slack context

If you're using Claude with both the Slack MCP and Internal Newsletter MCP:

"Check #product-updates for the last week's messages, pick the 3 most important ones, and create content blocks for each."

The agent reads Slack via the Slack MCP and writes to Internal Newsletter via our MCP — no custom code needed.

Best practices

  • Use a dedicated channel (e.g. #newsletter-content) to keep signal high
  • Emoji reactions are better triggers than all messages — they let team members curate
  • Format content — Slack markdown doesn't map 1:1 to HTML, so strip or convert formatting
  • Set blocks as draft — let the comms lead review before including in the newsletter