ShopifyでのWebhookの設定

「ShopifyでWebhookを利用するにはどうすれば良い?」「どんなイベントで利用できるの?」そうお悩みの方も多いことでしょう。

Shopify(ショッピファイ)では、Webhookを活用できるポイントや使い所が多くあり、ECサイトの管理&運営を効率化できます。そこで今回は、ShopifyでWebhookを設定できるイベントを紹介し、設定する手順や通知状況を確認する方法、バージョンを更新する方法や設定する際の注意点を解説します。

Shopifyでは商品や注文情報、在庫状況などのイベントにWebhookを設定でき、自社で使用している配送サービスや倉庫管理サービスと連携させることができます。Shopifyをより便利に利用するためにも、今回お伝えすることを参考にして、Webhookを活用してみてください。

Webhookとは

Webhookとは、アプリケーションの更新情報を他のアプリケーションへリアルタイムで提供する仕組みのことをいいます。何らかのイベントが発生したタイミングで、あらかじめ指定したURLにプロパティをリクエストすることができます。「Webhookを通知する」または「Webhookを送る」の意味が、このリクエストのことを指しています。

Webhookを利用することで、サービスがPOSTリクエストしたパラメーターに対しての処理を自由に指定することが可能になります。Shopifyで例えると、ユーザーが商品を注文したイベント発生時に、注文情報をSlackに通知したり、メールを送信する指定を行ったりすることができます。さまざまなイベントに対して、自由に処理を指定できることがWebhookを利用するメリットです。

Webhookと混同する仕組みとしてAPIがありますが、両者はまったく異なるものです。APIはこちらからリクエストすることで、レスポンスしてくれますが、Webhookはリクエストしなくてもイベントが発生すれば自動的にレスポンスしてくれる違いがあります。ShopifyでWebhookを設定することで、運営業務を円滑に進められるようになります。

なお、Webhookに対応したサービスはShopify以外にも多くあるので、一部を紹介しましょう。

Webhookに対応したサービス
  • Slack
  • Chatwork
  • Facebook
  • Twitter
  • LINE
  • GitHub
  • PayPay

Shopify(ショッピファイ)でWebhookを設定できるイベント

Shopify(ショッピファイ)では、Admin APIで定義された以下のイベントに対してWebhookを設定できます。

イベント発生元 イベント
商品 商品の作成・商品の削除
顧客 顧客の作成・顧客の削除
顧客の無効化・顧客の有効化
顧客グループ 顧客グループの作成・顧客グループの削除
顧客グループの更新
注文 注文のキャンセル・注文の作成
注文の削除・注文の更新
注文のフルフィルメント
注文のお支払い
ショップ ショップの更新
テーマ テーマの作成・テーマの削除・テーマの更新
コレクション コレクションの作成
チェックアウト チェックアウトの作成
チェックアウトの更新
カート カートの作成・カードの更新
下書き注文 下書き注文の作成・下書き注文の削除
下書き注文の更新
フルフィルメント フルフィルメントの作成
フルフィルメントの更新
返金 返金申請の発行

これらのイベントに対してWebhookを設定することで、アプリに以下の通知を送ることができます。

プロパティ 説明
id Webhook通知のユニークなID。APIでWebhook通知リソースを指定するのに使われる。
topic イベントの種類。例) carts/create, customers/update
address イベントが起きた時にPOSTリクエストが送信されるエンドポイント
api_version Admin APIのバージョン。Webhook通知の作成時に設定される。
created_at Webhook通知の作成日時
updated_at Webhook通知が最後に更新された日時
format POSTリクエストに含まれるデータの形式。JSONかXML。
fields 通知に含めるプロパティの配列。例)”fields”: [“id”,”updated_at”]
metafield_namespaces Webhook通知に含めるメタフィールドの名前空間。
private_metafield_namespaces Webhook通知に含めるプライベートメタフィールドの名前空間。

Shopify(ショッピファイ)でWebhookを設定する方法・手順

Shopify(ショッピファイ)でWebhookを設定する方法は、次の2通りです。

Webhookを設定する方法
  • Shopify管理画面から設定する方法
  • APIを通して設定する方法

ストアの管理画面から設定する方法と、APIを使って登録する方法があります。どちらも登録した方法でしか通知を確認できないので、管理しやすい方法で行ってください。

Shopify管理画面から設定する方法

Shopifyの管理画面から設定する方法は「設定」から「通知」を選択して、一番下にある「Webhookの作成」をクリックします。

Webhookの作成

するとWebhookの追加画面が表示されるので、通知するイベントとフォーマットを選択して、エンドポイントのURLを入力します。使用できる最新のWebhook APIバージョンを選択したら「保存」をクリックしてWebhookを作成します。

Webhookの追加画面

APIを通して設定する方法

APIを通してWebhookを作成する方法では、REST APIとGraphQLのどちらでも利用できます。

REST APIのエンドポイント

エンドポイント 説明
GET /webhooks.json 設定されたWebhook通知のリストを取得
GET /webhooks/count.json 設定された全てのWebhook通知の合計数を取得
GET /webhooks/{webhook_id}.json webhook_idで指定したWebhook通知の情報を取得
POST /webhooks.json 新しいWebhook通知を作成
PUT /webhooks/{webhook_id}.json webhook_idで指定したWebhook通知の設定値を更新
DELETE /webhooks/{webhook_id}.json webhook_idで指定したWebhook通知を削除

