Shopifyで訪問者IP別のサポート入口を表示する方法

著者:Lisa Farrell · 2026-06-01

海外向けShopifyストアでは、地域ごとにサポート手段が異なる場合があります。テーマのJavaScriptで https://my.ipin.io/info を呼び出し、適切なサポート入口を表示できます。

APIの説明

ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。

{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}

利用シーン

これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。

  • これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
  • Shopifyで訪問者IP別のサポート入口を表示する方法
  • APIの説明
  • SEOとUXの推奨事項

実装ロジック

実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。

  • 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
  • ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。
  • 以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。
  • デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。

コード例

以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。

theme.liquid

<a class="ipin-support-btn" href="/support">Support</a>
<script>
document.addEventListener("DOMContentLoaded", async function () {
  const buttons = document.querySelectorAll(".ipin-support-btn");
  const map = { TW: "/support/tw", US: "/support/us", JP: "/support/jp" };
  try {
    // ブラウザ側から /info を呼び出し、訪問者IPを判定します。
    const info = await fetch("https://my.ipin.io/info").then(res => res.json());
    buttons.forEach(btn => btn.href = map[info.country] || "/support");
  } catch (e) {
    // APIリクエスト失敗時はデフォルト値を保持します。
    buttons.forEach(btn => btn.href = "/support");
  }
});
</script>

SEOとUXの推奨事項

デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。

よくあるミス

以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。

  • 以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
  • デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
  • 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
  • これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。

まとめ

ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。

よくある質問

以下の質問はこの記事専用に整理しており、実装内容と直接関係しています。

質問:なぜShopifyのサポート入口に適していますか?
回答:ShopifyテーマのJavaScriptは訪問者ブラウザで実行されるため、訪問者地域に応じたサポート入口を表示できます。
質問:なぜボタンにclassを使うのですか?
回答:Shopifyページには複数のサポートボタンがある場合があり、classならまとめて更新できます。
質問:LINEやWhatsAppを国別に出し分けられますか?
回答:はい。国コードごとにテキストとURLをマッピングすれば実装できます。
質問:APIが失敗した場合はどうなりますか?
回答:デフォルトのサポートリンクを残すため、ユーザーは引き続き問い合わせできます。
質問:Shopifyではどこにコードを置くべきですか?
回答:theme.liquidの前、またはサポートブロックを表示するテンプレートに配置します。