ShopifyのAPIで自社サイトと情報連携する方法を解説!

こんにちは。中川瞬(@shun01224)です。

中川
ShopifyとAPIの連携方法が知りたい)
という方のために、サイトとShopifyをAPIで連携する方法について解説をします。

この記事を読むことで、

  1. ShopifyのAPIの種類がわかる
  2. 連携方法がわかる
  3. 連携をする上での注意点を確認できる

この記事を書かせて頂いている私は、現在、輸出・輸入・国内の転売のノウハウをお伝えしています。

時間がない会社員の方や子育てをしている主婦の方に、指導や転売システムの提供をして、忙しくても副業で収入を得てもらっています。

それではShopifyのAPIの連携方法について解説していきます。

APIとは

APIとは

A:Application
P:Programming
I:Interface

の略です。

それぞれを日本語にすると

A:ソフト
P:プログラム
I:接点・境界線

と略し、ソフトとプログラムをつなげるという風に捉えることができます。

例えば、江戸時代に出島という外部と接触できる場所がありました。
日本をソフト、外国を別ソフト、出島をAPIと仮定します。
日本と外国との接点を持たせるのが出島の役割です。
これを出島=APIというように外部と連絡の架け橋をしてくれる働きがあり、アプリとアプリをつなげることで、機能を拡張させ更に便利にするという役割があります。

このように繋げることで

・ソフトウェアの開発の効率化
・セキュリティーの向上
・最新情報を簡単に取得可能

というメリットがあります。

Shopifyが持つAPIの種類

ShopifyのAPIは5つあります。

・Shopify Admin API
・Shopify Storefront API
・Partner API
・Shopify Themes
・Marketing activities API

それぞれの機能や特徴について触れてみましょう。

Shopify Admin API

Shopify Admin APIはアプリケーションとサービスがShopify上で繋げるときに使うAPIです。
個々のShopifyストアに訪れるようアクセスを提供し、ユーザーに独自の機能を追加できるようにします。

利用例として

・商品や在庫などに関する情報の読み込みや書き込み
・在庫を他の在庫管理場所と共有して管理

などがあげられます。
可視化して在庫から配送までの流れを確認しやすくするのがAPIです。

Shopify Storefront API

Shopify Storefront APIは商品データの取得、注文手続きのカスタマイズ、顧客情報の取得が可能です。
またJavaScript、Android、iOS、Unityなどで外部埋め込みができるのも特徴でしょう。

活用例として

・Shopify以外のWebを通してShopifyストアから商品販売
・Unityで作成したゲームなどを通じて製品を販売

が行えるようになります。

Partner API

Partner APIは、Shopify内のパートナーダッシュボードにあるデータにアクセスすることができます。
これにより

・顧客アカウントの管理
・注文管理
・サブスクリプションの管理

といった管理がしやすくなり、業務の効率化も図れます。

Shopify Themes

Shopify Themesは簡単にデザインを作成できるようになります。

ShopifyのオープンソースのLiquidテンプレート言語を使用して、テーマの構築やカスタマイズも可能です。

無料と有料があり、無料のものでは70以上の種類が準備されています。

有料のものでも約2万円程です。

このようなテーマがあることで、高い知識や技術を持ったプログラマ-に依頼する手間やコストを省くことができます。

Marketing activities API

Marketing activities APIを使うことで、Shopify管理画面のマーケティングページからプロモーションキャンペーンとマーケティングオートメンションを管理できます。

ShopifyのマーケティングにはSEOやソーシャルメディアなど様々なものが存在します。

APIを活用してマーケティングのアクティビティを拡張し、管理画面からアプリを直接表示することも可能です。

データー連携の使い方・活用例

Shopifyの中にあるAPIについて説明しましたが、使い方や活用例ではどのようなものがあるのでしょう。

・注文データの連携
・顧客データの連携
・商品データの連携

について見てみましょう。

注文データ連携

注文データをを連携する上で考えられるケースが2つあります。

Shopify上で作成された注文データを取得する場合と、自社データベースから過去に受けた注文データをShopify上の内容に入力する場合です。

Shopify上で受注した注文データ取得する場合では、どのような場面で取得が必要になるのかを考えます。

Webhook上では

・注文作成
・注文削除
・注文キャンセル
・注文フルフィルメント
・注文の支払い
・注文の更新

のケースでデータの取得が可能です。

今度はポストでWebhookを受信するエンドポイントを作成します。

