自社 EC における顧客数の推移を記録するため、毎朝バッチ処理で Customers API をコールし、
pagination にも対応した上で顧客を全件取得し、取得できた顧客の総数を記録してスプレッドシートに日付を添えて書き込んでいます。
本日の集計結果を確認したところ、前日と比較して急激に顧客数が減ったので調査してみたところ、
そもそも Shopify管理画面上の顧客数と API 経由で取得できる顧客数が一致していないことがわかりました。
Admin API をコールするときはフィルタ設定なし、Shopify 管理画面上では以下のフィルタのみを適用しています。
customer_account_status != 'DECLINED'
20顧客ほどのズレが生じしているのですが、どういうケースでズレが発生するのでしょうか?
ズレている原因なのかはわかりませんが、Shopify管理画面の顧客管理ページ上の顧客総数はCustomers APIではなく、customerSegmentMembersを使って取得してそうです。
下記のようなクエリで顧客数を取得してます。
{
customerSegmentMembers(first: 1) {
statistics {
totalCount
}
}
}
管理画面のページ上でリクエストしているのを確認しただけですので、これが正しいというわけではないですが、customerSegmentMembersで取得できる数と比較してみると原因がわかるかもしれません。
1 Like
クエリを一部間違えていたので訂正します。
{
customerSegmentMembers(first: 1, query: "") {
statistics {
totalCount
}
}
}
また、APIバージョン2023-07以降ではstatistics.totalCountが非推奨になるので、下記のクエリで同様のことができます。
https://shopify.dev/changelog/moving-total_count-field-from-segmentstatistics-to-customersegmentmemberconnection
{
customerSegmentMembers(first: 1, query: "") {
totalCount
}
}