A party is the core entity that represents a "Customer". A party can represent an organization (party of many) or single person (party of one). You will find that a lot of the API's will reference party or partyId. Consider this the "customer profile".
There are 4 main types for the core entity of party:
- Organization - "O" - Represents a customer that is an organization used in B2B
- Household - "H" - Represents a customer that is a collection of people within the same household. Occasionally useful for B2C
- Person - "P" - Represents a customer that is a single person used in B2C
- Contact - "C" - Represents a single person that is not necessarily a customer but is a contact of a customer.
Different from party; internal party is for you, the merchant, using fabric to create and store the organization structure within your business (your employees). This is useful for sales agents within your business, should they need to purchase products on behalf of your customers on your storefront. This should not be confused with our Copilot UI users.
Parties have the ability to reference other parties by the way of a parent child relationship. As parties are essentially considered "customers" this would be an ideal mechanism to use to specify organization customers that have sub organizations that need to be treated as separate customers.
A user is defined simply as the login credential to a system (your storefront). Our user model does not store password or authentication method, only username. Users are not considered customers in their own right.
Groups is an entity in our customer model that allows you to partition Addresses and/or Users that are associated to a party. This would most often be used for when you want to separate users in an organization customer (party), by the department or division they belong to. The key difference between Groups and Sub Organizations (child parties), is that groups are not considered customers.