> Caution: > Starting in API version 2023-04, the [`PriceList.contextRule`](/docs/api/admin-graphql/unstable/objects/PriceList#field-pricelist-contextrule) field will be deprecated. If you have an existing app that uses the `contextRule` field, then you should [migrate to catalogs](/docs/apps/build/markets/migrate-to-catalogs). A catalog is a set of products that's published and priced for certain customers based on specified conditions. For example, you can make a catalog of products for customers who are browsing the online store from Canada and the United States. In this guide, you'll learn how catalogs work, and some considerations for using catalogs to publish and price products, and to sell in different contexts. ## Requirements - Your app can make [authenticated requests](/docs/api/admin-graphql#authentication) to the GraphQL Admin API. - Your app has the `write_products` [access scope](/docs/api/usage/access-scopes). Learn how to [configure your access scopes using Shopify CLI](/docs/apps/build/cli-for-apps/app-configuration). - You've created [products](/docs/api/admin-graphql/latest/mutations/productcreate) and [product variants](/docs/api/admin-graphql/latest/mutations/productvariantcreate) in your store. ## How it works A catalog represents a list of products to be published in a specified context, such as for international customers, certain business-to-business (B2B) customers, or customers on certain sales channels. A [`Catalog`](/docs/api/admin-graphql/unstable/interfaces/Catalog) has a [`Publication`](/docs/api/admin-graphql/unstable/objects/publication) field that determines which products are visible to the customer when they visit the online store and checkout. Each `Catalog` object also has a [`PriceList`](/docs/api/admin-graphql/unstable/objects/PriceList) field that determines any price adjustments for its eligible contexts, such as a [`Market`](/docs/api/admin-graphql/unstable/objects/Market) for international customers, a [`CompanyLocation`](/docs/api/admin-graphql/unstable/objects/CompanyLocation) for business-to-business (B2B) customers, or an [`App`](/docs/api/admin-graphql/unstable/objects/app) for customers on certain sales channels. ### Price lists For each [`PriceList`](/docs/api/admin-graphql/unstable/objects/PriceList), a [`PriceListParent`](/docs/api/admin-graphql/unstable/objects/PriceListParent) can be used to control prices using percentage adjustments. You can use the [`PriceListPrice`](/docs/api/admin-graphql/unstable/objects/PriceListPrice) object to represent a final, fixed price for a single product variant. If you use the `PriceListPrice` field to configure a fixed price for a product variant, then the fixed price takes precedence over any other adjustments that are defined at the price list level. For more information about how prices are determined, refer to [Pricing prioritization](#pricing-prioritization). ### API objects and relationships Before you start implementing catalogs, we recommend familiarizing yourself with the following API objects and their relationships:
API object | Description |
---|---|
Catalog |
A set of products and prices that's published to a specified context, such as a market or B2B company location. |
Market |
A group of one or more regions that can be targeted with a configured catalog of products and prices. |
CompanyLocation |
A specified location or branch for a B2B company that can be targeted with a configured catalog of products and prices. B2B APIs and features are available only to merchants on the Shopify Plus plan. |
Publication |
A group of products and collections that's published to a catalog. When a publication is associated with a catalog, customers that belong to the associated market or company location have access to view and purchase only the products and collections within the publication. Prices and adjustments from the price list apply to the associated published products. When a publication isn't associated with a catalog, and the catalog is associated with a market, then the published products are determined by the sales channel. For example, if a customer uses the online store and their catalog doesn't have an associated publication, then their product selection is all products that are published to the online store sales channel. When a publication isn't associated with a catalog, and the catalog is associated with a company location, then no products are published to that location for the customer that's logged into their B2B customer account. |
PriceList |
A list of prices for different products that are displayed to the customer if they belong to an eligible context. If a customer is eligible for multiple price lists, then the displayed price list follows the pricing prioritization rules. |
PriceListParent |
The price adjustment rule, such as a percentage increase or decrease, that's applied to the product's or product variant's initial price. Adjustments can either reduce the initial prices with the You can also use the
|
PriceListPrice |
The price of one product variant that's associated with the price list. The origin type of a price list price indicates whether the price list price is
|
ProductVariant |
The variant that's associated with a price list and belongs to a publication. |