CUSTOMER ACCOUNTS

新カスタマーアカウント初回サインインでstate/Webhook動作が変更

Customer.stateがENABLEDに切り替わり、customers/enableとcustomers/updateが発火するようになりました

変更前DISABLED初回サインイン後もWebhook未発火初回サインイン変更後ENABLEDcustomers/enablecustomers/update 発火全サインイン方式Email / Shop / GoogleFacebook / Apple / IdP

この変更は新カスタマーアカウント(New Customer Accounts)を利用しているすべてのShopifyストア・アプリ・テーマ開発者に影響します。2026年10月28日以降、顧客が初めてサインインした瞬間にCustomer.stateがENABLEDへ移行し、webhookが発火するようになりました。これによりレガシーアカウントと挙動が統一されます。

1変更内容のBefore / After図解

Before(変更前)顧客:DISABLED初回サインインstate: DISABLED のままWebhook未発火・has_account=falseAfter(変更後)顧客:DISABLED初回サインインstate: ENABLED に変更customers/enable + customers/update 送信 / has_account=true

2既存顧客の扱い(移行期間の注意点)

顧客の状況 stateの扱い Webhook発火 対応方針
2024年5月27日以降に一度でもサインイン済み 一括バックフィルでENABLED済み 未発火 updated_atで検索不可。Customer.stateで検索する
2024年5月27日以降サインイン未実施 DISABLED のまま 次回サインイン時に発火 初回サインインが起点。通常ロジックで対応可
今後初めてサインインする顧客 サインイン時にENABLED 通常通り発火 変更なし。既存実装がそのまま機能する

3業務ユースケース

課題
ウェルカムメール自動送信アプリが新カスタマーアカウントユーザーに対して機能しなかった
打ち手
customers/enableウェブフックを受信したタイミングでウェルカムメールを送信するロジックをそのまま活用できる。ただし2024年5月27日〜変更日までにサインイン済みの顧客にはウェブフックが届いていないため、GraphQL Admin APIでCustomer.state=ENABLEDの顧客を別途クエリしてメール対象から除外または個別対応する
効果
初回サインインのトリガーが確実に捕捉でき、ウェルカムコミュニケーションの取りこぼしを防げる
技術メモ
customers/enableウェブフックのpayloadにcustomer.idが含まれる。重複送信防止のためDB側に送信済みフラグを持つことを推奨
課題
ロイヤルティポイントアプリが新カスタマーアカウントではアカウント登録時のボーナスポイントを付与できていなかった
打ち手
customers/enableウェブフック受信を登録ボーナスのトリガーとして設定する。Email・Shop・Google・Facebook・Apple・サードパーティIdPのすべてのサインイン方式で発火するため、方式ごとの分岐が不要になる
効果
登録チャネルに関わらず確実にボーナスポイントを付与でき、顧客体験が均一になる
技術メモ
バックフィル対象(2024/5/27〜)の顧客へのポイント付与をどう扱うかはビジネスポリシーに依存。ウェブフックでは検出できないため、GraphQL AdminAPIで一括抽出して手動またはバッチで対応する
課題
Liquidテーマで customer.has_account を使った「アカウント会員限定コンテンツ」の表示が新カスタマーアカウントユーザーには機能していなかった
打ち手
変更後は初回サインインをもって customer.has_account が true を返すため、既存のLiquidコードを修正せずにそのまま動作する
効果
会員限定価格・コンテンツ・バナーが正しく表示されるようになり、アカウント登録の価値訴求が強化される
技術メモ
テーマ改修は不要だが、ステージング環境でサインインフローを再確認し、has_accountがtrueを返すことを検証することを推奨

4技術者向けポイント

影響を受けるAPI/Liquid一覧
  • GraphQL Admin API: Customer.state
  • Webhook: customers/enable, customers/update
  • Events API: customer.state イベント
  • Liquid: customer.has_account
バックフィル顧客の検索方法

2024/5/27〜の既存サインイン済み顧客はupdated_atが更新されていないケースがある。Customer.state == ENABLED でGraphQL Admin APIを使ってクエリすること。

レガシーアカウントとの挙動統一

今回の変更によりレガシー(従来型)カスタマーアカウントと新カスタマーアカウントのstate遷移・webhook発火タイミングが一致した。両者を同じロジックで扱えるようになる。

対象サインイン方式(全方式)

メールコード・Shop・Google・Facebook・Apple・サードパーティIdPのすべてで発火。方式ごとの処理分岐は不要。

多くのアプリは変更不要

customers/enableを起点にウェルカム処理・ポイント付与・CRM同期を行っているアプリは、バックフィル顧客の取りこぼしがないか確認するだけでよい。新規実装は不要なケースがほとんど。

「新カスタマーアカウントの初回サインインが正式なアカウント有効化の起点になったことで、ウェルカムメール・ポイント付与・会員限定コンテンツのすべてをレガシーアカウントと同じ仕組みで運用できます」

Source: https://shopify.dev/changelog/first-sign-ins-to-new-customer-accounts-now-set-customer-state-and-send-customers-enable | 公開日: 2026年10月28日