productSet
Creates or updates a product in a single request.
Use this mutation when syncing information from an external data source into Shopify.
When using this mutation to update a product, specify that product's `id` in the input.
Any list field (e.g.
[collections](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-collections),
[metafields](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-metafields),
[variants](https://shopify.dev/api/admin-graphql/current/input-objects/ProductSetInput#field-productsetinput-variants))
will be updated so that all included entries are either created or updated, and all existing entries not
included will be deleted.
All other fields will be updated to the value passed. Omitted fields will not be updated.
When run in synchronous mode, the `productSet` mutation has an input limit of 100 variants. If you anticipate
any of your use cases requiring support for more than 100 variants, please use the mutation in asynchronous
mode (default).
When run in synchronous mode, you will get the product back in the response.
In asynchronous mode, you will instead get a
[ProductSetOperation](https://shopify.dev/api/admin-graphql/current/objects/ProductSetOperation)
object back. You can then use the
[productOperation](https://shopify.dev/api/admin-graphql/current/queries/productOperation) query to
retrieve the updated product data. This query uses the `ProductSetOperation` object to
check the status of the operation and to retrieve the details of the updated product and its variants.
If you need to update a subset of variants, use one of the bulk variant mutations:
- [productVariantsBulkCreate](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkCreate)
- [productVariantsBulkUpdate](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkUpdate)
- [productVariantsBulkDelete](https://shopify.dev/api/admin-graphql/current/mutations/productVariantsBulkDelete)
If you need to update options, use one of the product option mutations:
- [productOptionsCreate](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsCreate)
- [productOptionUpdate](https://shopify.dev/api/admin-graphql/current/mutations/productOptionUpdate)
- [productOptionsDelete](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsDelete)
- [productOptionsReorder](https://shopify.dev/api/admin-graphql/current/mutations/productOptionsReorder)
See our guide to
[sync product data from an external source](https://shopify.dev/api/admin/migrate/new-product-model/sync-data)
for more.