AI

チャットサポートOSS比較:Chatwoot vs Papercups vs Zammad でIntercom代替をセルフホスト

オープンソースラボ編集部2026年6月13日

チャットサポートOSS比較:Chatwoot vs Papercups vs Zammad でIntercom代替をセルフホスト

Intercomは月$39〜(Starter)、Zendeskは月$55〜/エージェントと、サポートチームが拡大するほどコストが急増します。Chatwoot(最も多機能・Slack/Twitter連携)・Papercups(Elixir製・開発者向け)・Zammad(チケット管理+チャット統合)はOSSのカスタマーサポートプラットフォームで、ライブチャット・メール・SNSを1つの受信ボックスで管理できます。

チャットサポートツールの選定理由

  • コスト削減: Intercom Startarは月$39・エージェント追加は月$19/人。10人チームで月$210。セルフホストで無料化
  • マルチチャンネル統合: メール・ライブチャット・Twitter/X・Facebook Messagesを1つの受信ボックスで管理
  • カスタマイズ: チャットウィジェットのデザイン・言語・トリガー条件を自由に変更したい
  • APIアクセス: 問い合わせデータをCRM・Slack・Notionと自動連携したい
  • データ主権: 顧客の問い合わせ内容を外部SaaSに渡したくない(医療・金融・法律)

主要ツールの概要

Chatwoot

最も機能が充実したオープンソースのカスタマーサポートプラットフォームです。GitHubスター21k+。メール・ライブチャット・Facebook・Twitter/X・WhatsApp・Telegram・LINE・Slackを統合した受信ボックス、カスタムボット、CSAT計測、チームコラボレーション機能を備えます。

# Chatwootをdocker-composeで起動
version: "3"

services:
  base: &base
    image: chatwoot/chatwoot:latest
    env_file: .env
    volumes:
      - /data/storage:/app/storage

  rails:
    <<: *base
    depends_on:
      - postgres
      - redis
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      RAILS_ENV: production
    command: bundle exec rails s -p 3000 -b 0.0.0.0

  sidekiq:
    <<: *base
    depends_on:
      - postgres
      - redis
    command: bundle exec sidekiq -C config/sidekiq.yml

  postgres:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_DB: chatwoot_production
      POSTGRES_USER: chatwoot
      POSTGRES_PASSWORD: chatwoot_pass
    volumes:
      - chatwoot_db:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    restart: always
    volumes:
      - chatwoot_redis:/data

volumes:
  chatwoot_db:
  chatwoot_redis:
# .env(Chatwoot設定)
FRONTEND_URL=https://support.yoursite.com
DEFAULT_LOCALE=ja
FORCE_SSL=true
SECRET_KEY_BASE=your-64-char-secret-key
POSTGRES_HOST=postgres
POSTGRES_USERNAME=chatwoot
POSTGRES_PASSWORD=chatwoot_pass
REDIS_URL=redis://redis:6379
MAILER_SENDER_EMAIL=support@yoursite.com
SMTP_DOMAIN=yoursite.com
SMTP_ADDRESS=smtp.sendgrid.net
SMTP_PORT=587
SMTP_AUTHENTICATION=plain
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_USERNAME=apikey
SMTP_PASSWORD=your-sendgrid-key
// ChatwootウィジェットをNext.jsに埋め込む
// app/components/ChatwootWidget.tsx
"use client";
import { useEffect } from "react";

declare global {
  interface Window {
    chatwootSettings: Record<string, unknown>;
    chatwootSDK: {
      run: (config: { websiteToken: string; baseUrl: string }) => void;
    };
  }
}

