Cart attributesが注文データに反映されない現象について

AI-generated summary

主題: Cart attributes(配送希望日・時間)が注文データの「追加の詳細」に不規則に反映されない。未選択時もデフォルト(例:「希望なし」)が入る設計だが、空欄になる注文がある。

実装状況: カートページでflatpickrにより最短配送日を商品ごとに動的設定。チェックアウトは必ずカート経由。主要ブラウザでは再現せず。支払い方法(Shopify Payments含む)も原因ではない。

技術的示唆: LiquidはDOM構築前に動くため、ユーザーの入力に応じた条件分岐はjQuery等で実装する必要がある。

類似事例: 数量制限アプリがチェックアウトボタン押下時に介入(判定→モーダル表示)し、約半数の注文でCart attributesが保存されず。アプリコードを削除すると全注文で保存されるようになり、完全解消。開発元へ連絡し、アプリは削除。

考えられる原因: カート内の挙動を制御するアプリやスクリプトがチェックアウト遷移を挟む/書き換えることで、Cart attributes送信が失敗する。

推奨対応: カート制御系アプリの一時無効化・切り分け、jQueryでの入力反映の見直し。状況は未解決だが、アプリ干渉が有力。スクリーンショットで保存済み/空欄の例が提示。

配送日時を注文データに反映させるため、カートページに以下Cart attributes(カート属性)コードを設置しています。
※配送希望日はjsライブラリ「flatpickr」使って、商品毎に選択可能な最短配送日を動的に変える処理をしています。


設置サイト
https://mini-mal.tokyo/

================
問題点

このCart attributesが、注文データの「追加の詳細」に登録されるケースとされないケース(空欄)があります。
(同じ購入商品・同じ決済方法でも、注文データによっては「追加の詳細」が保存されているケースとされていないケースがあり、規則性がありません)

正常に登録されるケース↓

チェックアウト画面に行くには必ずカート画面を経由して配送日時を選択してもらう形で、
配送日時を未選択の場合でもデフォルトのデータ(配送希望時間なら、「希望なし」)が必ず登録されるはずですので、
「追加の詳細」覧が空欄であることはおかしいです。

================
試したこと

以下、原因調査のために行ったことです。

■支払い方法による影響がないか

参考:https://community.shopify.com/topic/715733
参考:https://help.shopify.com/en/manual/online-store/os/dynamic-checkout/compatibility#cart-attributes
海外記事では動的チェックアウトボタンが原因と書かれていますが、ShopifyPayment(クレカ決済)でも問題が発生しています。

結果:支払い方法は原因ではない

■ブラウザ毎の購入検証

・PC
GoogleCrome
FireFox
IE
Edge

・スマホ
iOS
Googleアプリ

結果:上記主要ブラウザで購入検証しましたが、全て正常にデータが保存されます。

================
疑問点

Cart attributesは何らかの要因で注文データに反映されないケースはあるのでしょうか?

LiquidはDOM構築前の処理を行うものなので、
DOM構築後にユーザーがINPUTタグでアクションする条件分岐には対応してないはずです。

JQueryで条件分岐作りなおしてみてください。

こんにちは。
わたしも、全く同じ現象で、悩まされました。
わたしの場合は、今まで問題がなかったのに、
ある日突然、約半分の注文で、
Cart Attributesの情報が保存されない状況になりました。
おこっている現象は、書かれているとおり、全く同じです。
まったく規則性がないので、ほんとに困りました。

英語でも情報を探しましたが、
情報がとても少なかったので、
レアケースで、Shopify本体の問題では
なさそうな気はしていました。

それで、一番最近インストールした、
数量制限のアプリがあやしいことに気づきまして。
そのアプリは、カートからチェックアウトに進むボタンを押したときに、
判定して、数量制限に引っかかっていたら、モーダルが出て、
次に進めなくするという動作でしたが、
そのアプリのコードを一旦削除してみると、
問題が解決し、すべての注文でCart Attribuitesが保存されるようになりました。
数日様子を見ましたが、完全に解決しています。

一応、アプリの開発元には連絡をしておきましたが、
アプリ自体は削除することにしました。
アプリが原因になるということは、
全く考えてなかったので、解決までに時間がかかりました。
どうして、そういうバグが出るのかまでは、わかりません。

もし、カート内でなにか制御するようなアプリを使っていらっしゃったら、
疑ってもよいかもしれません。