Shopify IDをPOS会員番号として活用する

オンラインとオフラインで顧客を紐付けるためのID設計アプローチ

顧客ID会員番号マッピング紐付け
読了時間: 10分

この記事について

オンラインとオフラインで顧客を紐付けるために、Shopifyの顧客IDをPOSの会員番号として使用するアイデアを採用しました。この設計判断の背景と実装方法を解説します。

課題と解決策

直面した課題

別々のID体系
詳細ShopifyとPOSはそれぞれ独自のIDを持っている
紐付けの必要性
詳細同一顧客を両システムで特定したい
新規システム回避
詳細ID管理のための新システムを作りたくない
運用負荷の軽減
詳細手動でのID対応付けは非現実的

解決策: Shopify IDを会員番号に

IDマッピングの考え方
Shopify側

顧客ID = gid://shopify/Customer/8840734670934

数字部分を抽出

8840734670934(Shopify IDの数字部分)

POS側

会員番号(customerNo)= 8840734670934

照合時

Shopify ID → 数字抽出 → POS会員番号で検索 → 顧客特定

なぜこのアプローチを選んだのか

他の選択肢との比較

方式3を選んだ理由

  • シンプルさ: 追加のシステムやデータベースが不要
  • 信頼性: Shopifyが発行するIDは確実にユニーク
  • 運用容易性: 対応表のメンテナンスが不要
  • 障害耐性: 単純な仕組みなので障害点が少ない

Shopify顧客IDの構造

GraphQL形式のID

Shopifyの顧客IDは、GraphQL APIでは以下の形式で返されます。

プレフィックス
gid://
説明Global ID プレフィックス
プラットフォーム
shopify
説明プラットフォーム名
リソース種別
Customer
説明リソースの種類
数字ID
8840734670934
説明これを会員番号として使用

形式: gid://shopify/Customer/8840734670934

数字部分の抽出

ID抽出の流れ
入力

gid://shopify/Customer/8840734670934

抽出処理

最後の "/" 以降を抽出

出力

8840734670934(17桁程度の数字)

ポイント: この数字がPOSの会員番号になる

POSへの会員番号登録

登録タイミング

オンライン会員登録

顧客がオンラインで会員登録を完了

Shopify顧客作成

Shopify Admin APIで顧客を作成、IDが発番される

数字部分抽出

GraphQL形式のIDから数字部分を抽出

POS顧客作成/更新

抽出した数字を会員番号としてPOSに登録

POS側のデータ構造

会員番号
8840734670934
備考Shopify顧客IDの数字部分
氏名
山田 太郎
備考-
メールアドレス
yamada@example.com
備考-
ポイント残高
1250
備考-
会員ランク
ゴールド
備考-

ポイント: 会員番号フィールドを「Shopify IDの格納場所」として活用。POSの標準機能を流用しているので追加開発は最小限

照合時の処理

ポイント取得時の流れ

照合処理の流れ
オンラインでログイン

セッションにShopify顧客IDが保存されている

ポイント残高リクエスト

Shopify ID: gid://shopify/Customer/8840734670934

数字部分を抽出

8840734670934

POSで会員番号検索

会員番号 = 8840734670934 で検索

顧客データ取得

ポイント残高: 1250pt

結果を返却

画面にポイント表示

この設計の利点

開発面

追加DB不要
詳細対応表のためのデータベースを作らなくてよい
シンプルなロジック
詳細文字列からの数字抽出のみで照合可能
障害点が少ない
詳細仕組みがシンプルなので壊れにくい
保守容易性
詳細理解しやすく、引き継ぎも容易

運用面

自動紐付け
詳細登録時に自動で紐付けが完了
手動作業不要
詳細ID対応付けの手作業が発生しない
即時利用可能
詳細登録完了時点で店舗でも利用可能
データ整合性
詳細Shopifyがマスターなので一貫性が保たれる

考慮事項

会員番号の桁数

Shopify顧客ID
内容最大18桁程度の数字
POSの会員番号フィールド
内容確認が必要

事前確認ポイント:

  • POSの会員番号は何桁まで対応?
  • 数字のみ?英数字も可?
  • 先頭ゼロの扱いは?
  • POS側のフィールド仕様を確認し、Shopify IDが収まることを確認する

既存POS会員の扱い

既存会員の対応
オンライン開始前からの店舗会員

既存の会員番号: 00001(連番)

オンライン登録時

メールで照合 → 既存会員発見 → 会員番号をShopify IDに上書き

上書き後

新会員番号: 8840734670934、ポイント残高: そのまま維持

補足: 古い会員番号は履歴として別フィールドに保存も検討

この仕組みがもたらす効果

システム設計として

  • 追加の複雑性を導入せずに紐付けを実現
  • Shopifyをマスターとした一貫性のあるデータ管理
  • 将来の拡張(他システム連携)にも対応しやすい

ビジネスとして

  • オムニチャネル体験の基盤が確立
  • どのチャネルでも同一顧客として認識
  • 顧客データの統合分析が可能に

関連記事