export function ChatwootWidget({ userId, userEmail }: { userId?: string; userEmail?: string }) {
  useEffect(() => {
    window.chatwootSettings = {
      hideMessageBubble: false,
      position: "right",
      locale: "ja",
      type: "expanded_bubble",
      launcherTitle: "サポートに相談",
    };

    const script = document.createElement("script");
    script.src = `${process.env.NEXT_PUBLIC_CHATWOOT_URL}/packs/js/sdk.js`;
    script.async = true;
    script.defer = true;
    script.onload = () => {
      window.chatwootSDK.run({
        websiteToken: process.env.NEXT_PUBLIC_CHATWOOT_WEBSITE_TOKEN!,
        baseUrl: process.env.NEXT_PUBLIC_CHATWOOT_URL!,
      });

      // ログインユーザーの情報を設定
      if (userId && userEmail) {
        window.addEventListener("chatwoot:ready", () => {
          (window as unknown as { $chatwoot: { setUser: (id: string, attrs: Record<string, string>) => void } })
            .$chatwoot.setUser(userId, {
            email: userEmail,
            name: userEmail.split("@")[0],
          });
        });
      }
    };
    document.head.appendChild(script);

    return () => {
      document.head.removeChild(script);
    };
  }, [userId, userEmail]);

  return null;
}
// Chatwoot WebhookをNext.jsで受信してSlackに転送
// app/api/chatwoot-webhook/route.ts
export async function POST(req: Request) {
  const payload = await req.json();

  // 新規会話開始時にSlack通知
  if (payload.event === "conversation_created") {
    const conv = payload.data;
    await fetch(process.env.SLACK_WEBHOOK_URL!, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        blocks: [
          {
            type: "section",
            text: {
              type: "mrkdwn",
              text: `*新規問い合わせ* #${conv.id}
*From:* ${conv.meta?.sender?.name}
*メッセージ:* ${conv.messages?.[0]?.content}`,
            },
            accessory: {
              type: "button",
              text: { type: "plain_text", text: "Chatwootで確認" },
              url: `${process.env.CHATWOOT_URL}/app/accounts/1/conversations/${conv.id}`,
            },
          },
        ],
      }),
    });
  }

  return Response.json({ ok: true });
}

Papercups

Elixir(Phoenix)製の開発者フレンドリーなライブチャットツールです。GitHubスター5.7k+。軽量でReact/Vue/Angular用のSDKが充実しており、Slackとの双方向連携(Slackから直接顧客に返信)が特徴です。

# Papercupsをdocker-composeで起動
version: "3"

services:
  app:
    image: papercups/papercups:latest
    ports:
      - "4000:4000"
    environment:
      DATABASE_URL: ecto://papercups:papercups_pass@postgres/papercups_prod
      SECRET_KEY_BASE: "your-64-char-secret"
      BACKEND_URL: https://chat.yoursite.com
      MIX_ENV: prod
      SLACK_CLIENT_ID: your-slack-client-id
      SLACK_CLIENT_SECRET: your-slack-client-secret
    depends_on:
      - postgres

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: papercups_prod
      POSTGRES_USER: papercups
      POSTGRES_PASSWORD: papercups_pass
    volumes:
      - papercups_db:/var/lib/postgresql/data

volumes:
  papercups_db:
// PapercupsウィジェットをNext.jsに埋め込む
// npm install @papercups-io/chat-widget

import ChatWidget from "@papercups-io/chat-widget";

export function PapercupsWidget() {
  return (
    <ChatWidget
      accountId={process.env.NEXT_PUBLIC_PAPERCUPS_ACCOUNT_ID!}
      baseUrl={process.env.NEXT_PUBLIC_PAPERCUPS_URL!}
      title="サポートチームへ"
      subtitle="通常2時間以内に返答します"
      primaryColor="#6366f1"
      greeting="こんにちは!何かお手伝いできますか?"
      newMessagePlaceholder="メッセージを入力..."
      showAgentAvailability={true}
      agentAvailableText="現在対応可能"
      agentUnavailableText="現在対応時間外"
      requireEmailUpfront={false}
      iconVariant="outlined"
    />
  );
}

Zammad

チケット管理とライブチャットを統合したエンタープライズ向けサポートプラットフォームです。GitHubスター4.3k+。メール・電話・チャット・SNSを統合した本格的なヘルプデスクシステムで、SLAトラッキング・エスカレーション・知識ベース・レポートまで対応します。

# Zamadをdocker-composeで起動
version: "3"

services:
  zammad-railsserver:
    image: zammad/zammad-docker-compose:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      MEMCACHE_SERVERS: zammad-memcached:11211
      REDIS_URL: redis://zammad-redis:6379
      POSTGRESQL_HOST: zammad-postgresql
      POSTGRESQL_PASS: zammad_pass
    depends_on:
      - zammad-postgresql
      - zammad-redis
      - zammad-memcached

  zammad-postgresql:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: zammad
      POSTGRES_PASSWORD: zammad_pass
    volumes:
      - zammad_db:/var/lib/postgresql/data

  zammad-redis:
    image: redis:7-alpine
    volumes:
      - zammad_redis:/data

  zammad-memcached:
    image: memcached:alpine

