Skip to content

Customers API

The Customers API provides comprehensive endpoints for managing customers in FluentCart. This includes creating, reading, updating, and deleting customers, as well as managing customer addresses, orders, and user attachments.

Base URL

https://yoursite.com/wp-json/fluent-cart/v2/customers

Authentication

All endpoints require authentication and appropriate permissions:

  • Authentication: WordPress Application Password or Cookie
  • Policy: CustomerPolicy
  • Permissions: Various customer-related permissions

Endpoints

List Customers

GET /customers

Retrieve a paginated list of customers with optional filtering and searching.

Parameters

ParameterTypeDescriptionDefault
pageintegerPage number1
per_pageintegerItems per page (max 100)10
searchstringSearch query-
filtersobjectFilter options-
order_bystringSort fieldid
order_typestringSort direction (ASC/DESC)DESC

Filter Options

json
{
  "status": "active",
  "date_from": "2024-01-01",
  "date_to": "2024-12-31",
  "total_spent_min": 1000,
  "total_spent_max": 5000
}

Response

json
{
  "success": true,
  "data": {
    "customers": [
      {
        "id": 1,
        "email": "[email protected]",
        "first_name": "John",
        "last_name": "Doe",
        "status": "active",
        "total_spent": 5000,
        "order_count": 3,
        "created_at": "2024-01-01T10:00:00Z",
        "updated_at": "2024-01-15T14:30:00Z"
      }
    ],
    "pagination": {
      "current_page": 1,
      "per_page": 10,
      "total": 100,
      "total_pages": 10
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers?page=1&per_page=20&search=john" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Create Customer

POST /customers

Create a new customer.

Request Body

json
{
  "email": "[email protected]",
  "first_name": "Jane",
  "last_name": "Smith",
  "phone": "+1234567890",
  "status": "active",
  "additional_info": {
    "company": "Example Corp",
    "notes": "VIP customer"
  }
}

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Smith",
      "phone": "+1234567890",
      "status": "active",
      "created_at": "2024-01-01T10:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "first_name": "Jane",
    "last_name": "Smith"
  }'

Get Customer Details

GET /customers/{customerId}

Retrieve detailed information about a specific customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "email": "[email protected]",
      "first_name": "John",
      "last_name": "Doe",
      "phone": "+1234567890",
      "status": "active",
      "total_spent": 5000,
      "order_count": 3,
      "created_at": "2024-01-01T10:00:00Z",
      "updated_at": "2024-01-15T14:30:00Z",
      "addresses": [
        {
          "id": 1,
          "type": "billing",
          "first_name": "John",
          "last_name": "Doe",
          "address_1": "123 Main St",
          "city": "New York",
          "state": "NY",
          "postcode": "10001",
          "country": "US",
          "is_primary": true
        }
      ]
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers/1" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Update Customer

PUT /customers/{customerId}

Update an existing customer's information.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "first_name": "John",
  "last_name": "Doe",
  "phone": "+1234567890",
  "status": "active"
}

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "first_name": "John",
      "last_name": "Doe",
      "phone": "+1234567890",
      "status": "active",
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/customers/1" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "John",
    "last_name": "Doe",
    "phone": "+1234567890"
  }'

Update Customer Additional Info

PUT /customers/{customerId}/additional-info

Update customer's additional information.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "company": "Updated Corp",
  "notes": "Updated VIP customer",
  "custom_field_1": "Custom value"
}

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "additional_info": {
        "company": "Updated Corp",
        "notes": "Updated VIP customer",
        "custom_field_1": "Custom value"
      },
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/additional-info" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "company": "Updated Corp",
    "notes": "Updated VIP customer"
  }'

Get Customer Stats

GET /customers/get-stats/{customer}

Get statistics for a specific customer.

Parameters

ParameterTypeDescription
customerintegerCustomer ID

Response

