example-commerce-host.com

サンプル ドメイン · 実際のサービスではありません · ブラウザでアクセスするとこのページが表示されます · API リクエストには 410 Gone を返します

サンプル ドメイン · 実際のサービスではありません

example-commerce-host.com

example-commerce-host.com は、複数のドメインにまたがる訪問者の測定に関する Google のドキュメントで、 サードパーティのショッピング カートの代わりとして使われたサンプル ドメインです。example-petstore.com のショップが、 example-commerce-host.com/example-petstore などのカートへ訪問者を送るという設定です。カート、チェックアウト、決済ページはありません。 この名前がコードや設定に含まれている場合は、カート プロバイダから提供されたアドレスに置き換えてください。

キー、トークン、パスワード、支払い情報をここに送信しましたか? すぐに対処してください。

example-commerce-host.com を指すコードからのリクエストは、実際のショップや決済プロバイダではなくこのサーバーに届きます。 リクエストに含まれる API キー、アクセス トークン、パスワード、セッション Cookie、カード情報もすべて届いています。 これらは漏えいしたものとして扱ってください。

  1. キー、トークン、パスワードを発行したサービスで無効にし、新しいものを発行します。
  2. 認証情報は、コードではなく設定やシークレット マネージャーで管理します。
  3. 実際のカード情報を送信した場合は、カード発行会社に連絡します。
  4. コード内のアドレスを修正し、新しい認証情報が実際のサービスにのみ送信されるようにします。

GitHub、AWS、Google Cloud、Stripe などでキーを無効にする場所

この名前の由来

以下の各サンプルでは、公開当時の古いスニペットと、代わりに使用するコードを示しています。 ハイライトされた部分が置き換える箇所です。日付とアーカイブされた出典は経緯の全文に まとめています。

Google Analytics · 2009–2024

従来のアナリティクスにおけるショップとサードパーティのカート

従来のアナリティクス(ga.js)で複数のドメインをトラッキングする Google のガイドでは、 www.example-petstore.com のショップから www.example-commerce-host.com/petStoreCart のカートへ訪問者を送っていました。

古いサンプル

<form action="…"
      onSubmit="pageTracker._linkByPost('www.example-commerce-host.com/petStoreCart/begin.php');">

_gaq.push(['_setCookiePath', '/myStore/']);
_gaq.push(['_cookiePathCopy', '/myCart/']);

従来のアナリティクスとユニバーサル アナリティクスは、データを収集しなくなりました。このコードを削除し、フォームとリンクが 実際のチェックアウトを指すようにしてください。完全なアドレスを含むフォームやリンクをコピーしたままにしていると、 アドレスに __utma 形式のパラメータが付いた状態で、訪問者がここに送られることがよくあります。

代わりに使用するコード

<!-- Google tag (gtag.js) for Google Analytics 4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

ガイド全文: 従来のアナリティクスから Google Analytics 4 へ

Google Analytics 4 · Tag Manager · 現行

ショップとカートをまとめて測定する

複数のドメインにまたがる測定に関する Google の現行のガイドでも、example-petstore.com のウェブサイトと example-commerce-host.com/example-petstore のカートが紹介されています。コードサンプルでは example.com が使われています。 Google Analytics 4 では、ドメインは管理画面の Admin › Data streams › 対象のウェブ ストリーム › Configure tag settings で設定します。

  • Configure your domains: ショップとカート プロバイダのドメイン。
  • List unwanted referrals: 参照元として表示される決済ページ。

この設定がないと、ショップからカートに移動した顧客が 2 回カウントされ、その売上とショップを見つけた経路との関連付けが失われます。 Google Tag Manager では、同じ設定が Google tags › 対象のタグ › Show all にあります。

コードで設定する場合

// Only if you configure cross-domain measurement in code instead of in the admin
gtag('set', 'linker', {
  'domains': ['www.example.com', 'checkout.example.net']
});

ステップごとのガイド: クロスドメイン測定 · Google Tag Manager

API · スクリプト

API クライアントとスクリプト

本文付きのリクエストや API 形式のパスへのリクエストは、このドメインをアドレスとして使用しているコードから送られています。 これらのリクエストには、JSON による説明とともに 410 Gone を返します。

代わりに使用するコード: アドレスを設定から読み込む

# Python: read the address from configuration, not from the code
import os
BASE_URL = os.environ["API_BASE_URL"]

// JavaScript / Node.js
const baseURL = process.env.API_BASE_URL;

ガイド全文: API クライアントと SDK の設定

姉妹ドメイン

ショップ側: example-petstore.com