volumes:
  zammad_db:
  zammad_redis:

機能比較表

比較項目ChatwootPapercupsZammad
ライセンスMITMITAGPL-3.0
ライブチャット
メール統合✅ 高機能
Twitter/X連携
WhatsApp連携
Slack双方向連携
チケット管理✅ 高機能
SLAトラッキング
知識ベース
CSAT計測
最小RAM2GB512MB4GB
GitHub Stars21k+5.7k+4.3k+

Chatwootの自動応答と連携するワークフロー自動化はopen-source-workflow-automation(/categories/low-code)を参照。チャットで受け取った問い合わせのCRM管理はcommunicationカテゴリ(/categories/communication)でまとめています。

FAQ

Q. ChatwootとIntercomの機能を具体的に比べると何が違いますか?

A. 主な差分を整理します。Chatwootにあってほぼ同等: ライブチャットウィジェット・メール統合・チームの振り分け・カスタムボット設定・CSAT計測・モバイルアプリ(iOS/Android)・Slackへの通知。Intercomにあってない機能: ①プロダクトツアー(画面上のガイド機能)②高度なユーザーセグメンテーション(月額課金額でフィルタ等)③ABテスト付きのメール自動配信シーケンス④機械学習による問い合わせ自動振り分け(Resolution Bot)。コスト比較: Intercom Starter $39/月→Chatwoot セルフホスト$0(サーバー代$20/月程度)。機能の80%を1/5以下のコストで実現できます。小〜中規模スタートアップにはChatwootで十分なケースがほとんどです。

Q. ChatwootでWhatsApp Business APIを統合する方法は?

A. ChatwootのWhatsApp連携はMeta Business APIを使います。設定手順: ①Meta for Developersでビジネスアカウントと「WhatsApp Business API」を有効化②Chatwootの設定→受信ボックス→WhatsApp→「WhatsApp Cloud API」を選択③Meta App IDとApp Secret・Phone Number IDを入力④WebhookをChatwootに向ける: https://support.yoursite.com/webhooks/whatsapp⑤Verify Tokenを設定して接続を確認。注意点: WhatsApp Business APIの利用には「ビジネス認証」(Facebookビジネスページの審査)が必要で、審査に1〜2週間かかる場合があります。費用: Meta側でテンプレートメッセージ送信は有料(日本円で1通数円〜数十円)、顧客からのメッセージへの返信は24時間以内なら無料。

Q. Zamadのチケットシステムで優先度・SLA・エスカレーションを設定する方法は?

A. Zamaddの管理画面から設定します。SLA設定: ①管理→SLA→新規SLAで「ファーストレスポンス時間」「解決時間」を設定②チケットの優先度(低・通常・高・緊急)ごとに異なるSLA期限を設定③期限超過時に担当者・マネージャーにメール通知。エスカレーション: ①「エスカレーション」→担当者が未返答で一定時間経過したら上位チームに自動割り当て②Slackチャンネルにもエスカレーション通知を送信(WebhookでSlack連携)。チケットの自動トリガー: 「タグ=VIP」なら優先度を「緊急」に自動変更・「件名に"解約"を含む」なら担当マネージャーにアサイン。小規模チーム(5人以下)にはZamaddはオーバースペックになりがち。ChatwootかPapercupsが適切です。

Q. Chatwootのマルチチャンネル受信ボックスでTwitter/XのDM対応を設定するには?

A. Chatwootの設定→受信ボックス→Twitterで設定します。必要なもの: ①Twitter Developer AccountでAppを作成②「Read + Write + Direct Messages」権限を付与③「Consumer Key(API Key)」「Consumer Secret」「Access Token」「Access Token Secret」を取得。Chatwootへの設定: ①設定→受信ボックス→「Twitterアカウントを追加」②上記のAPIキーを入力③Webhookを設定: https://support.yoursite.com/twitter/callback。制限事項: Twitter/X APIの無料プランではDM読み取りが制限されています(月500万ツイートリード等)。DM対応にはBasic以上のAPIプランが必要(月$100〜)。コスト対効果を考えると、Twitterサポートが主要チャンネルでないなら、まずメール+ライブチャットから始めることを推奨します。

まとめ

ユースケース推奨ツール
マルチチャンネル・全機能Chatwoot
軽量・Slack双方向連携Papercups
本格ヘルプデスク・SLA管理Zammad
Intercom代替のファースト選択Chatwoot

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。