Skip to content

Register Customer ​

Create a new customer account with email, password, and optional profile information.

Endpoint ​

POST /api/shop/customers

Request Headers ​

HeaderRequiredDescription
Content-TypeYesapplication/json
X-STOREFRONT-KEYYesYour 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
}
FieldTypeRequiredDescription
firstNamestringYesCustomer first name
lastNamestringYesCustomer last name
emailstringYesUnique email address
passwordstringYesPassword (min 8 chars, mixed case, numbers, special)
confirmPasswordstringYesPassword confirmation (must match)
phonestringNoPhone number
genderstringNoCustomer gender (Male/Female)
dateOfBirthstringNoDate of birth (YYYY-MM-DD)
subscribedToNewsLetterbooleanNoNewsletter subscription (default: false)

status, isVerified and isSuspended are optional and the value sent for them is not used. The server decides the account's state the way the web storefront sign-up does: status is 1 and isSuspended is 0, and isVerified follows the store's email verification setting under Configuration → Customers → Settings → Email — 1 while it is switched off, 0 while it is switched on and the address has not been confirmed. An account with isVerified of 0 cannot sign in until the customer follows the link in the verification email.

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) ​

FieldTypeDescription
idintegerCustomer ID
firstNamestringCustomer first name
lastNamestringCustomer last name
emailstringCustomer email
phonestringCustomer phone
genderstringCustomer gender
dateOfBirthstringCustomer date of birth
apiTokenstringLegacy field, kept for backward compatibility. Not an auth Bearer — authenticate with token instead
tokenstringThe authentication credential — send as Authorization: Bearer <token>
statusintegerAccount status — 1 active, 0 inactive. An inactive account cannot sign in
subscribedToNewsLetterbooleanNewsletter subscription status
isVerifiedintegerEmail verification state — 1 verified, 0 awaiting confirmation. An unverified account cannot sign in
isSuspendedintegerSuspension state — 0 not suspended, 1 suspended by an administrator
namestringFull customer name
customerGroupIdintegerCustomer group the account is placed in. Assigned automatically by the server (the store's default customer group) — not sent by the client.
channelIdintegerChannel the account is registered under. Assigned automatically from the request's storefront channel — not sent by the client.
rememberTokenmixedRemember 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 (!@#$%^&*)

Released under the MIT License.