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

Creates a product.

Learn more about the product model and adding product data.


List of new media to be added to the product.

The properties of the new product.

The default preferences in the product create form.


Was this section helpful?

The product object.

The shop associated with the product.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
DescriptionCopy
mutation createProductMetafields($input: ProductInput!) {
  productCreate(input: $input) {
    product {
      id
      metafields(first: 3) {
        edges {
          node {
            id
            namespace
            key
            value
          }
        }
      }
    }
    userErrors {
      message
      field
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/unstable/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation createProductMetafields($input: ProductInput!) { productCreate(input: $input) { product { id metafields(first: 3) { edges { node { id namespace key value } } } } userErrors { message field } } }",
 "variables": {
    "input": {
      "metafields": [
        {
          "namespace": "my_field",
          "key": "liner_material",
          "type": "single_line_text_field",
          "value": "Synthetic Leather"
        }
      ],
      "title": "Hiking Boots"
    }
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation createProductMetafields($input: ProductInput!) {
    productCreate(input: $input) {
      product {
        id
        metafields(first: 3) {
          edges {
            node {
              id
              namespace
              key
              value
            }
          }
        }
      }
      userErrors {
        message
        field
      }
    }
  }`,
  {
    variables: {
      "input": {
        "metafields": [
          {
            "namespace": "my_field",
            "key": "liner_material",
            "type": "single_line_text_field",
            "value": "Synthetic Leather"
          }
        ],
        "title": "Hiking Boots"
      }
    },
  },
);

const data = await response.json();
session = ShopifyAPI::Auth::Session.new(
  shop: "your-development-store.myshopify.com",
  access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
  session: session
)

query = <<~QUERY
  mutation createProductMetafields($input: ProductInput!) {
    productCreate(input: $input) {
      product {
        id
        metafields(first: 3) {
          edges {
            node {
              id
              namespace
              key
              value
            }
          }
        }
      }
      userErrors {
        message
        field
      }
    }
  }
QUERY

variables = {
  "input": {
    "metafields": [{"namespace"=>"my_field", "key"=>"liner_material", "type"=>"single_line_text_field", "value"=>"Synthetic Leather"}],
    "title": "Hiking Boots"
  }
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation createProductMetafields($input: ProductInput!) {
      productCreate(input: $input) {
        product {
          id
          metafields(first: 3) {
            edges {
              node {
                id
                namespace
                key
                value
              }
            }
          }
        }
        userErrors {
          message
          field
        }
      }
    }`,
    "variables": {
      "input": {
        "metafields": [
          {
            "namespace": "my_field",
            "key": "liner_material",
            "type": "single_line_text_field",
            "value": "Synthetic Leather"
          }
        ],
        "title": "Hiking Boots"
      }
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation createProductMetafields($input: ProductInput!) {
    productCreate(input: $input) {
      product {
        id
        metafields(first: 3) {
          edges {
            node {
              id
              namespace
              key
              value
            }
          }
        }
      }
      userErrors {
        message
        field
      }
    }
  }
QUERY;

$variables = [
  "input" => [
    "metafields" => [{"namespace"=>"my_field", "key"=>"liner_material", "type"=>"single_line_text_field", "value"=>"Synthetic Leather"}],
    "title" => "Hiking Boots",
  ],
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "input": {
    "metafields": [
      {
        "namespace": "my_field",
        "key": "liner_material",
        "type": "single_line_text_field",
        "value": "Synthetic Leather"
      }
    ],
    "title": "Hiking Boots"
  }
}
Hide code
Response
JSON
{
  "productCreate": {
    "product": {
      "id": "gid://shopify/Product/1072481076",
      "metafields": {
        "edges": [
          {
            "node": {
              "id": "gid://shopify/Metafield/1069229090",
              "namespace": "my_field",
              "key": "liner_material",
              "value": "Synthetic Leather"
            }
          }
        ]
      }
    },
    "userErrors": []
  }
}