これらのサンプルに登場するショップと、それが使われているほかの箇所(サイトリンク検索ボックスのマークアップ、 Search Console でのサイトの移転)については、example-petstore.com で説明しています。

クイック チェックリスト

  • コード、テンプレート、テーマ、タグマネージャーで example-commerce-host と example-petstore を検索します。
  • カートのアドレスを、カート プロバイダから提供されたチェックアウトのアドレスに置き換えます。
  • 従来のアナリティクスとユニバーサル アナリティクスのコードを削除し、Google Analytics 4 にはショップのドメインとカート プロバイダのドメインを登録します。
  • ここに送信されたキー、トークン、パスワードはすべて再発行します。
  • すべてが正しい場所を指していれば、サイトやコードからこのドメインに何も届かなくなります。

ステップごとのガイド

サンプル ドメインが見つかったプラットフォームのガイドを開いてください。

Google Analytics 4: クロスドメイン測定
  1. Google アナリティクスで Admin を開き、Data streams に移動します。対象のウェブ ストリームを選択します。
  2. Configure tag settings › Configure your domains を開きます。example-petstore.com と example-commerce-host.com を削除し、ショップや決済プロバイダなど、実際に所有または使用しているドメインを追加します。
  3. Configure tag settings に戻り、List unwanted referrals を開いて、決済プロバイダなど新しいセッションを開始させたくない参照元を追加します。最大 50 件まで登録できます。
  4. 保存します。変更は、このストリームを使用するすべてのページの Google タグに適用されます。

管理画面よりコードで設定したい場合

// Only if you configure cross-domain measurement in code instead of in the admin
gtag('set', 'linker', {
  'domains': ['www.example.com', 'checkout.example.net']
});

確認: 自社のドメインから別の自社ドメインへのリンクをクリックします。リンク先ページのアドレスに _gl= が含まれていれば正常です。Admin › DebugView(Tag Assistant またはデバッグモードを有効にした状態)で、訪問が 1 つのセッションとして継続していることを確認します。

ドキュメント: Set up cross-domain measurement · ガイド全文を読む

Google Tag Manager
  1. Tag Manager で Google tags を開き、対象の Google タグを選択して Show all を選びます。
  2. Configure your domains では自社のドメインだけを残します。無視すべき参照元には List unwanted referrals を使用します。
  3. Tags と Variables で example-petstore、example-commerce-host、_gaq、pageTracker を検索します。従来のアナリティクスやユニバーサル アナリティクスのコードを含む古いカスタム HTML タグは削除します。
  4. Preview でテストしてから Submit を選び、新しいコンテナ バージョンを公開します。

確認: Preview で、Google タグがすべてのページで配信され、サンプル ドメインを参照するタグがないことを確認します。自社ドメイン間のリンクには _gl= が付きます。

ドキュメント: Google tag settings in Tag Manager · ガイド全文を読む

従来のアナリティクスやユニバーサル アナリティクスの古いコード
  1. テンプレートで _gaq、pageTracker、ga.js、analytics.js、ga('create'、urchin を検索します。
  2. _link や _linkByPost を含む onclick ハンドラと onsubmit ハンドラも含め、ブロック全体を削除します。「See my pet store」や「Continue Shopping」などのサンプルのリンクは、自社のページを指すように変更するか削除します。
  3. Google Analytics 4 用の Google タグを設置します(下記のスニペット)。Google Tag Manager から追加することもできます。
<!-- Google tag (gtag.js) for Google Analytics 4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>

確認: ページのソースを表示し、ga.js、analytics.js、サンプル ドメインが含まれていないことを確認します。Google Analytics 4 の Reports › Realtime に自分の訪問が表示されます。

ドキュメント: Universal Analytics has been replaced · ガイド全文を読む

WordPress と SEO プラグイン
  1. Yoast SEO、Rank Math、All in One SEO は、自社のアドレスからサイトのスキーマを生成するため、サンプル ドメインは使用しません。それでも検索アクションを削除したい場合は、Yoast では add_filter( 'disable_wpseo_json_ld_search', '__return_true' );、Rank Math では rank_math/json_ld/disable_search、All in One SEO では Search Appearance › Advanced › Enable Sitelinks Search Box をオフにします。
  2. SEOPress はバージョン 8.1(2024年9月)で検索ボックスのマークアップを削除しました。プラグインを更新してください。
  3. サンプル ドメインは通常、手動で貼り付けたブロックに由来します。テーマの header.php、「カスタム head コード」や「ヘッダー スクリプト」の欄、ページの head にコードを挿入するプラグインを確認してください。
  4. そのブロックを正しい WebSite マークアップ(下記のスニペット)に置き換えます。SEO プラグインがすでに出力している場合は削除します。
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Your site name",
  "url": "https://www.example.com/"
}
</script>

