# Customers A Customer is a person purchasing Products. Carts, Orders, Quotes, Reviews, and Payments can also be associated to a Customer. Customers represent data about a specific customer in your Project. In addition to the relationship to other resources, such as [Carts](/api/projects/carts.md) and [Orders](/api/projects/orders.md), the Customer object contains information about their name, email address, any addresses associated with them, and more. By default, Customers are unique across a [Project](/api/projects/project.md). However, if your Project is structured with [Stores](/api/projects/stores.md), you can create and manage Customers on a Store level. [Store-specific Customers](/api/customers-overview.md#global-versus-store-specific-customers) are unique in a specific Store and only have access to resources inside that Store. Use the Customer in Store endpoints to manage Store-specific Customers. A maximum of **10000000** Customers can be created per Project. A Customer can be assigned to a maximum of **500** Customer Groups. These are soft limits that can be increased per Project after a performance impact review. See [Limit increase guidance](/api/limit-increase-guidance.md#resource-count-limits). Learn more about managing customer sign-ups and sign-ins in our self-paced Manage sign-ups and sign-ins module. ## Representations Representations are JSON objects submitted or received as payload to API requests or responses. #### Customer [type definition](/api/projects/customers.md?urn=ctp:api:type:Customer). #### CustomerDraft This type is equivalent to CustomerSignUpDraft in the [GraphQL API](/api/graphql.md). [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerDraft). #### CustomerPagedQueryResponse [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerPagedQueryResponse). #### CustomerReference [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerReference). #### CustomerKeyReference [type definition](/api/projects/customers.md?urn=ctp:import:type:CustomerKeyReference). #### CustomerResourceIdentifier [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerResourceIdentifier). #### CustomerGroupAssignment [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerGroupAssignment). #### CustomerGroupAssignmentDraft [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerGroupAssignmentDraft). #### CustomerSignin This type is equivalent to CustomerSignInDraft in the [GraphQL API](/api/graphql.md). [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSignin). #### CustomerSignInResult [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSignInResult). #### CustomerToken [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerToken). #### CustomerEmailTokenReference [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerEmailTokenReference). #### CustomerPasswordTokenReference [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerPasswordTokenReference). #### AnonymousCartSignInMode [type definition](/api/projects/customers.md?urn=ctp:api:type:AnonymousCartSignInMode). #### AuthenticationMode [type definition](/api/projects/customers.md?urn=ctp:api:type:AuthenticationMode). If you change a Customer's `authenticationMode` from `Password` to `ExternalAuth`, the Customer's `password` is deleted. #### CustomerChangePassword [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerChangePassword). #### CustomerCreatePasswordResetToken [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerCreatePasswordResetToken). #### CustomerResetPassword [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerResetPassword). #### CustomerCreateEmailToken [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerCreateEmailToken). #### CustomerEmailVerify [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerEmailVerify). ## Get Customer ### Get Customer by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/\{id}:GET). ### Get Customer by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/key=\{key}:GET). ## Get Customer in Store The following endpoints return a Customer from a specific [Store](/api/projects/stores.md) and also consider Customers that do not have the `stores` field present. ### Get Customer in Store by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/\{id}:GET). ### Get Customer in Store by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/key=\{key}:GET). ## Query Customers To perform searches across a large number of Customers for back-office use cases, consider [Customer Search](/api/projects/customer-search.md) instead. [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers:GET). ## Query Customers in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers:GET). ## Check if Customer exists ### Check if Customer exists by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/\{id}:HEAD). ### Check if Customer exists by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/key=\{key}:HEAD). ### Check if Customer exists by Query Predicate [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers:HEAD). ## Check if Customer exists in Store ### Check if Customer exists in Store by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/\{id}:HEAD). ### Check if Customer exists in Store by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/key=\{key}:HEAD). ### Check if Customer exists in Store by Query Predicate [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers:HEAD). ## Create (sign up) Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers:POST). ## Create (sign up) Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers:POST). ## Update Customer ### Update Customer by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/\{id}:POST). ### Update Customer by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/key=\{key}:POST). ## Update Customer in Store ### Update Customer in Store by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/\{id}:POST). ### Update Customer in Store by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/key=\{key}:POST). ## Update actions #### Change Email [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerChangeEmailAction). #### Set First Name [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetFirstNameAction). #### Set Last Name [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetLastNameAction). #### Set Middle Name [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetMiddleNameAction). #### Set Title [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetTitleAction). #### Set Salutation [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetSalutationAction). #### Add Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerAddAddressAction). #### Change Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerChangeAddressAction). #### Remove Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerRemoveAddressAction). #### Set Default Shipping Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetDefaultShippingAddressAction). #### Add Shipping Address ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerAddShippingAddressIdAction). #### Remove Shipping Address ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerRemoveShippingAddressIdAction). #### Set Default Billing Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetDefaultBillingAddressAction). #### Add Billing Address ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerAddBillingAddressIdAction). #### Remove Billing Address ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerRemoveBillingAddressIdAction). #### Set CustomerGroup [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCustomerGroupAction). #### Set Customer Number [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCustomerNumberAction). #### Set External ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetExternalIdAction). #### Set Company Name [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCompanyNameAction). #### Set Date of Birth [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetDateOfBirthAction). #### Set Vat ID [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetVatIdAction). #### Set Custom Type [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCustomTypeAction). #### Set CustomField [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCustomFieldAction). #### Set Custom Type in Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetAddressCustomTypeAction). #### Set CustomField in Address [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetAddressCustomFieldAction). #### Set Locale [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetLocaleAction). #### Set Key [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetKeyAction). #### Set Stores [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetStoresAction). #### Add Store [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerAddStoreAction). #### Remove Store [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerRemoveStoreAction). #### Set AuthenticationMode [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetAuthenticationModeAction). #### Add CustomerGroupAssignment [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerAddCustomerGroupAssignmentAction). #### Remove CustomerGroupAssignment [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerRemoveCustomerGroupAssignmentAction). #### Set CustomerGroupAssignments [type definition](/api/projects/customers.md?urn=ctp:api:type:CustomerSetCustomerGroupAssignmentsAction). ## Change password of Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/password:POST). ## Change password of Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/password:POST). ## Authenticate (sign in) Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/login:POST). ## Authenticate (sign in) Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/login:POST). ## Password reset of Customer ### Create password reset token for Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/password-token:POST). ### Get Customer by password token [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/password-token=\{passwordToken}:GET). ### Reset password of Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/password/reset:POST). ## Password reset of Customer in Store ### Create password reset token for Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/password-token:POST). ### Get Customer in Store by password token [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/password-token=\{passwordToken}:GET). ### Reset password of Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/password/reset:POST). ## Email verification of Customer ### Create email token for Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/email-token:POST). ### Get Customer by email token [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/email-token=\{emailToken}:GET). ### Verify email of Customer [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/email/confirm:POST). ## Email verification of Customer in Store ### Create email token for Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/email-token:POST). ### Get Customer in Store by email token [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/email-token=\{emailToken}:GET). ### Verify email of Customer in Store [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/email/confirm:POST). ## Delete Customer ### Delete Customer by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/\{id}:DELETE). ### Delete Customer by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/customers/key=\{key}:DELETE). ## Delete Customer in Store ### Delete Customer in Store by ID [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/\{id}:DELETE). ### Delete Customer in Store by Key [endpoint definition](/api/projects/customers.md?urn=ctp:api:endpoint:/\{projectKey}/in-store/key=\{storeKey}/customers/key=\{key}:DELETE). ## Related pages - [Area overview page with navigation](/api.md) - [Previous page: Overview](/api/customers-overview.md) - [Next page: Customer Search](/api/projects/customer-search.md)