GraphQLのMutation

Mutation 説明
webhookSubscriptionCreate 新しいWebhook通知を作成
webhookSubscriptionDelete Webhook通知を削除
webhookSubscriptionUpdate Webhook通知を更新

Webhookの通知状況を確認する方法

Webhookの通知状況は、Shopifyパートナーのダッシュボードから確認できます。

Shopifyパートナーのダッシュボード

画面左側のメニューから「アプリ管理」を選択して、確認するアプリの「Webhook配信」をクリックすると通知状況が表示されます。通知が正しくされていない場合でも、ダッシュボードから原因を特定できます。

Webhookのバージョンを更新する方法

Webhookのバージョンを更新する方法には、次の3種類があります。

Webhookのバージョンを更新する方法
  • Shopifyパートナーダッシュボードから更新する方法
  • 「プライベートアプリを管理する」から更新する方法
  • イベント単位で更新する方法

Webhookでは、3ヶ月に1回バージョンアップがされているため、定期的に更新する必要があります。常に最新バージョンを適用することで、セキュリティ上の不具合を減らしたり、強力な機能を使えるようになったりします。

※バージョンアップを行う前に、アプリのソースコードを新しいバージョンの通知を処理できる状態に変更してください。

Shopifyパートナーダッシュボードから更新する方法

Shopifyパートナーのダッシュボードから「アプリ管理」を選択して、更新したいアプリの「アプリ設定」をクリックします。イベントサブスクリプションの「イベントバージョン」から更新を行えます。

「プライベートアプリを管理する」から更新する方法

「プライベートアプリを管理する」から更新する方法

Shopify管理画面の「アプリ管理」から、一番下の「プライベートアプリを管理する」をクリックします。設定しているアプリが表示されるので、更新したいアプリの「Webhook APIのバージョン」の最新バージョンを選択して「保存する」をクリックします。

イベント単位で更新する方法

他にも、イベント単位で更新することも可能です。Shopify管理画面の「設定」から「通知」を選択し、Webhookのセクションで更新するイベントを選択します。

Shopify(ショッピファイ)でWebhookを設定する際のポイント

Shopify(ショッピファイ)でWebhookを設定する際のポイントは次のとおりです。

ShopifyでWebhookを設定する際のポイント
  • タイムアウト時間
  • SSL化
  • レスポンスステータスコード
  • 独自ヘッダー
  • Webhook通知の再送
  • Webhook通知だけに頼らない

タイムアウト時間

WebhookのPOSTリクエストは5秒でタイムアウトしてしまうので、5秒以内にレスポンスを返せる必要があります。タイムアウトしてしまうと、エラーレスポンスになってしまい、POSTリクエストが再送されます。

エラーレスポンスが続くと、通知は自動的に削除されて警告メールが開発者に送信されます。リクエストに対して正常にレスポンスできているか確認を怠らないようにしましょう。

SSL化

ShopifyのWebhookに設定するエンドポイントは、SSL化しておく必要があります。Shopifyで構築したECサイトはデフォルトでSSL対応されているので問題ありませんが、エンドポイントを別のサイトにする場合は注意してください。

レスポンスステータスコード

ShopifyのWebhookでは300番台のリダイレクトには対応していないので、通知を受け取ったら200番のステータスコードを返すようにしましょう。300番台でレスポンスしてしまうと、エラーレスポンスと解釈されてしまいます。

独自ヘッダー

ShopifyでWebhookを利用する場合、通知のPOSTヘッダーには独自ヘッダーが含まれます。POSTリクエストを受け取る側は、共有鍵を使用してリクエストボディのMAC値を計算して、値と一致するか確かめなければなりません。

リクエストが途中で改竄されても見つけられるように、認証処理は省かないように実装しましょう。

Webhook通知の再送

Shopifyの公式ドキュメントでは、受信できなかったWebhook通知を再度取り直す方法が推奨されています。Webhookを登録し直し、システム停止期間のデータを取得してから、Webhookの受信側の処理を行ってください。

注文や発注イベントの通知を受けるシステムが停止している場合、重大なトラブルの原因にもなるので注意しましょう。

Webhook通知だけに頼らない

Webhookを利用すれば効率良くECサイトの管理運用を行えるようになりますが、通知が正しく伝達される保障はされていないので、Webhookだけに頼らないようにしましょう。

定期的にShopifyからデータを取得して、不具合が生じていないか確認することが大切です。

まとめ

今回は、Shopify(ショッピファイ)でWebhookを設定できるイベントや設定する方法や通知状況を確認する方法、バージョンを更新する方法や設定する際の注意点を解説しました。

Shopifyでは、さまざまなイベントでWebhookを設定することができ、自社で使用している配送サービスや倉庫管理サービスと連携させることができます。今回お伝えしたことを参考にWebhookの設定や更新を行ってみてください。

ただ、Webhookを活用してどんなアクションを設定するのか、どのイベントで使用するか決めるには、専門的なノウハウや業界知識などが必要です。Shopify Guideは、メディアの運営によってShopifyに関する幅広く情報を得ているため、Shopifyでの運営ノウハウを共有したりコンサルティングしたりすることができます。

Shopifyの売り上げをアップさせるには、Shopifyの運営知識を持ったパートナーを見つけることが近道です。お困りの方は、こちらの問い合わせフォームからお気軽にお問い合わせください。