確認: ホームページのソースを表示し、自社の名前とアドレスを含む WebSite ブロックが 1 つだけあることを確認します。Schema Markup Validator でもチェックしてください。

ドキュメント: Yoast: SearchAction · ガイド全文を読む

手動で追加した構造化データ
  1. example-petstore.com を含む <script type="application/ld+json"> ブロック(または microdata)を探します。
  2. url を自社のホームページに置き換え、name に自社のサイト名を設定します。Google はサイトリンク検索ボックスを表示しなくなったため、potentialAction / SearchAction の部分は削除してかまいません。
  3. WebSite ブロックはホームページにのみ配置します。
  4. Search Console で、ホームページに対して URL Inspection › Request indexing を実行します。
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Your site name",
  "url": "https://www.example.com/"
}
</script>

確認: Schema Markup Validator に、自社の name と url を持つ WebSite アイテムが表示されることを確認します。リッチリザルト テストはサイト名に対応していません。

ドキュメント: Site names in Google Search · ガイド全文を読む

Search Console: サイトの移転
  1. 旧ドメインと新ドメインの両方を、同じ Search Console アカウントでドメイン プロパティとして確認します。
  2. 旧アドレスをすべて、対応する新アドレスへ 301 リダイレクトし、リダイレクトを 180 日以上維持します。
  3. 旧プロパティで Settings › Change of address を開き、新しいプロパティを選択します。
  4. 新しいサイトの canonical、サイトマップ、hreflang にサンプルのアドレスが残っていないか確認し、サイトマップを再送信します。

確認: Search Console でアドレス変更リクエストが処理中と表示され、新しいプロパティに表示回数が記録され始めることを確認します。

ドキュメント: Change of Address tool · ガイド全文を読む

API クライアント、SDK、スクリプト
  1. アドレスが設定されている場所を特定します。コード内のベース URL やホスト、設定ファイル、環境変数、Postman 環境、SDK のコンストラクタなどです。
  2. アドレスを設定に移し(下記のスニペット)、実際のサービスを指すようにします。
  3. このドメインに送信されたキー、トークン、パスワードはすべて無効にし、それらを発行したサービスで新しいものを発行します。
  4. 設定されたアドレスに example- が含まれている場合に失敗するチェックを追加し、再発を防ぎます。
# Python: read the address from configuration, not from the code
import os
BASE_URL = os.environ["API_BASE_URL"]

// JavaScript / Node.js
const baseURL = process.env.API_BASE_URL;

確認: リクエストが実際のサービスに届き、成功することを確認します。コードからのリクエストはここに届かなくなります。このドメインはそのようなリクエストに 410 Gone を返します。

ドキュメント: OWASP Secrets Management · ガイド全文を読む

概要: プラットフォーム別の修正方法

場所表示される内容対処方法
従来のアナリティクス(ga.js)またはユニバーサル アナリティクス(analytics.js)これらの名前を含む _setDomainName、_setAllowLinker、_link、_linkByPost、または ga('linker:autoLink', …)onclick / onsubmit ハンドラやサンプルのリンクも含め、古いスニペットをすべて削除し、Google Analytics 4 用の Google タグを設置してください。ユニバーサル アナリティクスは 2023年7月1日にデータの処理を停止しました。 Universal Analytics has been replaced
Google Analytics 4ドメインリストにこれらの名前がある、またはレポートに自己参照が表示されるAdmin › Data streams › 対象のウェブ ストリーム › Configure tag settings › Configure your domains で、自社のドメインだけを残してください。不要な参照元は List unwanted referrals に追加します。 Set up cross-domain measurement
コード内の Google タグ(gtag.js)gtag('set', 'linker', {'domains': ['example-petstore.com']}) またはハードコードされた cookie_domainlinker.domains には自社のドメインを指定してください。cookie_domain は省略するか、'auto' に設定します。 Measure activity across multiple domains
Google Tag ManagerGoogle タグのドメインリスト、または古いカスタム HTML タグGoogle tags › 対象のタグ › Show all › Configure your domains / List unwanted referrals を開きます。カスタム HTML タグと変数で古いスニペットを検索し、Preview でテストしてください。 Google tag settings in Tag Manager
手動で追加した構造化データ(JSON-LD、microdata)"url": "https://www.example-petstore.com/"、または query. や host.example-petstore.com を指す targeturl には自社のホームページを、name には自社のサイト名を指定してください。SearchAction は削除してかまいません。Schema Markup Validator で確認してください(リッチリザルト テストはサイト名に対応していません)。 Site names in Google Search
Yoast SEOサイトのスキーマ内の検索アクションYoast は自社のサイトアドレスを使用します。削除するには add_filter( 'disable_wpseo_json_ld_search', '__return_true' ); を追加します。 Yoast: SearchAction
Rank Mathサイトのスキーマ内の検索アクションRank Math は自社のサイトアドレスを使用します。削除するには、フィルタ rank_math/json_ld/disable_search を使用します。 Rank Math: sitelinks search box schema
All in One SEOサイトのスキーマ内の検索アクションSearch Appearance › Advanced › 「Enable Sitelinks Search Box」をオフにします。 AIOSEO: sitelinks search box
SEOPress—検索ボックスのマークアップはバージョン 8.1(2024年9月)で削除されました。プラグインを更新してください。 SEOPress changelog
Search Consoleサイト移転、canonical、サイトマップ、hreflang で使用されているサンプルのアドレスアドレス変更ツールは、所有しているドメイン プロパティ間でのみ機能し、301 リダイレクトを 180 日以上維持する必要があります。自社サイトの canonical、サイトマップ、hreflang を修正してから、サイトマップを再送信してください。 Change of Address tool
API クライアント、SDK、スクリプトこれらの名前のいずれかを指すベース URL やホスト(多くの場合 Authorization ヘッダー付き)ベース URL を設定(環境変数または設定ファイル)に移し、実際のサービスを指すようにしてください。ここに送信されたキーはすべて無効にしてください。 OWASP Secrets Management

