# Customer Represents a customer, providing access to their personal, account, and order information. ## Type Definition ```graphql type Customer { id: Int customerNumber: String name: String address: Address tags: [String] hasAccess: Boolean username: String firstName: String lastName: String language: Locale currency: Currency acceptsMarketing: Boolean orderCount: Int orderTotal: Float refundCount: Int refundTotal: Float firstOrderDate: String lastOrderDate: String audiences: [String] loyaltyDiscountProgress: LoyaltyDiscountProgress } ``` ## Fields | Field | Type | Description | |-------|------|-------------| | id | Int | Unique identifier for the customer. | | customerNumber | String | The customer number assigned to this customer. | | name | String | The full name of the customer. | | address | Address | The customer's address information. | | tags | [String] | The tags associated with the customer. | | hasAccess | Boolean | Indicates if the customer has access rights to the store. | | username | String | The username of the customer. | | firstName | String | The first name of the customer. | | lastName | String | The last name of the customer. | | language | Locale | The customer's language/locale information. | | currency | Currency | The customer's preferred currency. | | acceptsMarketing | Boolean | Indicates if the customer has accepted marketing communications. | | orderCount | Int | The total number of orders placed by the customer. | | orderTotal | Float | The total amount spent by the customer on orders. | | refundCount | Int | The total number of refunds issued to the customer. | | refundTotal | Float | The total amount refunded to the customer. | | firstOrderDate | String | The date and time of the customer's first order, in RFC 2822 format. | | lastOrderDate | String | The date and time of the customer's most recent order, in RFC 2822 format. | | audiences | [String] | The names of the audiences or segments the customer belongs to. | | loyaltyDiscountProgress | LoyaltyDiscountProgress | Returns the progress of the customer towards the next loyalty discount in a GraphQL compatible format. | ## Relationships The `Customer` type represents a customer entity within the system and contains structured information about their profile, account status, and transaction history. It includes personal identifiers, contact information, language and currency preferences, and aggregated order and refund data. The `address` field references the `Address` type for detailed location information, the `language` field references the `Locale` type for language preferences, the `currency` field references the `Currency` type for preferred transaction currency, and the `loyaltyDiscountProgress` field references the `LoyaltyDiscountProgress` type for loyalty program tracking. ## Example ```graphql query { customer(id: 12345) { id customerNumber name firstName lastName email username hasAccess acceptsMarketing orderCount orderTotal refundCount refundTotal firstOrderDate lastOrderDate address { street city country } language { code } currency { code } tags audiences loyaltyDiscountProgress { currentTier progress } } } ``` ## Implements This type does not implement any interfaces. ## Related Types - [Address](/reference/storefront/v1/objects/address) - [Locale](/reference/storefront/v1/objects/locale) - [Currency](/reference/storefront/v1/objects/currency) - [LoyaltyDiscountProgress](/reference/storefront/v1/objects/loyalty-discount-progress)