Returns a ProductOperation resource by ID.

This can be used to query the ProductSetOperation, using the ID that was returned when the product was created or updated by the ProductSet mutation.

The status field indicates whether the operation is CREATED, ACTIVE, or COMPLETE.

The product field provides the details of the created or updated product.

For the ProductSetOperation, the userErrors field provides mutation errors that occurred during the operation.


Anchor to id
id
required

The ID of the ProductOperation to return.


Was this section helpful?

Anchor to ProductOperation
ProductOperation
Access requirements

An entity that represents details of an asynchronous operation on a product.


Was this section helpful?

Examples

Hide code
Copy
query ProductDeleteOperation($id: ID!) {
  productOperation(id: $id) {
    ... on ProductDeleteOperation {
      id
      status
      deletedProductId
      product {
        id
      }
    }
  }
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2025-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "query ProductDeleteOperation($id: ID!) { productOperation(id: $id) { ... on ProductDeleteOperation { id status deletedProductId product { id } } } }",
 "variables": {
    "id": "gid://shopify/ProductDeleteOperation/843567278"
  }
}'
const { admin } = await authenticate.admin(request);

const response = await admin.graphql(
  `#graphql
  query ProductDeleteOperation($id: ID!) {
    productOperation(id: $id) {
      ... on ProductDeleteOperation {
        id
        status
        deletedProductId
        product {
          id
        }
      }
    }
  }`,
  {
    variables: {
      "id": "gid://shopify/ProductDeleteOperation/843567278"
    },
  },
);

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
  query ProductDeleteOperation($id: ID!) {
    productOperation(id: $id) {
      ... on ProductDeleteOperation {
        id
        status
        deletedProductId
        product {
          id
        }
      }
    }
  }
QUERY

variables = {
  "id": "gid://shopify/ProductDeleteOperation/843567278"
}

response = client.query(query: query, variables: variables)
const client = new shopify.clients.Graphql({session});
const data = await client.query({
  data: {
    "query": `query ProductDeleteOperation($id: ID!) {
      productOperation(id: $id) {
        ... on ProductDeleteOperation {
          id
          status
          deletedProductId
          product {
            id
          }
        }
      }
    }`,
    "variables": {
      "id": "gid://shopify/ProductDeleteOperation/843567278"
    },
  },
});
use Shopify\Clients\Graphql;

$client = new Graphql("your-development-store.myshopify.com", $accessToken);
$query = <<<QUERY
  query ProductDeleteOperation($id: ID!) {
    productOperation(id: $id) {
      ... on ProductDeleteOperation {
        id
        status
        deletedProductId
        product {
          id
        }
      }
    }
  }
QUERY;

$variables = [
  "id" => "gid://shopify/ProductDeleteOperation/843567278",
];

$response = $client->query(["query" => $query, "variables" => $variables]);
Hide code
Input variables
Copy
{
  "id": "gid://shopify/ProductDeleteOperation/843567278"
}
Hide code
Response
JSON
{
  "productOperation": {
    "id": "gid://shopify/ProductDeleteOperation/843567278",
    "status": "COMPLETE",
    "deletedProductId": "gid://shopify/Product/20995642",
    "product": null
  }
}