Shopify コーディング

【Shopifyカスタマイズ】会員登録フォームに「業種」項目を追加して顧客管理を効率化する方法

Shopifyストアを運営していると、「会員登録時にもっとお客様の情報を知りたい」と思うことはありませんか?例えば、お客様の「業種」が分かれば、法人向けの特別な案内を送ったり、業種別の人気商品を分析したりと、マーケティングの幅が大きく広がります。

この記事では、Shopifyの会員登録フォームに独自の選択項目(今回は「お客様の業種」)を追加し、その情報を顧客管理に活かせる「タグ」として保存、さらにその項目を「必須入力」にするまでの一連の手順を、コードの知識がない方でもコピペで実装できるよう分かりやすく解説します。


完成イメージ

最終的に、会員登録フォームに以下のようなドロップダウンリストが追加され、登録された情報は顧客管理画面の「タグ」に自動で記録されるようになります。

▼会員登録フォームの表示
account/registerのページ
※名前、アドレス、パスワードは元々入っている前提(「必須」はCSS)

▼顧客管理画面でのタグ表示


STEP1: 編集するテーマファイルを開く

まずは、カスタマイズの土台となる会員登録ページのコードファイルを開きます。

  1. Shopify管理画面にログインし、[オンラインストア] > [テーマ] へ進みます。
  2. カスタマイズしたいテーマの […] をクリックし、[コードを編集] を選択します。
  3. 左側のファイル一覧から sections フォルダを探し、その中にある main-register.liquid をクリックして開きます。
    (テーマによっては templates フォルダ内の customers/register.liquid の場合もあります)

STEP2: フォームに項目を追加し、タグとして保存する

次に、main-register.liquid のコードを直接編集していきます。
これまでの試行錯誤の結果、テーマに依存せず最も確実に動作する方法は「JavaScriptを使って、選択された情報をタグとして登録する」というやり方でした。

以下の手順でコードを貼り付けてください。

  1. main-register.liquid のコードの中から、{%- form 'create_customer', ... -%} という記述がおそらくあるので、探します。
    これがフォームの本体です。
  2. フォームの終了タグである {%- endform -%} のすぐ上に、以下のコードブロックをすべてコピーして貼り付けます。
    ※付けたい位置によって分割してください
<!-- ▼▼▼ ここからがタグ保存用のコードブロック ▼▼▼ -->
    <div class="field field--with-error">
      <label class="field__label">個人 / 法人・店舗 <span aria-hidden="true" class="required">必須</span></label><br>
      <!-- ↓ ラジオボタンが変更されたらJavaScriptの関数を実行するように変更 -->
      <input name="contact[customer_type_dummy]" type="radio" value="法人・店舗" checked onchange="updateCustomerTags()" />法人・店舗<br />
      <input name="contact[customer_type_dummy]" type="radio" value="個人" onchange="updateCustomerTags()" />個人<br />
    </div>

    <div class="field">
      <label class="field__label" for="RegisterForm-Industry">お客様の業種 <span aria-hidden="true" class="required">必須</span></label>
      <!-- ↓ selectメニューが変更されたらJavaScriptの関数を実行するように変更 -->
      <select name="contact[industry_dummy]" id="RegisterForm-Industry" onchange="updateCustomerTags()">
        <option value="" disabled selected>選択してください</option>
        <option value="製造業">製造業</option>
        <option value="建設業・工事業">建設業・工事業</option>
        <option value="自動車・二輪車・自転車関連業">自動車・二輪車・自転車関連業</option>
        <option value="運輸・通信業">運輸・通信業</option>
        <option value="農・林・水産業">農・林・水産業</option>
        <option value="飲食業">飲食業</option>
        <option value="サービス業">サービス業</option>
        <option value="卸売・小売業">卸売・小売業</option>
        <option value="医療・福祉・介護関連業">医療・福祉・介護関連業</option>
        <option value="教育・研究機関">教育・研究機関</option>
        <option value="電気・ガス・熱供給・水道業">電気・ガス・熱供給・水道業</option>
        <option value="不動産業">不動産業</option>
        <option value="金融・保険業">金融・保険業</option>
        <option value="鉱業">鉱業</option>
        <option value="公務(他に分類されないもの)">公務(他に分類されないもの)</option>
        <option value="分類不能の産業">分類不能の産業</option>
      </select>
    </div>

    <!-- タグ情報をShopifyに渡すための非表示の入力欄 -->
    <input type="hidden" id="customer_tags" name="customer[tags]" value="">

    <script>
      function updateCustomerTags() {
        // 「個人/法人・店舗」で選択されている値を取得
        const customerTypeInput = document.querySelector('input[name="contact[customer_type_dummy]"]:checked');
        const customerTypeTag = customerTypeInput ? customerTypeInput.value : "";

        // 「お客様の業種」で選択されている値を取得
        const industrySelect = document.getElementById('RegisterForm-Industry');
        const industryTag = industrySelect.value ? industrySelect.value : "";

        // 取得した2つの値をカンマで連結して、1つの文字列にする
        const tagsToApply = [customerTypeTag, industryTag].filter(Boolean).join(', ');

        // 非表示フィールド(customer_tags)のvalueに作成した文字列をセットする
        document.getElementById('customer_tags').value = tagsToApply;
      }

      // ページが読み込まれた時に、最初の状態(デフォルト値)をタグに反映させる
      document.addEventListener('DOMContentLoaded', function() {
        updateCustomerTags();
      });
    </script>
    <!-- ▲▲▲ ここまでを追加 ▲▲▲ -->


    <button>
      {{ 'customer.register.submit' | t }}
    </button>

