# ProductSetInput - admin-graphql - INPUT_OBJECT
Version: unstable
## Description
The input fields required to create or update a product via ProductSet mutation.
### Access Scopes
## Fields
* [category](/docs/api/admin-graphql/unstable/scalars/ID): ID - The ID of the [category](https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=sg-4-17-2-17)
that's associated with the product.
* [claimOwnership](/docs/api/admin-graphql/unstable/input-objects/ProductClaimOwnershipInput): ProductClaimOwnershipInput - The input field to enable an app to provide additional product features.
For example, you can specify
[`bundles: true`](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/ProductClaimOwnershipInput#field-bundles)
in the `claimOwnership` field to let an app add a
[product configuration extension](https://shopify.dev/docs/apps/build/product-merchandising/bundles/add-merchant-config-ui).
* [collections](/docs/api/admin-graphql/unstable/scalars/ID): ID - The IDs of collections that this product will be a member of.
* [combinedListingRole](/docs/api/admin-graphql/unstable/enums/CombinedListingsRole): CombinedListingsRole - The role of the product in a product grouping. It can only be set during creation.
* [descriptionHtml](/docs/api/admin-graphql/unstable/scalars/String): String - The description of the product, with HTML tags.
For example, the description might include bold `` and italic `` text.
* [files](/docs/api/admin-graphql/unstable/input-objects/FileSetInput): FileSetInput - The files to associate with the product.
* [giftCard](/docs/api/admin-graphql/unstable/scalars/Boolean): Boolean - Whether the product is a gift card.
* [giftCardTemplateSuffix](/docs/api/admin-graphql/unstable/scalars/String): String - The [theme template](https://shopify.dev/docs/storefronts/themes/architecture/templates) that's used when customers view a gift card in a store.
* [handle](/docs/api/admin-graphql/unstable/scalars/String): String - A unique, human-readable string of the product's title. A handle can contain letters, hyphens (`-`), and numbers, but no spaces.
The handle is used in the online store URL for the product.
For example, if a product is titled "Black Sunglasses", then the handle is `black-sunglasses`.
* [id](/docs/api/admin-graphql/unstable/scalars/ID): ID - The product's ID.
If you're creating a product, then you don't need to pass the `id` as input to the
[`productCreate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productCreate) mutation.
If you're updating a product, then you do need to pass the `id` as input to the
[`productUpdate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/productUpdate) mutation
to identify which product you want to update.
* [metafields](/docs/api/admin-graphql/unstable/input-objects/MetafieldInput): MetafieldInput - The metafields to associate with this product.
* [productOptions](/docs/api/admin-graphql/unstable/input-objects/OptionSetInput): OptionSetInput - List of custom product options and option values (maximum of 3 per product).
* [productType](/docs/api/admin-graphql/unstable/scalars/String): String - The [product type](https://help.shopify.com/manual/products/details/product-type)
that merchants define.
* [redirectNewHandle](/docs/api/admin-graphql/unstable/scalars/Boolean): Boolean - Whether a redirect is required after a new handle has been provided.
If `true`, then the old handle is redirected to the new one automatically.
* [requiresSellingPlan](/docs/api/admin-graphql/unstable/scalars/Boolean): Boolean - Whether the product can only be purchased with a selling plan (subscription). Products that are sold exclusively on subscription can only be created on online stores. If set to `true` on an already existing product, then the product will be marked unavailable on channels that don't support subscriptions.
* [seo](/docs/api/admin-graphql/unstable/input-objects/SEOInput): SEOInput - The [SEO title and description](https://help.shopify.com/manual/promoting-marketing/seo/adding-keywords)
that are associated with a product.
* [status](/docs/api/admin-graphql/unstable/enums/ProductStatus): ProductStatus - The status of the product.
* [tags](/docs/api/admin-graphql/unstable/scalars/String): String - A comma-separated list of searchable keywords that are
associated with the product. For example, a merchant might apply the `sports`
and `summer` tags to products that are associated with sportwear for summer.
Updating `tags` overwrites any existing tags that were previously added to the product.
To add new tags without overwriting existing tags, use the
[`tagsAdd`](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd)
mutation.
* [templateSuffix](/docs/api/admin-graphql/unstable/scalars/String): String - The [theme template](https://shopify.dev/docs/storefronts/themes/architecture/templates) that's used when customers view a product in a store.
* [title](/docs/api/admin-graphql/unstable/scalars/String): String - The name for the product that displays to customers. The title is used to construct the product's handle.
For example, if a product is titled "Black Sunglasses", then the handle is `black-sunglasses`.
* [variants](/docs/api/admin-graphql/unstable/input-objects/ProductVariantSetInput): ProductVariantSetInput - A list of variants associated with the product.
* [vendor](/docs/api/admin-graphql/unstable/scalars/String): String - The name of the product's vendor.
## Input objects with this input object
* [productSet](/docs/api/admin-graphql/unstable/mutations/productSet)
## Examples