Shopify管理画面上に表示される顧客数と、Admin API 経由で取得できる顧客の総数が一致しない

Topic summary

Shopify管理画面に表示される顧客数と、Admin APIのCustomers APIで取得できる顧客総数に不一致が発生している問題。

状況:

  • 毎朝バッチ処理でCustomers APIを使用し、ページネーション対応で全顧客を取得してスプレッドシートに記録
  • 前日比で急激に顧客数が減少したため調査を実施
  • Admin API呼び出し時はフィルタ未設定だが、管理画面では customer_account_status != 'DECLINED' のフィルタが適用されている可能性

解決策:

  • Shopify管理画面の顧客総数は customerSegmentMembers を使用して取得している
  • 以下のGraphQLクエリで管理画面と同じ顧客数を取得可能:
customerSegmentMembers(first: 1, query: "") {
  statistics { totalCount }
}

注意点:

  • APIバージョン2023-07以降では statistics.totalCount が非推奨
  • 新しいバージョンでは customerSegmentMembers.totalCount を使用する必要がある
Summarized with AI on November 18. AI used: claude-sonnet-4-5-20250929.

自社 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
  }
}