Contents
On this page

Create Customer - Plugixa Car Wash

POST /plugixa-carwash/v1/customers

Create a customer.

Needs the plugixa_carwash_create capability.

Request

POST https://your-site.example/wp-json/plugixa-carwash/v1/customers

Request body

Content type: application/json

Field Type Required Description
email string Yes A valid address, at most 190 characters, not used by another customer.
first_name string No At most 100 characters. Defaults to empty.
last_name string No At most 100 characters. Defaults to empty.
phone string No At most 50 characters. Defaults to empty.
company string No At most 190 characters. Defaults to empty.
address string No At most 255 characters. Defaults to empty.
notes string No Internal notes. Line breaks are kept. Defaults to empty.
status string No published or unpublished. Defaults to published.

A new customer fires the customer.created webhook PRO. Bookings also create customers on their own, matched by e-mail.

{
  "first_name": "Lucas",
  "last_name": "Bernard",
  "email": "lucas@example.com",
  "phone": "+1 217 555 0199"
}

Responses

201 Created. data is the new customer.

{
  "success": true,
  "data": {
    "id": 25,
    "first_name": "Lucas",
    "last_name": "Bernard",
    "email": "lucas@example.com",
    "phone": "+1 217 555 0199",
    "company": "",
    "address": "",
    "notes": "",
    "wp_user_id": null,
    "status": "published",
    "created_by": 1,
    "modified_by": 1,
    "created_at": "2026-11-10 08:15:00",
    "modified_at": "2026-11-12 09:30:00",
    "deleted_at": null,
    "vehicles": [
      {
        "id": 31,
        "vehicle_type_id": 2,
        "make": "Toyota RAV4",
        "plate": "ABC1234"
      }
    ],
    "visits": 4,
    "last_visit": "2026-11-08 14:00:00",
    "spent": 156.24,
    "name": "Lucas Bernard"
  }
}
Field Type Meaning
data.id integer The customer’s id
data.email string Unique among customers not in the trash
data.wp_user_id string|null Not set by the plugin today. When set it is a number in a string
data.status string published or unpublished
data.vehicles array Vehicles remembered from their bookings: id, vehicle_type_id, make, plate
data.visits integer Bookings completed or in_progress
data.last_visit string|null UTC start of the latest of those
data.spent number Total of those bookings
data.name string First and last name together
data.created_at string UTC datetime
data.modified_at string UTC datetime of the last change. Send it back on an update to be warned about a conflicting edit
data.deleted_at string|null null unless the record is in the trash

Errors

Status Code When
422 plugixa_carwash_missing_email email is missing or empty.
422 plugixa_carwash_invalid_email email is not a valid address.
422 plugixa_carwash_too_long_{field} A text field is too long. The code names the field.
422 plugixa_carwash_invalid_{field} A choice field has a value that is not one of its choices. The code names the field.
409 plugixa_carwash_duplicate_email Another customer already uses this e-mail address.

Plus the errors every endpoint can return.

Examples

curl -s -X POST "https://your-site.example/wp-json/plugixa-carwash/v1/customers" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"first_name":"Lucas","last_name":"Bernard","email":"lucas@example.com","phone":"+1 217 555 0199"}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-carwash/v1/customers');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'admin:' . getenv('WP_APP_PASSWORD'),
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'first_name' => 'Lucas',
        'last_name'  => 'Bernard',
        'email'      => 'lucas@example.com',
        'phone'      => '+1 217 555 0199',
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const auth = Buffer.from(`admin:${process.env.WP_APP_PASSWORD}`).toString('base64');
const response = await fetch('https://your-site.example/wp-json/plugixa-carwash/v1/customers', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    first_name: 'Lucas',
    last_name: 'Bernard',
    email: 'lucas@example.com',
    phone: '+1 217 555 0199',
  }),
});
const { data } = await response.json();

Quick Links

Share