Create product with published scope using GraphQL API

Shopify Rest APIs provides an attribute ‘published_scope’ that denotes where the product will be published, while creating a product, where the values could be either web (online store) or global (both online and POS).

https://shopify.dev/api/admin-rest/2021-10/resources/product#[post]/admin/api/2021-10/products.json

But I am using GraphQL APIs for creating a product. Do we have something similar in GraphQL API? I need to publish my product using API conditionally. Some could be only for web and others for both web and POS stores.

Below is the link for GraphQL API.

https://shopify.dev/api/admin-graphql/2021-10/mutations/productCreate

Hi @Ashu24

Publishing products via the API works a little differently with GraphQL, but you can definitely still do it. You’ll want to use the publishablePublish mutation which you can about in our docs here: https://shopify.dev/api/admin-graphql/2021-10/mutations/publishablePublish

Hope this is helpful!

1 Like

@csam Follow up question: where can i find publication id as mentioned in publishablePublish mutation.

{
“id”: “”,
“input”: {
“channelId”: “”,
“publicationId”: “”,
“publishDate”: “”
}
}

As mentioned there, id is the resource id, so that would br the Product ID. Where can I find this publication Id? can you give me some format or steps where to find this?

@csam Any update on this?

Hi @Ashu24

I believe that publicationId is being used now rather than the channelId field, which has been deprecated. Looking at the docs I believe you would use the same value as you would for channelId.

Hi Csam,

I’m trying to publish a product via the publishablePublish, like so:

mutation {
    publishablePublish (
      id: "gid://shopify/Product/${id}",
      input: {
        publicationId: "gid://shopify/Channel/${publication.publicationId}"
      }
    ) {
      userErrors {
        field
        message
      }
    }
  }

However I’m getting this back:

{
  message: 'invalid id',
  locations: [ { line: 2, column: 5 } ],
  path: [ 'publishablePublish' ]
}

I’ve triple checked the product id, and it appears right, any ideas?