> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt ## Resource: Introduction ## Article: Introduction ## Article Link: https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/catalogs/catalog-service-plugin/introduction.md ## Article Content: # About the Wix eCommerce Catalog Service Plugin
__Important:__ When developing websites or building apps with Blocks, use [Velo service plugins](https://dev.wix.com/docs/velo/events-service-plugins/about-events-service-plugins-and-the-sdk.md).The Catalog service plugin lets you become a Wix catalog provider. This means you can integrate any external repository of sellable items with the Wix eCommerce platform. Wix calls the Catalog service plugin to get up-to-date information about items whenever a cart or checkout is updated, and when an item is added to an order. With the Catalog service plugin, you can: + [Build a comprehensive business solution](https://dev.wix.com/docs/build-apps/get-started/tutorials/tutorial-build-an-e-commerce-business-solution/overview.md) offering functionality that differs from Wix's in-house solutions like [Wix Stores](https://support.wix.com/en/article/wix-stores-about-wix-stores) or [Wix Bookings](https://support.wix.com/en/article/wix-bookings-about-wix-bookings), and integrate your solution with the Wix eCommerce platform to handle transactional capabilities. For example, develop an app to manage equipment rentals, online courses, subscriptions, or vouchers. + Integrate an externally managed repository of sellable items with the Wix eCommerce platform to meet specific business needs. For example, if your business handles pricing or availability in a unique way, or if you sell items that aren't easily categorized as physical or digital products or services. + Create a Wix app to integrate an existing eCommerce repository on a different platform with Wix's eCommerce platform. ## Why an external catalog? The Catalog service plugin enables you to maintain a complex and dynamic external catalog while being confident Wix can retrieve the latest information for every action. For example, after a customer adds a particular item to their cart, one of the following details might change in your dynamic catalog: + The name of the item might be changed. + The price might be adjusted. + The item might go out of stock. With the Catalog service plugin, you can be sure that when the customer moves the item from their cart to their checkout, Wix will retrieve the updated details from your catalog automatically. ## Before you begin It's important to note the following points before starting to code: + Create a database of items on the platform of your choice. + Learn how to [handle item variants](https://dev.wix.com/docs/rest/business-solutions/e-commerce/catalogs/catalog-service-plugin/handle-item-variants.md) with the Catalog service plugin. + Existing solutions may already provide the catalog functionality that you need. Check out [Wix Stores](https://support.wix.com/en/article/wix-stores-about-wix-stores) and [Wix Bookings](https://support.wix.com/en/article/wix-bookings-about-wix-bookings), which provide built-in catalogs. If they cater to your needs, you probably don't need to implement the Catalog service plugin. + For some items, you might not need an external catalog. Learn more about [catalog and custom items](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/catalogs/catalog-and-custom-items.md). + For an overview of the Wix eCommerce platform and its capabilities, take a look at the [Wix eCommerce Platform Handbook](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/introduction.md). + We are constantly updating functionality. Check the documentation regularly to see the latest capabilities. Currently, external catalog integration has a few limitations: + Coupons aren't yet supported. + Preview mode in the Wix editor doesn't reflect full functionality. + Integration with external sales channels isn't yet available. ::::tabs :::REST_TAB ## Get started To integrate an external catalog with the Wix eCommerce platform: 1. Implement the [Get Catalog Items](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/catalogs/catalog-service-plugin/get-catalog-items.md) method so Wix can retrieve the information it needs about specific items. >**Note:** When Wix calls your app's implementation of the Get Catalog Items method, your app receives a request containing a payload as an [encoded JWT](https://dev.wix.com/docs/build-apps/develop-your-app/access/authentication/verify-requests-received-from-wix.md). 1. Create an app in your Wix Studio workspace and [add a catalog integration extension](#configuration). ## App Configuration To enable your Wix app to communicate with your external catalog: 1. Select an app from the [**Custom Apps** page](https://manage.wix.com/studio/custom-apps) in your Wix Studio workspace. 1. Go to **Extensions** in your app's dashboard. 1. Click **Create Extension**. 1. Scroll down to **Ecom Catalog** and click **Create**. 1. In the JSON editor, assign the URI where the Catalog service plugin is implemented to `deploymentUri`. For example: ```json { "deploymentUri": "https://my-external-catalog.com/" } ``` **Note:** Other fields in the JSON editor are reserved for future functionality. 1. Click **Save**. ::: :::SDK_TAB ## Get started Follow these steps to begin implementing your service plugin: ### Step 1 | Choose a framework You can implement this service plugin with the following [frameworks](https://dev.wix.com/docs/build-apps/get-started/overview/wix-s-development-frameworks.md): + **Wix CLI:** Learn how to [implement a service plugin with the CLI and the SDK](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/supported-extensions/backend-extensions/service-plugins/add-service-plugin-extensions-with-the-cli.md). + **Self-hosted:** Learn how to [implement a self-hosted service plugin with the SDK and the app dashboard](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md). ### Step 2 | Configure your service plugin To configure and customize your plugin, you need to provide important information in the service plugin configuration file. You can [configure your plugin in the app dashboard](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md#step-1--add-a-service-plugin-extension-to-your-app). For details, see [Catalog Extension Configuration](https://dev.wix.com/docs/rest/business-solutions/e-commerce/catalogs/catalog-service-plugin/extension-config.md). ### Step 3 | Define handler functions Use [`catalog.provideHandlers()`](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md#step-4--define-handler-functions) to define the following handler function that implement your custom business logic. | Function | Required | |--------------------------------------------------------------------------------------------------------------------|----------| | [`getCatalogItems()`](https://dev.wix.com/docs/rest/business-solutions/e-commerce/catalogs/catalog-service-plugin/get-catalog-items.md) | Yes | ## Code examples Below is an example for implementing the Catalog service plugin in your code. ### CLI: Basic code structure This is the basic code structure for implementing the Catalog service plugin with the Wix CLI: ```js import { catalog } from '@wix/ecom/service-plugins' catalog.provideHandlers({ getCatalogItems: async (payload) => { const {request, metadata} = payload; // Add your logic here } }); ``` ### Self-hosted: Basic code structure This is the basic code structure for implementing a self-hosted Catalog service plugin: ```js import { createClient } from '@wix/sdk'; import { catalog } from '@wix/ecom/service-plugins' const wixClient = createClient({ auth: { appId: