Register Customer
Create a new customer account with email, password, and optional profile information.
Endpoint
POST /api/shop/customersRequest Headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | application/json |
X-STOREFRONT-KEY | Yes | Your storefront API key |
Request Body
json
{
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"password": "Password123!",
"confirmPassword": "Password123!",
"phone": "1234567890",
"gender": "Male",
"dateOfBirth": "1990-01-15",
"subscribedToNewsLetter": true
}| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | Customer first name |
lastName | string | Yes | Customer last name |
email | string | Yes | Unique email address |
password | string | Yes | Password (min 8 chars, mixed case, numbers, special) |
confirmPassword | string | Yes | Password confirmation (must match) |
phone | string | No | Phone number |
gender | string | No | Customer gender (Male/Female) |
dateOfBirth | string | No | Date of birth (YYYY-MM-DD) |
subscribedToNewsLetter | boolean | No | Newsletter subscription (default: false) |
The account's channel and customer group are not part of the request body. The server assigns them automatically — the channel from the request's storefront, and the store's default customer group — exactly as the web storefront sign-up does. They come back in the response as channelId and customerGroupId.
Response Fields (201 Created)
| Field | Type | Description |
|---|---|---|
id | integer | Customer ID |
firstName | string | Customer first name |
lastName | string | Customer last name |
email | string | Customer email |
phone | string | Customer phone |
gender | string | Customer gender |
dateOfBirth | string | Customer date of birth |
apiToken | string | Legacy field, kept for backward compatibility. Not an auth Bearer — authenticate with token instead |
token | string | The authentication credential — send as Authorization: Bearer <token> |
status | integer | Account status (1=active, 0=inactive) |
subscribedToNewsLetter | boolean | Newsletter subscription status |
isVerified | integer | Email verification status (0=not verified) |
isSuspended | integer | Suspension status (0=active) |
name | string | Full customer name |
customerGroupId | integer | Customer group the account is placed in. Assigned automatically by the server (the store's default customer group) — not sent by the client. |
channelId | integer | Channel the account is registered under. Assigned automatically from the request's storefront channel — not sent by the client. |
rememberToken | mixed | Remember token |
Password Requirements
Passwords must contain:
- Minimum 8 characters
- At least one uppercase letter (A-Z)
- At least one lowercase letter (a-z)
- At least one number (0-9)
- At least one special character (!@#$%^&*)
Related Resources
- Customer Login — authenticate and receive a customer token
- Update Profile — patch name, email, phone, and other profile fields
- Get Profile — read the authenticated customer's account details

