2026年最新版として、実務ベースで厳選しています。
「誕生日クーポンの施策をやりたいが、専用アプリの月額費用がかかる」「マイアカウントで生年月日を入力・修正できるようにしたい」「登録したデータをFlowで使って自動メールまで完結させたい」——この記事はそんな方のために書きました。
この記事では、こんな疑問・悩みにお答えします:
- 生年月日入力をアプリなしでマイアカウントに追加できる?
- ドロップダウン式のUIで実装できる?
- 登録した誕生日をお客様自身が修正できるようにするには?
- ポイントアプリを後から入れても干渉しない?
- Shopify Flowで毎月1日に誕生月クーポンを自動送信するには?
- Shopify EmailとKlaviyoのどちらで送ればいい?
目次
迷ったらここを見る:クイックガイド
- まず知っておくべき前提 → 「クラシックカスタマーアカウント」でのみ実装可能(新しいアカウントは非対応)
- データの保存先 → 顧客のnoteフィールドに
birthday:YYYY-MM-DD形式で保存 - ポイントアプリとの関係 → 保存場所が別(noteフィールド)なので干渉しない
- 誕生月メールの送り方 → Shopify Flow + Shopify Email(無料)またはKlaviyo
- CSVエクスポート → Note列にデータが入り、Excelで誕生日・誕生月列を分離できる
- コードをすぐ見たい → 完全コード+Flow手順はnoteで公開中(¥980)
全体の仕組みを理解する
この実装は3つのパーツが連携して動きます。
マイアカウントページ(UI実装)
お客様がドロップダウンで年・月・日を選択して「保存する」をクリック。顧客のnoteフィールドに birthday:1990-05-15 として保存される。
Shopify Flow ワークフロー①(タグ自動付与)
顧客のnoteが更新されたことを検知し、誕生月タグ(例:birth_month_05)を自動で付与する。
Shopify Flow ワークフロー②(クーポンメール送信)
毎月1日 09:00 に自動実行。今月が誕生月の顧客(birth_month_〇〇 タグあり)を抽出し、割引コードをShopify EmailまたはKlaviyoで自動送信。
「なぜnoteフィールドに保存するのか」正直に解説
Shopifyには公式の誕生日メタフィールド(customer.metafields.facts.birth_date)が存在します。しかしStorefront API(フロントエンドから)ではこのメタフィールドに直接書き込めないという制約があります。書き込みにはサーバーレス関数やプライベートアプリが必要で、初心者〜中級エンジニアには難易度が高くなります。
一方、顧客のnoteフィールドは標準のLiquidフォームから書き込めるため、追加コストゼロ・外部サーバー不要で実装できます。
| 保存先 | 実装難易度 | 外部サーバー | ポイントアプリとの干渉 | Flow・セグメントで使える |
|---|---|---|---|---|
| noteフィールド(本記事) | ★☆☆ 低 | 不要 | なし(別の場所) | タグ経由で○ |
| facts.birth_date メタフィールド | ★★★ 高 | 必要 | ポイントアプリと共用 | ◎(直接使える) |
noteフィールドへの保存は「完全ではない」実装ですが、初心者〜中級エンジニアが現実的に導入できるバランスの良い選択肢です。将来的にポイントアプリを入れたくなっても干渉しないため、後から切り替えることもできます。
実装前の必須確認:クラシックカスタマーアカウントの設定
本実装はShopifyの「クラシックカスタマーアカウント」でのみ動作します。「新しいお客様アカウント」ではLiquidファイルにアクセスできないため実装不可です。
確認手順:管理画面 →「設定」→「お客様アカウント」→「クラシック」が選択されているか確認
⚠️ 「新しいお客様アカウント」を使っている場合: 本実装は使用できません。クラシックに切り替えるとアカウントページのデザインが変わるため、切り替えの影響範囲を事前に確認してください。
実装の4つのパート概要
PART 1:マイアカウントページにドロップダウンUIを追加
Dawnの sections/main-account.liquid に生年月日入力セクションを追加します。年・月・日を別々のドロップダウンで選択する形式で、UIはShopifyのデザイントークン(CSS変数)を使うためテーマのカラーに自動で合わせられます。
保存の仕組み: 「保存する」ボタンを押すと、JavaScriptが /account にPOSTリクエストを送り、noteフィールドに birthday:1990-05-15 の形式で書き込みます。既存のnoteが他の内容を含んでいる場合も、birthday:の部分だけを更新して他の内容を保持します。
✅ お客様自身が修正できる設計: マイアカウントページにアクセスするたびに登録済みの誕生日がドロップダウンに反映されるため、「変更したい」場合はそのまま選び直して保存するだけで修正できます。
PART 2:Shopify Flow ワークフロー①(誕生月タグ自動付与)
顧客のnoteが更新されたことをトリガーに、noteに含まれる誕生月を読み取って birth_month_05(5月の場合)のようなタグを自動付与します。
誕生日を変更したときは古い誕生月タグを削除してから新しいタグを付与するため、タグが二重になる問題も起きません。
PART 3:Shopify Flow ワークフロー②(毎月1日にクーポンメール送信)
毎月1日09:00にスケジュール実行。今月の誕生月タグを持つ顧客を検索し、全員にクーポンコードをメールで送信します。
⚠️ 重要: Shopify Flowの「メールを送信する」アクションはスタッフ向け内部通知にしか使えません。お客様へのメール送信には Shopify Email(無料〜)または Klaviyo(無料〜)との連携が必要です。
PART 4:顧客管理・CSVエクスポートの活用
管理画面の「メモ」欄での確認方法・誕生月タグを使ったセグメント管理・CSVエクスポート後のExcel加工方法(誕生日列・誕生月列の分離)まで解説します。
Shopify Email vs Klaviyo:どちらで送る?
| 比較項目 | Shopify Email | Klaviyo |
|---|---|---|
| 費用 | 月1万通まで無料 以降$1/1,000通 |
月500通まで無料 以降$20/月〜 |
| デザインの自由度 | ○(テンプレートあり) | ◎(高度なドラッグ&ドロップ) |
| 開封率・クリック率トラッキング | ○(基本のみ) | ◎(詳細) |
| Shopify Flow連携 | ◎(直接連携) | ○(Flowのイベントトリガー) |
| 向いているケース | 小規模・シンプルに始めたい | 中規模以上・メールマーケをしっかりやりたい |
結論:まず無料のShopify Emailで始めて、顧客が増えてきたらKlaviyoに移行するのが現実的なルートです。
CSVエクスポートで誕生日データを取り出す方法
標準の顧客CSVエクスポートには「Note」列が含まれます。この列に birthday:1990-05-15 の値が入っています。
Excelで以下の数式を使うと、Note列から誕生日と誕生月を別列として取り出せます:
// 誕生日(YYYY-MM-DD)を取り出す
=IF(ISNUMBER(SEARCH(“birthday:”,A2)),MID(A2,SEARCH(“birthday:”,A2)+9,10),””)
// 誕生月のみ(数値)を取り出す
=IF(ISNUMBER(SEARCH(“birthday:”,A2)),VALUE(MID(A2,SEARCH(“birthday:”,A2)+14,2)),””)
※A2 = Note列のセルを指定してください。
ポイントアプリを後から導入した場合の扱い方
easyPointsやポイントポン等のポイントアプリは、Shopify公式の facts.birth_date メタフィールドを使って誕生日を管理します。本記事の実装(noteフィールド)とは保存場所が完全に別なので干渉しません。
| 用途 | 使う場所 | 干渉 |
|---|---|---|
| 本記事のFlow・クーポンメール | customer.note(birthday:) | なし |
| ポイントアプリの誕生日ポイント | metafields.facts.birth_date | なし |
ただし「お客様が2箇所で誕生日を入力する手間」が発生するため、ポイントアプリを導入した際は表示を切り替える(マイアカウントのUIをどちらか一方にする)ことを検討してください。
「そこが知りたかった」:よくある疑問に答えます
- Q. 「新しいお客様アカウント」で実装できる?
現時点では対応していません。新しいアカウントはLiquidファイルにアクセスできないため、本記事の実装方法は使用できません。クラシックカスタマーアカウントへの切り替えが必要です。 - Q. お客様が誕生日を入力しなかった場合は?
noteにbirthday:が含まれない場合、Flow①が誕生月タグを付与しないため、Flow②でのメール送信対象に入りません。入力を促す導線(マイアカウントページでの案内文・購入完了後のメール)を用意するのが有効です。 - Q. 誕生月の特定日(誕生日当日)にメールを送ることはできる?
難しいです。Shopifyのスケジュール実行は「毎月〇日」という単位が最小のため、誕生日当日(例:5月15日)に個別で送ることはできません。毎月1日に誕生月全体をまとめて送る方式(本記事の実装)が現実的です。誕生日当日送信にはKlaviyoの「Birthday Flow」機能(有料プランが必要)を使うのが最も確実です。 - Q. noteフィールドに既に他の情報を書いている顧客がいる場合は?
問題ありません。本記事のJavaScriptは既存のnoteを保持しつつbirthday:の部分だけを更新・追記する設計になっています。 - Q. 管理画面から手動で顧客のnoteに誕生日を入れることはできる?
できます。管理画面 →「顧客」→ 対象顧客 →「メモ」欄にbirthday:1990-05-15の形式で入力して保存すればFlow①が自動でタグを付与します。一括で既存顧客に設定したい場合は顧客のCSVインポートを使えます。
エンジニア目線のポイント
JavaScript側の保存処理は /account へのPOSTリクエストで行っています。Shopifyの標準アカウントフォームと同じエンドポイントを使うため、追加のAPIキーや認証が不要です。CSRFトークンは meta[name="csrf-token"] から取得し、X-CSRF-Token ヘッダーに付与しています。
noteフィールドの更新はサーバーサイドで処理されるため、JavaScriptが無効なブラウザでも既存の登録内容は表示されます(保存アクションはJS必須)。
Shopify FlowのRun codeアクションはJavaScriptのサブセットで動作します。padStart など比較的新しいメソッドも使用可能ですが、fetch や外部へのHTTPリクエストはFlow内では使えません。
詳細コードはnoteで公開しています
📝 note記事:生年月日実装+誕生月クーポンFlow完全コード集(¥980)
以下をすべてコピペで動くコードとともに解説しています:
- ドロップダウン式UIのCSS全文(Shopifyデザイントークン対応)
- 生年月日の保存・読み込み・更新JavaScriptコード全文
- main-account.liquidへの挿入コードと挿入場所の見つけ方
- Flow①:noteの更新を検知して誕生月タグを自動付与する手順
- Flow②:毎月1日にクーポンメールを自動送信する手順(Shopify Email / Klaviyo両対応)
- CSVエクスポートでの誕生日・誕生月列の取り出し方(Excel数式付き)
- よくあるエラーとトラブルシューティング5パターン
- ポイントアプリ導入時の切り替え方法
まとめ
- Shopifyのマイアカウントに生年月日入力はアプリ不要でLiquid+CSS+JSのみで実装できる
- データはnoteフィールドに
birthday:YYYY-MM-DD形式で保存され、お客様自身が修正可能 - ポイントアプリが使う
facts.birth_dateメタフィールドとは保存場所が別なので干渉しない - Flow①で誕生月タグを自動付与 → Flow②で毎月1日にクーポンメールを自動送信まで完結できる
- お客様へのメール送信はShopify EmailまたはKlaviyoとの連携が必要(Flowのメール送信は内部通知のみ)
- CSVエクスポート後のExcel数式で誕生日・誕生月列を分離できる
実装でお困りの点があればお気軽にご相談ください。
関連記事
- 【2026年最新】Shopify Flow × LINE通知を自動化する方法
- 【2026年最新】Shopifyで年齢確認・会員限定ページを実装する方法
- 【2026年最新・Dawn対応】Shopify配送日カレンダー実装ガイド
- 【2026年版】Shopify Scripts廃止→Functions移行ガイド





