Product Management
If you're a channel, you are going to be dealing with products a lot. Perhaps you'll be advertising them, perhaps you'll be directly listing them for sale. Either way, you should be reading the right data and keeping it up to date.
Deciding what products to list
Publishing the entire catalog using the Product resource is typically a bad idea. Merchants usually like to control exactly what products appear on what surfaces. To enable this, instead of reading your information from the Product, read from the ProductListing.
The ProductListing is a read-only copy of a product which the merchant can control from the Products page. If you wish to control which products are published to your app, you can also use this API to publish a product on behalf of the merchant.
Managing Product Information
Merchants can have millions of products. Solutions that involve manually listing/editing products through the embedded app interface can be very time consuming for them. In some cases, this is unavoidable, but you should read/populate as much from the catalog as you can.
One very powerful technique you can use is to store your additional information in a Metafield on the Product or Variant. You can get some ideas from this blog post on how merchants see metafields today.
To take an example from the blog
https://shopify.com/admin/bulk?resource_name=Product&edit=metafields.global.isbn:string
This will let a merchant edit a metafield for ISBN on all their products simultaneously, and you can link to this page from your application. More advanced merchants can then use catalog management apps to easily integrate the settings your channel needs with their own inventory management solutions.
Managing Product Errors
Sometimes a product isn't valid for you to publish. Sometimes an edit a merchant makes to a product will make a previously valid product invalid. In these cases, we provide a mechanism called Resource Feedback for you to contact the merchant outside your app.
You can issue two types of Resource Feedback, Product and Shop level. You should use the Product level resource for anything involving a product and its variants. You should use the Shop level feedback for any account level errors that affect the entire catalog.
After this happens, you should be checking the product for validity whenever you receive an update - if it is resolved, send a success update to dismiss the feedback.
Managing Product Updates
When a product changes, there's usually a need to take some action on your side. That could be adjusting the title or images, or it could be marking a product as out of stock.