ShopifyでWebhookを設定する方法や注意するポイントを解説

情報をリアルタイムに取得し格納できるWebhookはオンラインストアを運営するうえで必要不可欠です。Shopifyでは外部接続のアプリを含めてWebhookが実装されているものが大半を占めます。

そこで本記事では、ShopifyでWebhookを設定する方法や注意しなければならないポイントを解説します。

そもそもWebhookとは?

Webhookとは、Webアプリケーションの更新情報を他のアプリケーションへリアルタイムに提供する仕組みのことです。事前に設定したイベントが発生した際、特定のURLに情報を送信します。データのフォーマットはJsonとXMLの2種類です。

Webhookは事前に設定をしておけば、イベントが発生した段階でリアルタイムに通知を受け取ることが可能です。Shopifyのほか、SNS、Zoom、Slackなどのコミュニケーションツール、決済サービスやGitHubなどにも対応しています。

Webhookの重要性

ShopifyでWebhookを使用する目的は、商品の注文や配送先への連絡、顧客データの作成や削除などです。Webhookで設定できる情報はイベントと呼ばれています。

リアルタイムで取得し通知したい情報は事前に設定する作業が必要です。イベントが発生すると条件に応じた情報を送信します。Webhookは通信やリソースの浪費を抑えられるだけでなく、セキュリティ面のリスクを軽減することも可能です。

ShopifyにおけるWebhookの役割

Shopifyではリアルタイムに発生するイベントが多いため、Webhookは重要な役割を果たしています。

  1. カート
  2. チェックアウト
  3. コレクション
  4. 顧客
  5. 顧客グループ
  6. 注文
  7. 商品
  8. ショップ
  9. テーマ
  10. 下書き注文
  11. フルフィルメント
  12. 返金

これらのイベントの作成・編集・更新・削除は定期的に発生するため、自動化での対応が望ましいでしょう。Shopifyではこれらのイベントに対してWebhookで事前に設定し、アプリに通知することができます。

オンラインストアからWebhookを通じて送信される通知は、あらかじめ決められた通知プロパティによって生成されます。注文発生時のプロパティはcreated_atなど、わかりやすい表記になっているのが特徴的です。ShopifyのWebhookで使用される通知プロパティの代表的なものは以下のとおりです。

プロパティ概要
idシステム全体のユニークID
addressイベント発生時のリクエストが送信されるポイント
api_versionAdmin APIのバージョン
created_at注文などイベントの発生日時
updated_at注文などのイベント通知の更新が発生した日
format格納するデータ形式(JSONかXML)
Webhookの通知プロパティ一例

ほかにも多数の通知プロパティが存在します。Shopifyのヘルプページ「通知の参照関数」で詳しく紹介されているので参考にしてください。

APIとの違い

APIは、Application Programming Interfaceの略でアプリケーションをつなぐという意味を持ちます。APIで公開されているものが多いのは、ほかのアプリケーションと連携できる状態にするためです。

ShopifyでAPIを使用している例として、XやLINE、Googleアカウントの情報でログインする表示などがあります。ほかにはAmazon Payや後払いサービスを利用する場合もAPIを使用します。

WebhookとAPIの違いはリクエストをする必要があるかどうかです。APIは使用する側からリクエストするとレスポンスが返ってくる仕組みです。Webhookはイベント発生条件を事前に設定しているため、リクエストしなくてもレスポンスが返ってきます。

ShopifyでWebhook通知を設定する方法

Webhook通知は、以下の2つの方法を用いて設定できます。

  • Shopifyの管理画面より設定する
  • APIを使用して設定する

それぞれ解説していきます。設定しやすい方法を選択して設定しましょう。

Shopifyの管理画面から設定する

Shopifyの管理画面より「設定」を選択し、続いて通知をクリックします。通知をクリックすると右下に「Webhook」があるので選択します。

画像出典:Shopify

Webhookを選択しクリックすると詳細設定画面に遷移します。

「Webhookを作成」をクリックしてください。

クリックするとイベント内容とフォーマット、通知を送信するURLとWebhook APIのバージョンが表示されています。

クリックするイベントで該当のイベントを選択します。フォーマットはJSON、XMLから選びましょう。URLには、データを保存するURLを入力します。なお、以下のURLに返すことはできません。

  • Localhost
  • 「internal」という単語で終わるURL (つまり、thisshop.com/internalなど)
  • ストアと連携しているカスタムドメインのURL
  • www.example.comのような「虚偽」のドメイン
  • Shopifyドメイン (つまり、shopify.comやmyshopify.comなど)

Webhook APIのバージョンは最新のものを選択してください。保存ボタンをクリックしたら設定完了です。

APIを活用して設定する

APIを通じてWebhookを設定するには、REST APIとGraphQL APIのいずれかを使用して設定します。REST APIとGraphQLでは、Webhook用の通知プロトコルも用意されています。しかし、APIを活用して設定するにはWebhookのみならずプログラムの知識が必要なため、専門業者に相談するのがおすすめです。

ShopifyでWebhook通知を確認する方法

様々な方法で設定したWebhookは、正しく通知されるか動作テストが必要不可欠です。Shopifyの管理画面でWebhookを設定した画面よりテスト送信が可能です。

