REST API woocommerce - Not showing all customers on GET/customers

Problem summary

I am trying to fetch all customers with POSTMAN using the latest woocommerce API (v3):

GET/customers 

Yet only a small segment is returned. The number of customers returned is 28 (X-WP-Total) which is much less than the 150+ customers I have in the system.

Do you guys have any ideas on why only a subset of all customers are being returned instead of all? Does this have anything to do with how I configure woocommerce? Or am I just using the API incorrectly?

What i have tried

My goal is to create a small application to look up a customer by phone/email and then fetch the orders he had made.

Calling

GET/customers 

Only returns a small subset of all customers and the rest is omitted.

Any customers omitted from the GET/customers will also return an empty array when i for example use

GET/customers?email=...
GET/customers?search=...

The requests returns an empty array on the omitted customers but works on customers that was not omitted from:

GET/customers 

Yet, given a known omitted customer ID, it is possible to look up that customer by sending a request to

GET/customer/{ID} 

which does not make sense at all.

Upvotes: 6

Views: 3959

Answers (1)

The solution is to set:

GET/customers?role=all

I figured that GET/customers only return by default customers whose role is 'customer'.

However, since I also make use of memberships/subscriptions, a customer would automatically get a new role assigned ('subscriber') whenever they opt-in for a membership. That customer would therefore not be included in the response since his role is no longer 'customer'.

Hope this helps anyone who stumbles upon the same problem.

Upvotes: 13

Related Questions