Anchor to section titled 'undefined'

productChangeStatus
mutation
deprecated

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

Changes the status of a product. This allows you to set the availability of the product across all channels. Use productUpdate instead.


Anchor to productId
productId
required

The ID of the product.

The status to be assigned to the product.


Was this section helpful?

The product object.

The list of errors that occurred from executing the mutation.


Was this section helpful?

Examples

Hide code
Copy
mutation productChangeStatus($productId: ID!, $status: ProductStatus!) {
  productChangeStatus(productId: $productId, status: $status) {
    product {
      id
      status
    }
    userErrors {
      field
      message
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation productChangeStatus($productId: ID!, $status: ProductStatus!) { productChangeStatus(productId: $productId, status: $status) { product { id status } userErrors { field message } } }",
 "variables": {
    "productId": "gid://shopify/Product/108828309",
    "status": "ARCHIVED"
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  mutation productChangeStatus($productId: ID!, $status: ProductStatus!) {
    productChangeStatus(productId: $productId, status: $status) {
      product {
        id
        status
      }
      userErrors {
        field
        message
      }
    }
  }`,
  {
    variables: {
      "productId": "gid://shopify/Product/108828309",
      "status": "ARCHIVED"
    },
  },
);

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 productChangeStatus($productId: ID!, $status: ProductStatus!) {
    productChangeStatus(productId: $productId, status: $status) {
      product {
        id
        status
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY

variables = {
  "productId": "gid://shopify/Product/108828309",
  "status": "ARCHIVED"
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `mutation productChangeStatus($productId: ID!, $status: ProductStatus!) {
      productChangeStatus(productId: $productId, status: $status) {
        product {
          id
          status
        }
        userErrors {
          field
          message
        }
      }
    }`,
    "variables": {
      "productId": "gid://shopify/Product/108828309",
      "status": "ARCHIVED"
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  mutation productChangeStatus($productId: ID!, $status: ProductStatus!) {
    productChangeStatus(productId: $productId, status: $status) {
      product {
        id
        status
      }
      userErrors {
        field
        message
      }
    }
  }
QUERY;

$variables = [
  "productId" => "gid://shopify/Product/108828309",
  "status" => "ARCHIVED",
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "productId": "gid://shopify/Product/108828309",
  "status": "ARCHIVED"
}
Hide code
Response
JSON
{
  "productChangeStatus": {
    "product": {
      "id": "gid://shopify/Product/108828309",
      "status": "ARCHIVED"
    },
    "userErrors": []
  }
}