本文へスキップ
NextCode.ltd
開発事例

店を「お客さんと検索エンジンの目」で通したら、穴が7つあった ― PET TAG STORE、送料520円の食い違い

店を「お客さんと検索エンジンの目」で通したら、穴が7つあった ― PET TAG STORE、送料520円の食い違い

画面は普通に動いていた。それでも「送料520円」と書いて、請求は商品代だけだった。作った本人には見えない穴を、全ページを機械で読んで探した記録です。

全ページに「送料 全国一律520円」と書いてあるのに、お客さんに請求していたのは商品代だけでした。

PET TAG STOREの画面

PET TAG STORE は、NFCタグを仕込んだ手編みの首輪を、一本ずつ売る店です。店を作った最初のコミットは 2026-07-30。作ったその日のうちに、「お客さんと検索エンジンの目で、全ページを通してみよう」と思って監査をしました。

この記事は、そこで出てきた穴の話です。数えたら7つ。どれも画面は普通に動くので、作った本人は気づけない種類のものでした。

1ブラウザで眺めるのをやめた

1ページずつ目で見ていくのをやめて、テスト用のHTTPクライアントで全ページを取りに行き、HTMLをファイルに落としました。そこから題名・説明文・canonical・構造化データ・内部リンクを機械で抜きます。ブラウザを立ち上げるより確実で、store. のサブドメインもそのまま通せました。

抜いたものは、「お客さんに何が見えるか」「いくら請求されるか」で確かめるテストにして残しています。今は11本あって、見た目のクラス名には頼らない書き方にしました。デザインを作り替えても壊れないようにです。

2見つかった7つ

監査で出た7つ(店のテストに書き起こして残してあるもの)

症状原因直し方
日本語の店なのに、検索エンジンにだけ英語の題名で出る手がかりが無いときの言語を、翻訳が欠けた語を埋めるための言語(英語)に落としていた本来の表示言語(本番は日本語)に落とし、同じURLが言語で変わると宣言する Vary を付けた
左メニューの柄を押しても一覧が変わらないメニューは ?belt=、受け側は ?pattern= を読んでいた両方受けるようにした
全ページのフッターに404のリンクがあるリンクを「今いるホスト」で組み立てていて、店では別の道に吸われた本体サイトの絶対URLで固定した
かごの画面だけメニューもフッターも消えるかごだけ店用ではない土台を使っていた店の土台に寄せた
「送料520円」と書いて、請求は商品代だけ決済に渡す額を、商品代の合計のままにしていた送料を1か所の設定から出し、表示も請求もそこから作る
本体サイトから店へのリンクが1本も無い別ホストなので誰も気づかない。検索エンジンから見ると店は孤立していた本体サイトに店頭の実物3本と「首輪を見る」を置いた
題名が「迷子掲示板 | PET TAG STORE | PET TAG STORE」になる店名を足すかの判定が、半角の | しか見ていなかった全角の | も見るようにした

1番目だけ少し説明します。検索ロボットは、言語の希望(Accept-Language)を送ってきません。手がかりが何も無いとき、店は翻訳の予備言語である英語に落ちていて、ロボットだけが Handmade NFC collars という英語の題名と、日本語の説明文という、いちばん困る組み合わせを受け取っていました。

直したあとの本番を、今日(2026-10-15)測りました。言語の希望を付けずに取ると題名は「迷子札つき手編みNFC首輪の通販 | PET TAG STORE」、Accept-Language: en を付けると「Handmade NFC collars | PET TAG STORE」。応答には Vary: Accept-Language も付いています。

3いちばん怖かったのは、送料

7つのうち、お金に直結するのは5番目です。画面には「送料 全国一律520円」。でも決済に渡す金額は商品代の合計。特商法の表示と請求が食い違うし、1件売るたびに520円を店が黙って被ることになります。

気づいたきっかけは地味で、テストを書こうとして「かごの合計はいくらであるべきか」を文にしようとしたら、書けなかったんです。表示と請求が、別々の場所から出ていました。

直し方は、送料を設定の1か所にして、画面の表示も、決済に渡す額も、注文の控えも、そこから作る形です。設定のすぐ上には、自分への警告を残しました。表示だけ「送料520円」と書いて請求は商品代だけ、という状態を作らないこと、と。