必要となるイベントに合わせてAPIでWebhookを作成します。

{
“webhook”:{
“topic”:”orders/create”,
“address”:”https://whatever.hostname.com/”,
“format”:”json”

自社データベースなどから過去の注文データをShopifyに登録する場合には、ポストで注文データを作成します。
データ作成時、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”

顧客データの連携

新規顧客データをを連携する上で考えられるケースが2つあります。

Shopify上で作成された新規の顧客に関するデータをまとめる場合、自社データベースなどから過去の顧客データをShopifyに登録するといった場合です。

Shopifyのサイト内で作られた顧客データを取得する場合では、Webhookで以下のようなデータでの取得が可能です。

・お客様の作成
・お客様の更新
・お客様の削除
・お客様の有効化
・お客様の無効化

ポストでWebhookを受信するエンドポイントを作成します。

必要となるイベントに合わせてAPIでWebhookを作成します。

{
“webhook”:{
“topic”:”customera/create”,
“address”:”https://whatever.hostname.com/”,
“format”:”json”

注文データ同様、topicに当たる部分が顧客データを取得できるイベントになります。

自社データベースなどから過去の顧客データをShopifyに登録する場合では、ポストで顧客データ作成し、別のポストで顧客の住所を登録して顧客データと紐付けをします。

商品データの連携

Shopifyの商品データは、画像とバリエーションデータの2つに分けることにより、在庫データと連携できる形とになっています。

ShopifyでAPIを活用する上での注意点

自社で使用しているサイトと配送サービスや在庫管理のサービスと連携させたい!と考えている人が多いかもしれません。

このようにShopifyでAPIを連携するときに注意をしなければいけないことが3つあります。

・ShopifyのAPIにはストアのプランがあり、上限がある
・Webhookを受信した際には、データー処理をする
・Webhook通知を受けてから実在在庫をAPIで取得することで在庫数の差分発生を防ぐことができる

これらの注意点をさらに細かく見てみましょう。

ShopifyのAPIにはストアのプランがあり、上限がある

プランの違いによって1秒間にコールできる上限値があります。

APIによるレート制限の比較を表にまとめました。

API 標準制限 ShopifyPlusの制限
管理API(GraphQL) 50ポイント/秒 100ポイント/秒
管理API(REST) 2リクエスト/秒 4リクエスト/秒
ストアフロントAPI • リクエストごとに最低0.5秒 • リクエストごとに最低0.5秒
• ユーザーIPごとに60秒 • ユーザーごとに120秒
Payments Apps API(GraphQL) 未定 未定

どのAPIを使用するかで各上限値を記載しましたが、商品登録や顧客データの登録は大きなデータを使うことが多いと思うので注意が必要です。

Webhookを受信した際には、データー処理をする

ShopifyのWebhookに関するチュートリアルの中で説明していますが、通知が受信したかどうかを判断するのは200番台のステータスコードを受け取れるかを見ています。

もし200番台以外のステータスコードで反応した場合、ShopifyはWebhookが通知が駄目だった判断し、24時間で9回も通知を出し続けなければいけません。

処理する側の問題で、200番台以外を反応していた場合、19回全て成功しないとShopifyにより登録したWebhookが自動的に削除されるので注意が必要です。

Webhook通知を受けてから実在在庫をAPIで取得することで在庫数の差分発生を防ぐことができる

在庫管理のためにWebhookを使うときは、order/createなどで注文を受けた商品を、連携した先のデータの在庫数から少なくする処理をすることがあるかもしれません。

毎回ではないですが、1度に大量に注文が入ってしまい処理が追いつかない間にShopify上では在庫がない状態など実在在庫との差分の発生が生じてしまう場合が考えられるでしょう。

そのような状態を回避するためにも、Webhookを受けてからShopify上での在庫数をProduct APIを使って確認を行い、連携先のデータを上書きすることで連携が実現できるようになります。

ShopifyとAPIを連携して業務の効率化を目指しましょう

顧客データや注文データをAPIをインターフェースすることで、情報管理がスムーズにいきやすくなることがわかったと思います。

最初はAPIで設定するのが大変だと思いますが、設定が終わると管理が楽になり、経営もしやすくなります。

APIを使用して効率的に経営できるようにしましょう。

物販を実践して結果を出されている方で、丁寧に教えてくれる方をご紹介していますので、下の記事ぜひ読んでください。