json
{
  "success": true,
  "data": {
    "stats": {
      "total_spent": 5000,
      "order_count": 3,
      "average_order_value": 1667,
      "last_order_date": "2024-01-15T14:30:00Z",
      "first_order_date": "2024-01-01T10:00:00Z"
    }
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers/get-stats/1" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Get Customer Orders

GET /customers/{customerId}/orders

Get all orders for a specific customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Response

json
{
  "success": true,
  "data": {
    "orders": [
      {
        "id": 1,
        "status": "completed",
        "payment_status": "paid",
        "total_amount": 2500,
        "currency": "USD",
        "created_at": "2024-01-01T10:00:00Z"
      },
      {
        "id": 2,
        "status": "processing",
        "payment_status": "paid",
        "total_amount": 2500,
        "currency": "USD",
        "created_at": "2024-01-15T14:30:00Z"
      }
    ]
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/orders" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Get Customer Addresses

GET /customers/{customerId}/address

Get all addresses for a specific customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Response

json
{
  "success": true,
  "data": {
    "addresses": [
      {
        "id": 1,
        "type": "billing",
        "first_name": "John",
        "last_name": "Doe",
        "address_1": "123 Main St",
        "city": "New York",
        "state": "NY",
        "postcode": "10001",
        "country": "US",
        "is_primary": true
      },
      {
        "id": 2,
        "type": "shipping",
        "first_name": "John",
        "last_name": "Doe",
        "address_1": "456 Oak Ave",
        "city": "Brooklyn",
        "state": "NY",
        "postcode": "11201",
        "country": "US",
        "is_primary": false
      }
    ]
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/address" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Update Customer Address

PUT /customers/{customerId}/address

Update customer's address information.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "address_id": 1,
  "first_name": "John",
  "last_name": "Doe",
  "address_1": "123 Updated St",
  "city": "New York",
  "state": "NY",
  "postcode": "10001",
  "country": "US"
}

Response

json
{
  "success": true,
  "data": {
    "address": {
      "id": 1,
      "first_name": "John",
      "last_name": "Doe",
      "address_1": "123 Updated St",
      "city": "New York",
      "state": "NY",
      "postcode": "10001",
      "country": "US",
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X PUT "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/address" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 1,
    "address_1": "123 Updated St",
    "city": "New York"
  }'

Create Customer Address

POST /customers/{customerId}/address

Create a new address for a customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "type": "shipping",
  "first_name": "John",
  "last_name": "Doe",
  "address_1": "789 New St",
  "city": "Queens",
  "state": "NY",
  "postcode": "11301",
  "country": "US"
}

Response

json
{
  "success": true,
  "data": {
    "address": {
      "id": 3,
      "type": "shipping",
      "first_name": "John",
      "last_name": "Doe",
      "address_1": "789 New St",
      "city": "Queens",
      "state": "NY",
      "postcode": "11301",
      "country": "US",
      "created_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/address" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "shipping",
    "first_name": "John",
    "last_name": "Doe",
    "address_1": "789 New St",
    "city": "Queens",
    "state": "NY",
    "postcode": "11301",
    "country": "US"
  }'

Delete Customer Address

DELETE /customers/{customerId}/address

Delete a customer's address.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "address_id": 2
}

Response

json
{
  "success": true,
  "message": "Address deleted successfully"
}

Example Request

bash
curl -X DELETE "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/address" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 2
  }'

Set Primary Address

POST /customers/{customerId}/address/make-primary

Set an address as the primary address for a customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "address_id": 2
}

Response

json
{
  "success": true,
  "data": {
    "address": {
      "id": 2,
      "is_primary": true,
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/address/make-primary" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "address_id": 2
  }'

Get Attachable Users

GET /customers/attachable-user

Get WordPress users that can be attached to customers.

Response

json
{
  "success": true,
  "data": {
    "users": [
      {
        "id": 1,
        "display_name": "John Doe",
        "user_email": "[email protected]",
        "user_login": "johndoe"
      },
      {
        "id": 2,
        "display_name": "Jane Smith",
        "user_email": "[email protected]",
        "user_login": "janesmith"
      }
    ]
  }
}

Example Request

bash
curl -X GET "https://yoursite.com/wp-json/fluent-cart/v1/customers/attachable-user" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Attach User to Customer

POST /customers/{customerId}/attachable-user

Attach a WordPress user to a customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Request Body

json
{
  "user_id": 1
}

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "user_id": 1,
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/attachable-user" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 1
  }'

Detach User from Customer

POST /customers/{customerId}/detach-user

Detach a WordPress user from a customer.

Parameters

ParameterTypeDescription
customerIdintegerCustomer ID

Response

json
{
  "success": true,
  "data": {
    "customer": {
      "id": 1,
      "user_id": null,
      "updated_at": "2024-01-01T11:00:00Z"
    }
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers/1/detach-user" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ="

Bulk Actions

POST /customers/do-bulk-action

Perform bulk actions on multiple customers.

Request Body

json
{
  "action": "update_status",
  "customer_ids": [1, 2, 3],
  "data": {
    "status": "inactive"
  }
}

Available Actions

  • update_status - Update status of multiple customers
  • delete - Delete multiple customers
  • export - Export multiple customers

Response

json
{
  "success": true,
  "data": {
    "processed": 3,
    "failed": 0,
    "results": [
      {
        "customer_id": 1,
        "success": true
      },
      {
        "customer_id": 2,
        "success": true
      },
      {
        "customer_id": 3,
        "success": true
      }
    ]
  }
}

Example Request

bash
curl -X POST "https://yoursite.com/wp-json/fluent-cart/v1/customers/do-bulk-action" \
  -H "Authorization: Basic dXNlcm5hbWU6YXBwbGljYXRpb25fcGFzc3dvcmQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "update_status",
    "customer_ids": [1, 2, 3],
    "data": {
      "status": "inactive"
    }
  }'

Error Handling

Common Error Codes

CodeDescription
customer_not_foundCustomer with specified ID not found
invalid_emailEmail address is invalid or already exists
invalid_userWordPress user ID is invalid
insufficient_permissionsUser lacks required permissions
validation_errorRequest data validation failed
address_not_foundAddress with specified ID not found

Error Response Example

json
{
  "success": false,
  "error": {
    "code": "customer_not_found",
    "message": "Customer with ID 999 not found"
  }
}

Rate Limiting

  • List operations: 100 requests per hour
  • Create operations: 50 requests per hour
  • Update operations: 200 requests per hour
  • Delete operations: 20 requests per hour

Next Steps

Continue with customer management:

  1. Orders API - Manage customer orders
  2. Products API - Manage product catalog
  3. Database Models - Understand customer data structure
  4. Developer Hooks - Customer-related hooks

Previous/Next Navigation


FluentCart developer documentation