ポイント解説このコードは、見た目の選択肢(ラジオボタンやドロップダウン)と、Shopifyにデータを送るための非表示の<input name="customer[tags]">フィールドを連携させています。ユーザーが何かを選択するたびに、JavaScriptがその値を読み取り、非表示フィールドにカンマ区切りのテキストとしてセットしています。Shopifyはこのcustomer[tags]という名前のフィールドを見つけると、その中身を自動でタグとして登録してくれるのです。


STEP3: 追加項目を「必須入力」にする

このままでは「お客様の業種」を選ばなくても登録できてしまいます。これを防ぐために、簡単な入力チェック機能を追加しましょう。

  1. 先ほど編集したコードの中から、{%- form 'create_customer', ... -%} の行を探します。
  2. この行に onsubmit="return validateRegistrationForm();" という記述を追加します。

▼変更前

{%- form 'create_customer', novalidate: 'novalidate' -%}

▼変更後

{%- form 'create_customer', novalidate: 'novalidate', onsubmit: 'return validateRegistrationForm();' -%}
  1. 次に、STEP2で貼り付けた<script>タグの中に、入力チェック用の関数を追加します。<script>と</script>の間ならどこでもOKです。
// ▼▼▼ 新しく追加した必須チェック用の関数 ▼▼▼
      function validateRegistrationForm() {
        const industrySelect = document.getElementById('RegisterForm-Industry');
        if (industrySelect.value === "") {
          alert('お客様の業種を選択してください。');
          return false; // formの送信を中止
        }
        return true; // formの送信を許可
      }

【補足】「クラシック顧客アカウント」の確認

このカスタマイズは、Shopifyの「クラシック顧客アカウント」設定で機能します。もしうまく動作しない場合は、以下の設定を確認してください。

  1. 管理画面の [設定] > [顧客アカウント] に移動します。
  2. アカウントのログイン環境で「以前のバージョン」が選択されていることを確認します。
    左の「お客様アカウント」になっている場合は、「以前のバージョン」に切り替えて保存してください。

まとめ

お疲れ様でした!以上の手順で、Shopifyの会員登録フォームに独自の項目を追加し、顧客情報として活用する準備が整いました。

今回追加したタグを使えば、「製造業のお客様だけに新商品の先行案内を送る」「サービス業のお客様向けのメルマガを配信する」といった、よりターゲットを絞った効果的なマーケティング施策が可能になります。ぜひ、あなたのストア運営にお役立てください。

-Shopify, コーディング
-,

Copyright© ゆるふわなねこ , 2025 All Rights Reserved.