外部サービスの「RequestBin」のようなサイトを活用して通知をチェックする方法もあります。

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

Webhookは、Shopifyの管理画面からバージョンを更新できます。

Shopifyの管理画面の①設定→②通知→③Webhookの順番でクリックしてください。Webhookのイベントをクリックするとバージョンを更新できます。

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

Shopifyのパートナーアカウントのダッシュボードから更新する方法もあります。パートナーアカウントの管理画面の左側の「アプリ管理」を選択してください。現在、設定しているアプリの「Webhook配信」を選択すると更新できます。

プライベートアプリから更新する

Shopifyは一般には公開しないストア専用のプライベートアプリの作成が可能です。プライベートアプリのWebhookの設定変更は、アプリの管理画面からおこなう必要があります。

ShopifyでWebhookを設定する際に注意するポイント

Webhookを設定する際に注意しておきたい点ポイントがあります。

注意すべきポイント
  • Shopifyですでに公開されているアプリの更新はGDPRの対応が必須
  • タイムアウトでエラーレスポンスにならないようにする
  • Webhook通知の再送設定する
  • エンドポイントをSSL化する
  • レスポンスステータスコードを返す
  • 独自ヘッダーがPOSTに含まれている
  • Webhook通知以外のデータの確認する
  • Webhookが必要なくなった際には手動で削除する

1つ1つ詳しく解説していきます。

Shopifyですでに公開されているアプリの更新はGDPRの対応が必須

Shopifyですでに公開されているアプリの更新は、GDPRの対応が必須となりますので注意してください。

GDPRとは個人情報の収集や保存・管理をするために定められた規則です。GDPRに対応するには下記の3つのイベントの設定が必要です。

  • customers/redact
  • shop/redact
  • customers/data_request

GDPRを遵守していない公開アプリを使用すると、Shopifyのストアごと利用禁止になってしまう可能性がありますので、注意してください。

タイムアウトでエラーレスポンスにならないようにする

Webhook通知のタイムアウト時間は5秒です。レスポンスが5秒以上の時間を要するとエラーとみなされます。最大19回のリクエストを送信し返答がなければ、警告メールが送信されます。通知も自動的に削除されてしまうのでタイムアウトにならないように注意しましょう。

Webhook通知の再送設定する

Shopifyの公式ドキュメントによると、Webhook通知を受け取れない場合、再送の設定をするように推奨されています。Webhookで通知を取得できなかったものは、再登録し設定し直しましょう。

エンドポイントをSSL化する

Shopifyでオンラインストアを構築すると自動的にSSL対応されています。Webhookのエンドポイントを別のURLに変更する際は、SSL化されているものを選択するように注意してください。

レスポンスステータスコードを返す

Webhookを登録する際、ステータスコードの入力を求められます。Shopifyで設定するステータスコードは200番が正しい内容です。300番台のリダイレクトには対応していませんので注意してください。

独自ヘッダーがPOSTに含まれている

ShopifyのWebhookの通知ヘッダーには、独自のヘッダー情報が含まれます。独自ヘッダーの例は以下のとおりです。

X-Shopify-TopicWebhookイベントの内容例:orders/create
X-Shopify-Hmac-Sha256BodyをHmac化したもので検証用として利用
X-Shopify-Shop-DomainどのShopifyストアのものか
独自ヘッダーの内容

Webhookの設定により届いた通知がShopifyで設定したものなのか検証する必要があります。

Webhook通知以外のデータの確認する

ShopifyではWebhook通知の活用を推奨していますが、必ずしもすべての通知が正しく送信されるわけではありません。Webhookの通知だけに頼らず、定期的にデータを取得し、不具合などが発生していないかを確認することも大切です。

Webhookが必要なくなった際には手動で削除する

Webhookは設定数が多ければ多いほど、レスポンスも増加します。不要になったWebhookは手動で削除しておきましょう。これらの設定はインフラ対策にも有効です。

大量のWebhook通知に対するインフラ対策

Webhookでリアルタイムに情報を通知できるのは魅力的です。しかし、Webhook通知が大量に発行される状況はあまりよ良くないです。

Shopifyでオンラインストアを運営している場合、セールの開始と共に注文が殺到するといった可能性もあるでしょう。このような場合、Shopify内にはWebhook通知が大量に届いてしまうため、大量注文に対応できるサーバーの準備が不可欠です。とはいえ、常に大容量のデータ送信に耐久できるサーバーを使用し続けるのはコストも高くつくため現実的ではありません。

Shopifyでは、Webhook通知に対応できるサービスとしてAmazon EventBridgeに触れています。Shopify BlogのなかでもShopifyとAmazon EventBridgeとの連携方法について記載されています。Webhook通知を使用し続ける場合は、インフラ対策にも留意しましょう。

Webhookを活用してストアを効率よく運営しよう!

ShopifyにおけるWebhookの設定方法や注意すべき点を解説しました。Shopifyはストア運営や公式アプリなどのアプリの運用でもGDPRを遵守しなければなりません。Webhookは設定自体は管理画面から簡単におこなえます。

Webhookを活用してオンラインストアを効率よく運営しましょう。