毎月一日に各顧客の過去一年分の購入金額を取得したい

Topic summary

ユーザーがShopify Flowを使って毎月1日に各顧客の過去1年分の購入金額を取得する方法を質問。

主な課題:

  • Flowのスケジュール設定は可能だが、顧客ごとの購入金額取得とタグ付けの設定方法が不明
  • Get customer dataは最大100件までしか取得できず、ループ処理も不可能

提案された解決策:

  1. 顧客数÷100個のFlowを作成する方法(16,000顧客の場合は160個必要)→現実的ではないと判断
  2. 顧客セグメント機能を活用する方法を提案

セグメント設定の技術的解決:

  • 特定日に一定金額以上購入した顧客を抽出する際の正しい記述方法について質疑応答
  • 最終的に orders_placed(since: 2024-11-29, until: 2024-11-29, sum_amount_at_least: 10000) = true という記述で意図した動作を実現
  • 注意点として、この方法では指定日の注文合計金額で絞り込まれる(複数注文の合計も含む)

結果: 質問者は提案された解決策で問題を解決できた。

Summarized with AI on November 3. AI used: claude-sonnet-4-5-20250929.

お世話になっております。

shopify flowで毎月一日に各顧客の過去一年分の購入金額を取得したいと思っています。

scheduleの設定で2024年の7月一日から1か月ごとの1番目の0時という設定はできたかと思うのですが、そこから、全顧客のデータを取得するループ。

ループから顧客ごとの購入金額を取得という設定がわかりません。

こちらの設定を行った方がいらっしゃいましたらご教授をお願いいたします。

また、取得した購入金額から顧客にタグをつけていきたいと考えています。

なので、購入金額を条件としてタグを設定するflowも教えていただけますと幸いです。

何卒宜しくお願い致します。

@Tubasa

難しいかもしれません。

なぜなら、

Get customer dataで取得できる顧客データは100件が最大ですし、

1つのShopify Flow内でGet customer dataをループして、何度も100件を取得するような処理を作ることができないからです。

顧客数 ÷ 100 個のShopify Flowを作成すれば可能かもしれません。

(例: 顧客数が10,000であれば、100個のShopify Flowを作る)

これが手間ではないようでしたら、コンセプトだけですが、下記のようなフローを組むことで実現できるのではないかと思います。

[フロー]

予定時刻トリガー

Get customer dataで、「202406計算済み」※というタグを持っていない顧客を取得

Run Codeで、1年間の購入金額を算出

金額による条件分岐

顧客にタグをつけるアクションで、ご希望のタグと「202406計算済み」のタグの2つをつける

上記のフローを顧客数に応じて作成し、少しずつトリガーの実行時間をずらしておきます。

※「202406計算済み」というタグは、2024年6月にこのトリガーが実行されたことを想定しています。

予定時刻トリガーから取得できる実行日時の変数をうまく使うことで指定できるのではないかと思います。

しかし、これを作るくらいであれば、

顧客のセグメントで、「過去一年間の購入金額XX円以上」のようなセグメントを作成できますので、

月一回、セグメントを見て、一括タグ付けをされた方が随分簡単かもしれません。

ご参考まで。

(キュー田辺)

2 Likes

ご回答ありがとうございます。

現在対象ストアの顧客数は16000以上いるので、処理の時間にどれほどかかるのかも考慮すると、

あまり現実的ではなさそうですね。

顧客のセグメントで、「過去一年間の購入金額XX円以上」のようなセグメントを作成できますので、

こちらの方法をご教示いただけないでしょうか。

たとえば、11/29に10,000円以上購入した人をセグメントしたい場合、以下のように記述しても、

・11/29に金額にかかわらず購入した人 かつ

・過去に10,000円以上購入した人

となってしまい、意図したセグメントとならず困っております。。

amount_spent >= 10000 AND products_purchased(since: 2024-11-29, until: 2024-11-29) = true

@yukisuzuki

11/29に10,000円以上購入した人をセグメントしたい場合

その場合は、こうではなく、

amount_spent >= 10000 AND products_purchased(since: 2024-11-29, until: 2024-11-29) = true

下記のようにすると良いはずです。(検証はしておりません。)

orders_placed( since: 2024-11-29, until: 2024-11-29, sum_amount_at_least: 10000) = true

ちなみに、この場合、極端な例ですが、11月29日に、2,000円の注文を5回行った場合も対象になります。

(11月29日に行われた注文全ての合計金額が10,000円以上の顧客が絞り込まれます。)

ご参考まで。

(キュー田辺)

1 Like

こちらで意図した動作となりました。

大変助かりました。ありがとうございました。