自分のコードで探す

テンプレートやテーマファイルも含め、プロジェクト全体で次の 2 つの名前を検索してください。

grep -rniE "example-(petstore|commerce-host)\.com" .

コードに表示されない箇所も確認してください。ホームページのレンダリング後の HTML(ソースを表示して検索)、Google Tag Manager コンテナのカスタム HTML タグと変数、CMS やテーマの「カスタム head コード」欄、アナリティクス プラグインや SEO プラグインの設定です。

よくある質問

example-commerce-host.com とは何ですか?

サンプル ドメインです。複数のドメインにまたがる訪問者の測定に関する Google のドキュメントで、サードパーティのショッピング カートの代わりとして使われています。example-petstore.com のショップが、example-commerce-host.com/example-petstore などのアドレスのカートへ訪問者を送るという設定です。

example-commerce-host.com は実在するショッピング カートや決済サービスですか?

いいえ。カート、チェックアウト、決済ページはなく、ここで購入や支払いをすることはできません。このドメインのどのアドレスにアクセスしても、このページが表示されます。

ショップからの訪問者やリクエストが example-commerce-host.com に届くのはなぜですか?

サンプルのカートのアドレスが、リンク、フォーム、トラッキング スニペット、スクリプトなどにコピーされたまま置き換えられていないためです。カート プロバイダから提供されたチェックアウトのアドレスに置き換えてください。

カード情報、キー、パスワードを example-commerce-host.com に送信してしまいました。どうすればよいですか?

漏えいしたものとして扱ってください。キー、トークン、パスワードは発行したサービスで無効にし、新しいものを発行します。実際のカード情報を送信した場合は、カード発行会社に連絡してください。キーを無効にできるのは、発行したサービスだけです。

Google Analytics 4 で、ショップとカート プロバイダをまたがる訪問者を測定するにはどうすればよいですか?

管理画面の Admin、Data streams、対象のウェブ ストリーム、Configure tag settings、Configure your domains の順に開き、ショップのドメインとカート プロバイダのドメインを入力します。

1 人の顧客が 2 人のユーザーとしてカウントされたり、自社のショップが参照元として表示されたりするのはなぜですか?

クロスドメイン測定が設定されていないか、誤ったドメインが登録されているためです。Configure your domains にショップとカート プロバイダを登録し、決済ページなどの不要な参照元を List unwanted referrals に追加してください。

/petStoreCart、/myStore/、/myCart/ とは何ですか?

同じサンプルに登場する架空のパスです。ペットショップのカートと、1 つのドメイン上で別々のフォルダに置かれたショップとカートを表しています。いずれも実在せず、どれもこのページにつながります。

example-zoohandlung.de も同じサンプルですか?

はい。ドイツの試験対策教材では、ペットショップが www.example-zoohandlung.de に置き換えられ、カートは www.example-commerce-host.com/example-zoohandlung/ のまま残されました。

example-petstore.com とは何ですか?

姉妹サンプル ドメインで、同じサンプルのショップ側にあたります。example-petstore.com をご覧ください。

出典