---
title: "Shopify の注文通知を数秒でスマートフォンに届ける"
description: "Shopify の Webhook をそのままスマートフォンへ。通常の注文は静かなプッシュ、高額な注文は少し強め、返金やキャンセルは対応が必要なときに。"
date: 2026-09-09
author: Nooc
authorAvatarLink: /images/avatars/nooc.webp
authorLink: https://nooc.me
tags:
  - Shopify
  - 注文通知
  - EC アラート
  - Webhook 通知
  - 小規模店舗
---

# Shopify の注文通知を数秒でスマートフォンに届ける

Shopify の注文メールは、メールアプリが同期したいと思ったタイミングで届き、自分でフィルタをかけたフォルダに落ち、12 ユーロの注文でも 1,200 ユーロの注文でも見た目は同じです。店を自分で回しているなら、それは信号の形として間違っています。

Webhook がこれを直します。Shopify はすべての注文を、あなたが指定した URL に POST します。Echobell はその POST を、鳴る大きさをあなたが決められる通知に変えます。

## 自分を中断してよい topic を選ぶ

Shopify は Webhook のイベント種別を **topic** と呼びます。ひとりで回している店なら、次の 4 つでほぼ足ります。

| Topic | 意味 | 緊急度 |
| --- | --- | --- |
| `orders/create` | 注文が入った。 | 通常 |
| `orders/paid` | 決済が完了した。実際に入ってきたお金だけを見たいならこちら。 | 通常 |
| `orders/cancelled` | 顧客がキャンセルした。梱包する前に知りたい。 | 時間指定 |
| `refunds/create` | 返金が実行された。 | 時間指定 |

`orders/create` と `orders/paid` は**どちらか一方**にしてください。1 件の売上につき本当に 2 通ほしい場合を除きます。多くの店にとって誠実なのは `orders/paid` のほうです。

## ステップ 1 —— チャンネルを作る

Echobell で「Shopify 注文」のような名前のチャンネルを作り、webhook URL をコピーして、**POST のみ** を有効にします。Shopify は必ず POST で送信します。

キャンセルと返金用にもっと強い別チャンネルがほしければ、今のうちに作って時間指定通知に設定しておきましょう。

## ステップ 2 —— Shopify に Webhook を追加する

Shopify 管理画面で **設定 → 通知 → Webhook → Webhook を作成** を開きます。topic を選び、形式を **JSON** にして、チャンネル URL を貼り付けます。

保存時に Shopify がテスト payload を送ります。スマートフォンが震えれば経路は通っています。

## ステップ 3 —— 実際に読むフィールドだけをテンプレートにする

Shopify の注文 payload は長く、1 件あたり 100 以上のフィールドがあります。必要なのはごく一部です。

**タイトル**

```
新規注文 #{{order_number}} · {{total_price}} {{currency}}
```

**本文**

```
{{customer.first_name}} {{customer.last_name}}
{{line_items[0].title}}
```

`line_items` は配列なので、`line_items[0]` が最初の商品です。Echobell のテンプレートは添字アクセスに対応していますが、ループはありません。3 点の注文でも最初の 1 点しか表示されません。それが問題なら、点数を横に添えましょう。

```
{{line_items[0].title}} · 合計 {{line_items.length}} 点
```

Stripe と違い、Shopify の `total_price` は小数の文字列（`4900` ではなく `"49.00"`）で届くので、計算なしでそのまま正しく読めます。

## ステップ 4 —— 条件を使って topic ごとに振り分ける

複数の topic を 1 つのチャンネルに向けた場合、Shopify はヘッダーでどれなのかを教えてくれます。

```
header["x-shopify-topic"] == "orders/paid"
```

管理画面でチャンネルごとに Webhook を作らずに挙動を分ける、いちばんきれいな方法です。

## 大口の注文だけ起こしてほしい

多くの店主が本当に望むのはこの形です。すべての注文は静かなチャンネルへ、しきい値を超えたものだけが鳴るチャンネルへ。

2 つ目のチャンネルを作り、時間指定通知に設定し、そこにもう一つ `orders/paid` の Webhook を向けて、条件を与えます。

```
total_price > 500
```

これで普通の日は背景のざわめきになり、900 ユーロの注文は体で感じられるものになります。

## この構成でできないこと

**HMAC の検証はしません。** Shopify はすべての Webhook を `X-Shopify-Hmac-Sha256` ヘッダーで署名します。Echobell はそれを検証しないので、見知らぬ相手を締め出しているのはチャンネル URL だけです。秘密として扱い、**POST のみ** を有効なままにしてください。偽の注文通知が実害につながるなら、前段に自前のエンドポイントを置いて HMAC を検証し、そこから Echobell を呼びましょう。

**Shopify は同じ Webhook を 2 回送ることがあります。** 失敗時に再送しますが、再送は重複排除されません。通知は「その注文を見に行く合図」として扱い、注文件数として扱わないでください。真実は Shopify 管理画面にあります。

**在庫系の topic はすぐうるさくなります。** `inventory_levels/update` は自分の手動編集も含め、あらゆる在庫の増減で発火します。在庫僅少の通知がほしいなら条件で厳しく絞らないと、昼までに後悔します。

## よくある質問

### これに Shopify アプリは必要ですか？

不要です。**設定 → 通知** の Webhook は管理画面に組み込まれており、アプリもパートナーアカウントもコードも要りません。

### 倉庫の担当者に、管理画面を見せずに注文だけ見せられますか？

できます。チャンネルを共有してください。彼らが受け取るのは通知だけで、それ以外はありません。管理画面へのアクセスもなく、テンプレートに含めた以上の顧客情報も渡りません。

### 通知に顧客名を入れるべきですか？

これはあなたの判断ですが、意識して決める価値があります。テンプレートに入れたものはロック画面に表示されます。動くかどうかを決めるには、注文番号と合計金額で足りることが多いはずです。

### チャージバックで電話を受け取れますか？

Shopify Payments を使っている店舗では、異議申し立ては `disputes/create` topic で届きます。これを着信チャンネルに向けてください。注文系イベントの中で唯一、期限が付いているものです。

## まとめ

Webhook 1 つ、テンプレート 1 つ、大きく鳴らしたければ条件を 1 つ。5 分ほどで済み、注文ページを更新し続ける習慣がなくなります。

[iPhone 版 Echobell をダウンロード](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=blog-shopify-order-notifications-ja&mt=8)、または [Google Play で入手](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid)して、テスト注文を 1 件入れてみてください。確認メールより先に届きます。

---

## 関連記事

- [Stripe の入金アラート](/ja/blog/stripe-payment-alerts)
- [Webhook トリガーのドキュメント](/ja/docs/webhook)
- [テンプレートシステムのリファレンス](/ja/docs/template)
- [チャンネル条件のリファレンス](/ja/docs/conditions)
- [開発者のための通知疲れ対策ガイド](/ja/blog/fix-alert-fatigue-developer-guide)
