Slack 注文通知プラグイン
SlackAdminOrderNotify — 新規注文・ステータス変更・お問い合わせ・在庫アラートを Slack へリアルタイム通知!Block Kit UI とマルチチャンネル振り分けに対応した管理者支援プラグイン
1プラグイン概要
Slack 注文通知プラグイン(SlackAdminOrderNotify)は、EC-CUBE 4.3 で発生する各種イベント(新規注文、注文ステータス変更、お問い合わせ、商品お問い合わせ、新規会員登録、在庫不足)を検知し、 Slack Incoming Webhook を通じて管理者の Slack チャンネルへリアルタイム通知する高機能通知拡張プラグインです。
通知メッセージは直感的な **Slack Block Kit UI** で装飾され、注文金額・ステータス別の動的カラーバーや、EC-CUBE管理画面の該当データページへ直接ジャンプできる **「管理画面で確認する」アクションボタン** を自動挿入します。
主な機能ハイライト
2動作環境
| 項目 | 要件 / 仕様 |
|---|---|
| EC-CUBE 対応バージョン | EC-CUBE 4.2.x 〜 4.3.x |
| PHP バージョン | PHP 8.1 / 8.2 / 8.3 |
| 必須 PHP 拡張 | curl(Slack API / Webhook 通信用), json, mbstring |
| 外部サービス | Slack ワークスペース & Incoming Webhook アプリ(無料版 Slack でも利用可能) |
3インストール・有効化
サーバー上の EC-CUBE ルートディレクトリにて、以下のコンソールコマンドを実行してプラグインをインストール・有効化します。
# 1. プラグインのインストール
php bin/console eccube:plugin:install --code=SlackAdminOrderNotify
# 2. プラグインの有効化
php bin/console eccube:plugin:enable --code=SlackAdminOrderNotify
# 3. キャッシュクリア
php bin/console cache:clear4Slack Webhook の初期設定
Slack に通知を送るためには、事前に Slack 側で **Incoming Webhook URL** を発行する必要があります。以下の3ステップで簡単に作成できます。
Step 1: Slack App の作成
- ブラウザで Slack API アプリ管理ページ にアクセスし、ログインします。
- 「Create New App」 ボタンをクリックし、「From scratch」 を選択します。
- App Name に例:
EC-CUBE Order Notifierと入力し、通知を受け取りたいワークスペースを選択して 「Create App」 をクリックします。
Step 2: Incoming Webhook の有効化 & URL 発行
- 左側メニューの 「Incoming Webhooks」 を選択し、スイッチを 「ON」 にします。
- ページ下部の 「Add New Webhook to Workspace」 ボタンをクリックします。
- 通知を投稿したい Slack チャンネル(例:
#ordersまたは#general)を選択し、「許可 (Allow)」 をクリックします。 - 発行された **Webhook URL**(例:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXX...)をコピーします。
5管理画面の設定 & マルチチャンネル
EC-CUBE 管理画面メニュー 「オーナーズストア > プラグイン > プラグイン一覧」 から 「Slack 注文通知プラグイン」 の設定画面を開きます。
基本設定項目
| 項目名 | 説明 | デフォルト / 必須 |
|---|---|---|
| 通知を有効化 | チェックを入れると各種イベント発生時に Slack 通知を自動送信します。 | ON (有効) |
| メッセージタイトル | 通知メッセージの冒頭に付与するプレフィックス(例: [Shop ABC])。店舗識別に使用できます。 | 空欄 (任意) |
| ステータス変更通知 | 注文ステータスが「対応中」「発送済み」「キャンセル」等へ変更された際に Slack へ通知します。 | ON (有効) |
マルチチャンネル Webhook 振り分け
通知の種類ごとに異なる Slack チャンネルへメッセージを振り分けることができます。個別の URL を空欄にした場合は、自動的に「デフォルト Webhook URL」へ送信されます。
| Webhook 項目 | 通知されるイベント | 推奨チャンネル |
|---|---|---|
| デフォルト Webhook URL 必須 | 標準の通知先。他の個別 URL が未設定のイベントはすべてここに送信されます。 | #all-notifications |
| 販売チャネル (Sales) | 新規注文 (New Order) および 注文ステータス変更 (Status Change)。 | #sales-orders |
| サポートチャネル (Support) | 新規お問い合わせ (Inquiry) および 商品個別お問い合わせ (Product Inquiry)。 | #customer-support |
| 在庫チャネル (Inventory) | 商品在庫数が指定したしきい値以下になった場合の在庫不足アラート。 | #inventory-alerts |
| 技術チャネル (Tech/Dev) | Slack 送信失敗・システム警告アラートなどのエラー通知。 | #system-dev-alerts |
| 在庫アラートのしきい値 | 注文確定時に商品の残り在庫数がこの値以下になると在庫アラートを発動します。 | デフォルト: 5 |
接続テスト & Webhook 検証
設定画面下部にあるテストボタンを使用して、設定内容が正しく動作するか確認できます。
- Webhook を検証: 設定された Webhook URL に対して接続テストを行い、応答ステータスを確認します。
- テストメッセージを送信: Slack チャンネルへサンプル通知メッセージを送信します。
6メッセージテンプレート & プレビュー
プラグイン設定画面では、5種類の通知イベントごとの本文テンプレートを自由に編集できます。ボタンをクリックするだけで、カーソル位置にプレースホルダー変数が自動挿入されます。
利用可能なプレースホルダー変数一覧
| テンプレート種別 | 利用可能なプレースホルダー変数 |
|---|---|
| 新規注文 | {{order_id}} (注文番号), {{customer_name}} (顧客名), {{email}}, {{tel}}, {{total_price}} (支払合計金額), {{payment_method}} (決済方法), {{date}} (日時), {{items_list}} (購入商品一覧), {{admin_url}} (管理画面直通URL) |
| 注文ステータス変更 | {{order_id}}, {{customer_name}}, {{old_status}} (変更前ステータス), {{new_status}} (変更後ステータス), {{date}}, {{admin_url}} |
| 新規お問い合わせ | {{customer_name}}, {{email}}, {{tel}}, {{inquiry_body}} (お問い合わせ内容), {{date}} |
| 商品お問い合わせ | {{product_name}} (商品名), {{customer_name}}, {{inquiry_body}}, {{date}}, {{admin_url}} |
| 新規会員登録 | {{customer_name}}, {{email}}, {{date}}, {{admin_url}} |
Live Preview (リアルタイムプレビュー) 機能
各テンプレートの直下にある **「👁️ Live Preview (プレビュー表示)」** ボタンをクリックすると、モーダルウィンドウが開き、実際の Slack Block Kit UI でどのように表示されるかを即座に確認できます。保存前にレイアウト崩れを防ぐことができます。
7日次売上レポート CLI コマンド
本プラグインには、1日の受注データ(注文数、売上合計金額、客単価 AOV、Top 5 ベストセラー商品)を集計し、Slack へ自動報告するコンソールコマンドが搭載されています。
コマンドの実行方法
# 本日の売上レポートを Slack に送信
php bin/console slack:daily-sales-report
# 特定の日付を指定して集計 (YYYY-MM-DD)
php bin/console slack:daily-sales-report --date=2026-08-10
# ドライランモード(Slack 送信を行わず、コンソール上で出力内容のみ確認)
php bin/console slack:daily-sales-report --dry-runCron (定期自動実行) の設定例
毎晩 23:59 に自動的にその日の売上レポートを Slack へ投稿したい場合は、サーバーの crontab に以下のように登録します。
# crontab -e で以下を追加
59 23 * * * /usr/bin/php /path/to/eccube/bin/console slack:daily-sales-report > /dev/null 2>&18セキュリティ & クリーンアップ
1. Webhook URL マスク保護
管理画面のテキストエリアには、Webhook URL の Token 部分が自動的に ***XXXX とマスク表示されます(例: https://hooks.slack.com/services/T00/B00/***XXXX)。 これにより、画面共有時やスクリーンショット撮影時の情報漏洩を防ぎます。設定を変更せずそのまま保存しても元の URL が保持されます。
2. CSRF トークン検証
管理画面からの保存、Webhook 検証、テスト送信のすべての POST アクションで Strict CSRF トークン検証を行っています。
3. クリーンクローズ (Lifecycle Clean Close)
プラグインを削除 (uninstall) した際には、データベース内に作成されたテーブル(plg_slack_admin_order_notify_config および plg_slack_admin_order_notify_log)が自動的にクリーンアップされます。
9よくあるご質問 (FAQ)
Q. Slack に通知が届きません。どうすればよいですか?
A. 以下の手順で順に確認を行ってください。
- プラグイン設定画面で **「通知を有効化」** が ON になっているか確認します。
- 設定画面の **「Webhook を検証」** ボタンを押して、URL が有効か接続テストを行います。
- サーバー環境で PHP 拡張
curlが有効になっているか確認します。 - エラーログ
var/log/app/dev.logまたはprod.logに Slack 送信エラーが記録されていないか確認します。
Q. 無料版の Slack ワークスペースでも使用できますか?
A. はい、問題なくご利用いただけます。Slack の Incoming Webhook 機能は無料プランでも標準で利用可能です。
Q. 同じ注文の通知が重複して届くことはありますか?
A. 本プラグインには二重送信防止機能が備わっており、同一注文 ID に対する重複送信は自動的にガードされます。