Shopifyの利用者が増える中で、「これまで別のサービスでオンラインストアを運営していたけれど、Shopifyに移行したい!」、「自社で使用している配送サービスや倉庫管理のサービスとShopifyを連携させたい!」といった要望をお持ちの方も多くいらっしゃいます。
そこでShopifyのデータの持ち方と、ShopifyのAPIを使用した効率的なデータ連携の方法をご紹介させていただきます。
Contents
ShopifyでAPIを活用する上での注意点
まず、ShopifyでAPI連携をするにあたり、いくつか注意しなければならない点があります。
ShopifyのAPIにはストアのプランに応じてリクエストの上限がある
プランの違いと言っても、Shopify Plusのプランか、そうでないプランかという違いになってしまうのですが、1秒間にコールできる上限値があることにご注意ください。
詳しくはこちらにどのAPIを使用するかによっての各上限値が記載されておりますが、商品登録や顧客データの登録などは一度に大きなデータをお使うことも多いかと思いますので、注意が必要です。
webhookを受信した際にはステータスコードを成功で返し、データ処理をした方が良い
これはShopifyのwebhookに関するチュートリアルの中で簡単に説明されている箇所で見落としがちなのですが、Shopifyはwebhook通知をした際に、通知が受信されたかどうかを判断するのに200番台のステータスコードを受け取れるかどうかを見ています。
万が一、200番台以外のステータスコードでレスポンスした場合、Shopifyはwebhook通知が失敗したものと判断し、48時間で19回通知を送り続けることになります。
通知先のサーバーがダウンしていたために通知が成功しなかった場合などは、48時間以内に復旧できていれば200番台のレスポンスを返すことができます。
Shopifyがそれ以上通知を送ることはありませんが、処理する側の問題で、200番台以外をレスポンスしていた場合、19回全て成功しないとShopifyにより登録したwebhookが自動的に削除されてしまいますのでご注意下さい。
webhook通知を受けてから実在庫数をAPIで取得することで在庫数の差分発生を防ぐことができる
在庫連携のためにwebhookを使用する場合、order/createなどで実際に注文された商品の数を、連携先データの在庫数からマイナスするような処理をすることがよくあります。
この際、実際にwebhookを受けてからShopify上の商品の実在庫をAPIで確認し、その数をもとに連携先データの在庫数を調整する、といった処理をするのが安全です。
毎回ではないですが、レスポンスに時間がかかりリクエストが複数回送られてしまった場合や、一度に大量に注文が入り、処理が追いつかない間にShopify上では在庫が無くなったものの連携先では在庫がある状態が続いてしまった、などShopify上のデータと連携先データとで差分が生じることでオペレーションに支障が出てしまう場合も考えられます。
そのため、webhookを受けてからShopify上での在庫数をProduct APIを使用して確認し、連携先のデータを書き換えることでリアルタイムの連携が実現できるようになります。
データ連携の活用例
ここまでは、ShopifyのAPIやwebhookを利用してデータを連携する際に、注意しなければならない点についてお話しさせていただきました。
では、実際にどんな場面で、どのようなデータを使用することでデータ連携が可能になるのか、例を挙げてご説明させていただきます。
注文データ連携
Shopify上で作成された注文データを取得する場合
- どのような場面で注文データの取得が必要になるかを考える
webhookでは下記のようなケースで注文データの取得が可能です。
-注文作成
-注文削除
-注文キャンセル
-注文フルフィルメント
-注文の支払い
-注文の更新
- POST /admin/api/2021-01/webhooks.jsonでwebhookを受信するエンドポイントを作成する
1.で選択した必要となるイベントに合わせてAPIでwebhookを作成します。
{
"webhook": {
"topic": "orders/create",
"address": "https://whatever.hostname.com/",
"format": "json"
}
}
“topic”に当たる部分が1.にある注文データを取得できるeventになります。
自社DBなどから過去の注文データをShopifyに登録する場合
1. POST /admin/apo/2021-01/orders.jsonで注文データを作成
注文データ作成の際、line_itemsというフィールドが必要になり、実際に注文された商品のデータは以下のような形式にして登録されることになります。
"fulfillable_quantity"
"fulfillment_service"
"grams"
"id"
"price"
"price_set"
"product_id"
"quantity"
"requires_shipping"
"sku"
"title"
"variant_id"
"variant_title"
"vendor"
"name"
"gift_card"
"properties"
"taxable"
"tax_lines"
"tip_payment_gateway"
"tip_payment_method"
"total_discount"
"total_discount_set"
"discount_allocations"
"origin_location"
"duties"
また、注文データは顧客データと紐づけることができますが、Shopify上の顧客と紐づけたい場合には、先に顧客データをShopifyに登録し、顧客のidを取得しておく必要があります。
顧客データの連携
Shopify上で作成された新規顧客データを取得する場合
- どのような場面で注文データの取得が必要になるかを考える
webhookでは下記のようなケースで注文データの取得が可能です。
-お客様の作成
-お客様の更新
-お客様の削除
-お客様の有効化
-お客様の無効化
- POST /admin/api/2021-01/webhooks.jsonでwebhookを受信するエンドポイントを作成する
1.で選択した必要となるイベントに合わせてAPIでwebhookを作成します。
{
"webhook": {
"topic": "customers/create",
"address": "https://whatever.hostname.com/",
"format": "json"
}
}
注文データ同様、“topic”に当たる部分が1.にある顧客データを取得できるeventになります。
自社DBなどから顧客のデータをShopifyに登録する場合
1. POST /admin/api/2021-01/customers.jsonで顧客データを作成
2. POST /admin/apo/2021-01/customers/{customer_id}/addresses.jsonで顧客の住所を登録し、顧客データと紐付け
商品データの連携
商品データ連携ですが、Shopify上での商品データの在り方を考え、どのフィールドにデータを持たせるかを考える必要があります。
Shopifyの商品データは、商品の中でも画像とバリエーションデータをわけ、バリエーションデータが在庫データと連携する形式になっています。例えば、在庫数や配送サービスに関するデータは、Productではなく、ProductVariantにつくデータになります。
一番最初に取り上げたAPI連携の注意点で、APIには1秒間にコールできる上限が決まっているとお話しさせていただきました。そのため、ストア構築で最初に登録するマスタ商品の数がかなり多い場合には、ファイルインポートにて商品を登録する方が安全かもしれません。
実際にマスタ商品をファイルインポートで登録したあと、APIで連携できる流れは下記のようになります。
1. POST /admin/api/2021-01/products/{product_id}/images.jsonで商品画像データを登録
2. PUT /admin/api/2021-01/inventory_items/{inventory_item_id}.jsonで在庫情報のアップデート
3. GET /admin/api/2021-01/locations.jsonで管理画面より登録しておいたロケーション情報を取得
4. POST /admin/api/2021-01/inventory_levels/set.jsonで実際の在庫数を登録
5. PUT /admin/api/2021-01/variants/{variant_id}.jsonで必要に応じて商品バリエーションデータの修正
まとめ
これまで別のカートを使用されていた方や、独自開発のECを運用されていた方にとっては、Shopifyの商品データとどのように紐づけるか、そしてどのAPIを使用して連携をするかといった整理をすることが最初の課題になるかと思います。
StoreHeroでは、これまでの経験から、ストア構築のサポートとしてデータ連携のコンサルティング等も行っています。
自社内でストア構築は完結したけれども、これまで使用していたDBとShopifyのデータを紐づけたい、といったお問い合わせや、これから外部にデータ連携を行う際、どういったデータをShopifyから取得できるのかといったご相談まで、お気軽にお声がけください。
StoreHeroでは売れるストアの設計からご支援が可能です。お気軽にご相談ください。=>StoreHeroのサービス紹介資料を見る(無料)
Shopify×グロース支援のお問い合わせ
StoreHeroでは、Shopify×グロースの専門チームが打ち手を爆増し売上を伸ばすShopify×グロース支援サービスを提供しています。
StoreHeroとShopify×グロースに取り組むことにご興味のある方はお問い合わせください。