Skip to main content
Anchor to productOptionsCreate

productOptionsCreate

mutation

Requires write_products access scope. Also: The user must have a permission to create product variants.

Creates one or more options on a product, such as size, color, or material. Each option includes a name, position, and a list of values. The combination of a product option and value creates a product variant.

Use the productOptionsCreate mutation for the following use cases:

  • Add product choices: Add a new option, like "Size" (Small, Medium, Large) or "Color" (Red, Blue, Green), to an existing product so customers can select their preferred variant.
  • Enable personalization features: Add options such as "Engraving text" to let customers customize their purchase.
  • Offer seasonal or limited edition products: Add a new value (for example, "Holiday red") to an existing option to support limited-time or seasonal variants.
  • Integrate with apps that manage product configuration: Allow third-party apps to add options, like "Bundle size", when customers select or customize product bundles.
  • Link options to metafields: Associate a product option with a custom metafield, like "Fabric code", for richer integrations with other systems or apps.

Note

The productOptionsCreate mutation enforces strict data integrity for product options and variants. All option positions must be sequential, and every option should be used by at least one variant. If you use the CREATE variant strategy, consider the maximum allowed number of variants for each product (100 by default, and 2,048 if you've enabled the Extended Variants developer preview).


After you create product options, you can further manage a product's configuration using related mutations:

Learn more about the product model and adding product data.

•[OptionCreateInput!]!
required

Options to add to the product.

•ID!
required

The ID of the product to update.

•ProductOptionCreateVariantStrategy
Default:LEAVE_AS_IS

The strategy defines which behavior the mutation should observe regarding variants. If not provided or set to null, the strategy LEAVE_AS_IS will be used.


Was this section helpful?

Anchor to ProductOptionsCreatePayload returnsProductOptionsCreatePayload returns

•Product

The updated product object.

•[ProductOptionsCreateUserError!]!
non-null

The list of errors that occurred from executing the mutation.


Was this section helpful?