この時点(2026-07-31)の既定値は520円でした。テストは、かごの画面・まとめ買い(送料は1回だけ)・単品購入・商品ページの支払いボタンの4か所で、送料込みの額が出ることを確かめます。

4その後、送料は0円になった

2026-10-15 に見た店は、首輪が¥6,800で「税込・送料無料」。特商法のページにも「送料無料(商品代金以外にかかる費用はありません)」とあります。送料の既定値が520から0に変わったのは、2026-08-03 07:56 のコミットです。

表示と請求が1か所から出る形にしておいたので、0にした瞬間に、かごも商品ページも特商法も、全部が一度に「送料無料」へ変わりました。ここは直しておいてよかった点です。

なぜ0にしたのか。正直に言うと、その理由を残した記録が手元に見つかりません。ただ、その24分前(2026-08-03 07:32)に更新した値付けの調査メモはこうでした。

2026年8月に5つの市場で調べた価格の境目(税込・自分の調査メモ。今のモールの値段とは違うかもしれません)

境目金額出どころ
刻印だけの迷子札の最頻値1,080円楽天745件の分布
迷子ページ付きの下限2,816円Amazonの出品
手編み首輪の総額の上限6,800円ハンドメイドモールの最高額が6,200円+送料600円。それより高い首輪は1件も見つからなかった
首輪+NFC+サービスのセットの下限9,680円専門店の出品

7,320円(6,800円+送料520円)より、送料込みの一本値にした方がいい。メモの結論はそうでした。実際の店は、7,300円ではなく6,800円・送料無料。メモの提案とは違う数字になっていて、決めた理由は断言できません。

5法規ページは、空欄を「準備中」と出す作りにした

通販には特商法の表記が要ります。住所・責任者・電話は表示が義務なので、確定するまでのあいだ、それらしい嘘を入れるより空欄の方が安全だと判断しました。空の項目は画面に「準備中」と出し、値は設定の1か所だけに置いて、ページには直書きしません。

今の /law を見ると、販売業者・責任者・所在地・電話番号・受付時間まで入っていて、「準備中」の文字は0件でした(2026-10-15 に確認)。

6古いメモを信じて、直したものを直しに行きかけた

もう一つ。メモに「未解決」と書いていた3件を、2026-08-02 に見直したら、コードではとっくに直っていました。送料もその1つです。メモが古くなると、直したものをもう一度直しに行きかねません。それ以来、直す前にコードを読むことにしました。

テストにも罠がありました。テスト用のHTTPクライアントは、何も指定しないと Accept-Language: en-us を送ります。検索ロボットは送りません。ロボットを再現するには、空の値を自分で付ける必要があって、これを知らないと、ロボットを確かめたつもりで英語のブラウザを再現するテストになってしまいます。

7写真の正直さは、まだ人の手に頼っている

2026-08-02 に、出品中の10商品すべての説明文へ「着用イメージはAI生成/現物は未使用の新品」の断りを足しました。今の商品ページにも「実際に犬に着けて撮影したものではありません」と出ています(10商品のうち1ページで確認)。

ただ、この断りは自動では入りません。新しく首輪を登録するたびに、人が足す必要があります。入れ忘れを防ぐ仕組みは、まだありません。

8まだ分からないこと

  • 何本売れたか。数字をここで確かめていないので、書きません
  • 題名を直したあと、検索結果で日本語の題名が並んでいるか。Search Console では見ていません
  • 送料を0にして、売れ行きが変わったか

店と本体サイトをあわせて、いま441本のテストが通っています(2026-10-15 に実行・3,757個の検証・13.8秒)。それでも、お客さんが何を感じたかは、テストには映りません。

店の話の続きは、数字が取れたらまたここに書きます。ほかの作品は 制作実績 に、開発の記録は ブログ にまとめています。通販を作る前に、全ページを通して見る相手が欲しい方は、お気軽に相談してください。

関連プロダクト

PET TAG STOREの詳細を見る

この記事を書いた人

NextCode(沖縄県宜野湾市)は、iOSアプリ・ホームページ/LP・NFCデジタル名刺・AI業務自動化を作っている開発スタジオです。ここで書いているのは、実際に作って公開したものと、その過程で詰まったことだけです。

お問い合わせフォームは24時間受け付けています。

この記事が役に立ったらシェアしてください