--- title: Share and import products description: Create shareable price lists and import products from other merchants. source_url: html: https://shopify.dev/docs/apps/build/collective/products md: https://shopify.dev/docs/apps/build/collective/products.md --- ExpandOn this page * [How it works](https://shopify.dev/docs/apps/build/collective/products#how-it-works) * [Connect with other merchants](https://shopify.dev/docs/apps/build/collective/products#connect-with-other-merchants) * [Create price lists as a supplier](https://shopify.dev/docs/apps/build/collective/products#create-price-lists-as-a-supplier) * [Import products into a retailer store](https://shopify.dev/docs/apps/build/collective/products#import-products-into-a-retailer-store) * [Sync content from the supplier](https://shopify.dev/docs/apps/build/collective/products#sync-content-from-the-supplier) * [Restrictions on price and inventory](https://shopify.dev/docs/apps/build/collective/products#restrictions-on-price-and-inventory) * [Next steps](https://shopify.dev/docs/apps/build/collective/products#next-steps) # Share and import products Suppliers can share products through Shopify Collective price lists and retailers can import and manage those products. This guide describes how to create shareable price lists and import products from other merchants. In this guide you'll learn how to do the following tasks: * Sync products from an external system into Shopify so that suppliers can create price lists to be shared with retailers. * Import selected products so retailers can use the data stored in an external system. * Get familiar with how inventory and price synchronization works, and the protections Shopify checkout offers to prevent overselling. *** ## How it works 1. Suppliers and retailers connect with each other. 2. Suppliers create a price list and share it with retailers. 3. Retailers import the products into their store. 4. Suppliers can update the products and updates are reflected in the retailers store. *** ## Connect with other merchants Currently, there are no APIs that can be used to send and accept Shopify Collective invitations. To connect with other merchants so you can share your products, or start selling their products in your store, you must use the [Collective (Retailer) app](https://www.shopify.com/collective/retailer) and [Collective (Supplier) app](https://www.shopify.com/collective/supplier). Learn how to send invitations to [connect with retailers](https://help.shopify.com/manual/online-sales-channels/shopify-collective/suppliers/invitations) or [connect with suppliers](https://help.shopify.com/manual/online-sales-channels/shopify-collective/retailers/invitations). *** ## Create price lists as a supplier Shopify Collective suppliers that want to share products with retailers must create a Collective price list. If suppliers use an external system to store their product information, then they can use a combination of [`productCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate), [`productOptionsCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productOptionsCreate), and [`productCreateMedia`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreateMedia) mutation to add their products. The product status that's passed to the [`productCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate) mutation should be `ACTIVE`. Make sure products are published to the `Collective (Supplier)` sales channel using [`publishablePublish`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/publishablePublish?example=Publish+a+product+with+a+publication+ID) mutation. You can retrieve the ID of the `Collective (Supplier)` publication programmatically by listing all your store publications and finding the one with `publication.catalog.title = "Collective (Supplier)"`. Once all your products are created in the Shopify admin, are in the `ACTIVE` state and are published to Collective, you can add them to one or more Collective pricelists. This must be done via the UI, and you can use `Bulk Actions` to make this process faster. Once Collective pricelists are created, they can be shared with one or more retailers. As a Collective supplier, you can also attach one or more pricelists when you invite another retailer to Collective. ![Collective pricelist](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/collective/collective-pricelist-DQ5FJMUR.png) *** ## Import products into a retailer store As a Shopify Collective retailer, after a supplier shares a price list with you, you can select which products to import using the **Collective (Retailer)** app. You can also set up policies to import products without manual intervention and keep them in sync with the supplier. ![Collective policies](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/collective/collective-policies-PWFKsKFp.png) If you want to send products created by Collective to to an external system, you can listen to the following webhooks: * [`products/create`](https://shopify.dev/docs/api/webhooks?reference=toml#list-of-topics-products/create), to track products newly imported by Collective * [`products/update`](https://shopify.dev/docs/api/webhooks?reference=toml#list-of-topics-products/update), to track inventory updates, and content updated by suppliers * [`products/delete`](https://shopify.dev/docs/api/webhooks?reference=toml#list-of-topics-products/delete), to track unsellable products, if you setup an Product Policy that deletes them These webhooks will return a full variant payload for the first 100 records. For records 101 and higher, the payload won't include the full variant details. You will need to use the [`productVariants`](https://shopify.dev/docs/api/admin-graphql/latest/queries/productVariants) query. Products that are managed by Collective have the `Shopify Collective` and `{$supplier_name}` tags. *** ## Sync content from the supplier These fields are copied over from the supplier and can be optionally kept in sync whenever the supplier makes changes: * Title * Description * Media * Category * Compare-at price * Product type * SKU * Barcode * Weight * Country/Region of origin * Harmonized System (HS) code ![Collective content sync](https://cdn.shopify.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/collective/collective-content-sync-umiWD8ZV.png) After products are imported into your external system, you can perform additional steps to enrich the products and reflect these edits back into Shopify. You can use APIs such as [`productUpdate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate), [`productUpdateMedia`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdateMedia) for product updates, or [`metafieldDefinitionCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/metafieldDefinitionCreate), [`metafieldsSet`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/metafieldsSet), for metafields updates. To delete a Collective product, use [`productDelete`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productDelete). *** ## Restrictions on price and inventory When suppliers share a product using a Shopify Collective price list, the inventory from the [`sellableOnlineQuantity`](https://shopify.dev/docs/api/admin-graphql/latest/objects/productvariant#field-sellableonlinequantity) is used to populate the available inventory on the retailer store. Whenever a buyer purchases that product on the supplier store or on any of the connected retailer stores, the quantity is decreased and the change is propagated to all the stores that use that product. Even during flash sales, when inventory changes can't be propagated fast enough to all connected stores, Shopify Collective protects suppliers against overselling by checking supplier inventory levels during checkout. This only works if the sale is made using Shopify's checkout. It won't work with a manual order insertion. Price is set by suppliers at the time of pricelist creation and is synced over to the retailer store. Changes are reverted back to the original supplier price. *** ## Next steps * Learn how to [define shipping rates](https://shopify.dev/docs/apps/build/collective/shipping). *** * [How it works](https://shopify.dev/docs/apps/build/collective/products#how-it-works) * [Connect with other merchants](https://shopify.dev/docs/apps/build/collective/products#connect-with-other-merchants) * [Create price lists as a supplier](https://shopify.dev/docs/apps/build/collective/products#create-price-lists-as-a-supplier) * [Import products into a retailer store](https://shopify.dev/docs/apps/build/collective/products#import-products-into-a-retailer-store) * [Sync content from the supplier](https://shopify.dev/docs/apps/build/collective/products#sync-content-from-the-supplier) * [Restrictions on price and inventory](https://shopify.dev/docs/apps/build/collective/products#restrictions-on-price-and-inventory) * [Next steps](https://shopify.dev/docs/apps/build/collective/products#next-steps)