# collectionAddProducts - admin-graphql - MUTATION Version: 2024-10 ## Description Adds products to a collection. ### Access Scopes `write_products` access scope. Also: The store must not be on the Starter or Retail plans and user must have a permission to add products to a collection. ## Arguments * [id](/docs/api/admin-graphql/2024-10/scalars/ID): ID! - The ID of the collection that's being updated. This can't be a smart collection. * [productIds](/docs/api/admin-graphql/2024-10/scalars/ID): ID! - The IDs of the products that are being added to the collection. If any of the products is already present in the input collection, then an error is raised and no products are added. ## Returns * [collection](/docs/api/admin-graphql/2024-10/objects/Collection): Collection The updated collection. Returns `null` if an error is raised. * [userErrors](/docs/api/admin-graphql/2024-10/objects/UserError): UserError! The list of errors that occurred from executing the mutation. ## Examples ### Add a product to a collection that doesn't exist Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/-1\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/-1\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/-1\",\n \"productIds\": [\"gid://shopify/Product/108828309\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/-1\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/-1", "productIds": [ "gid://shopify/Product/108828309" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": null, "userErrors": [ { "field": [ "id" ], "message": "Collection does not exist" } ] } } } ### Add a product to a smart collection Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/142458073\",\n \"productIds\": [\n \"gid://shopify/Product/910489600\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/142458073\",\n \"productIds\": [\n \"gid://shopify/Product/910489600\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/142458073\",\n \"productIds\": [\"gid://shopify/Product/910489600\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/142458073\",\n \"productIds\": [\n \"gid://shopify/Product/910489600\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/142458073", "productIds": [ "gid://shopify/Product/910489600" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": null, "userErrors": [ { "field": [ "id" ], "message": "Can't manually add products to a smart collection" } ] } } } ### Add products that already belong to the specified collection Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/632910392\",\n \"gid://shopify/Product/20995642\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/632910392\",\n \"gid://shopify/Product/20995642\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\"gid://shopify/Product/108828309\", \"gid://shopify/Product/632910392\", \"gid://shopify/Product/20995642\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/632910392\",\n \"gid://shopify/Product/20995642\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/1007901140", "productIds": [ "gid://shopify/Product/108828309", "gid://shopify/Product/632910392", "gid://shopify/Product/20995642" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": null, "userErrors": [ { "field": [ "productIds" ], "message": "Error adding gid://shopify/Product/108828309,gid://shopify/Product/20995642 to collection" } ] } } } ### Add products that don't exist to an existing collection Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/-1\",\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/-2\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/-1\",\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/-2\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\"gid://shopify/Product/-1\", \"gid://shopify/Product/108828309\", \"gid://shopify/Product/-2\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/-1\",\n \"gid://shopify/Product/108828309\",\n \"gid://shopify/Product/-2\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/636030761", "productIds": [ "gid://shopify/Product/-1", "gid://shopify/Product/108828309", "gid://shopify/Product/-2" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": { "id": "gid://shopify/Collection/636030761", "title": "Unpublished items", "products": { "nodes": [ { "id": "gid://shopify/Product/108828309", "title": "Draft" } ] } }, "userErrors": [] } } } ### Add products to an existing collection Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\"gid://shopify/Product/121709582\", \"gid://shopify/Product/108828309\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/636030761", "productIds": [ "gid://shopify/Product/121709582", "gid://shopify/Product/108828309" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": { "id": "gid://shopify/Collection/636030761", "title": "Unpublished items", "products": { "nodes": [ { "id": "gid://shopify/Product/121709582", "title": "Boots" }, { "id": "gid://shopify/Product/108828309", "title": "Draft" } ] } }, "userErrors": [] } } } ### Add products to collections will fail when CollectionsAccess returns false Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\"gid://shopify/Product/121709582\", \"gid://shopify/Product/108828309\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/636030761\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\",\n \"gid://shopify/Product/108828309\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation collectionAddProducts($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/636030761", "productIds": [ "gid://shopify/Product/121709582", "gid://shopify/Product/108828309" ] } #### Graphql Response { "errors": [ { "message": "Access denied for collectionAddProducts field. Required access: `write_products` access scope. Also: The store must not be on the Starter or Retail plans and user must have a permission to add products to a collection.", "locations": [ { "line": 2, "column": 3 } ], "path": [ "collectionAddProducts" ], "extensions": { "code": "ACCESS_DENIED", "documentation": "https://shopify.dev/api/usage/access-scopes", "requiredAccess": "`write_products` access scope. Also: The store must not be on the Starter or Retail plans and user must have a permission to add products to a collection." } } ], "data": { "collectionAddProducts": null } } ### Adds a product to a custom collection Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation AddToCollection($id: ID!, $productIds: [ID!]!) { collectionAddProducts(id: $id, productIds: $productIds) { collection { id title products(first: 10) { nodes { id title } } } userErrors { field message } } }\",\n \"variables\": {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\"\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation AddToCollection($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\"\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation AddToCollection($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\"gid://shopify/Product/121709582\"]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation AddToCollection($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"id\": \"gid://shopify/Collection/1007901140\",\n \"productIds\": [\n \"gid://shopify/Product/121709582\"\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation AddToCollection($id: ID!, $productIds: [ID!]!) {\n collectionAddProducts(id: $id, productIds: $productIds) {\n collection {\n id\n title\n products(first: 10) {\n nodes {\n id\n title\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "id": "gid://shopify/Collection/1007901140", "productIds": [ "gid://shopify/Product/121709582" ] } #### Graphql Response { "data": { "collectionAddProducts": { "collection": { "id": "gid://shopify/Collection/1007901140", "title": "Featured items", "products": { "nodes": [ { "id": "gid://shopify/Product/108828309", "title": "Draft" }, { "id": "gid://shopify/Product/20995642", "title": "Element" }, { "id": "gid://shopify/Product/121709582", "title": "Boots" } ] } }, "userErrors": [] } } }