Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

Publish to all channels

Solved

Publish to all channels

kindahome
Excursionist
13 3 2

Hello

 

Is there a way to publish directy a product to all channels available?

 

 

mutation ProductCreate($input: ProductInput!, $media: [CreateMediaInput!] ) {
  productCreate(input: $input, media: $media) {
    userErrors {
        field
        message
    }
    product {
        title
        handle
        id
        media (first: 50) {
          edges {
            cursor
            node {
              status 
                ... on MediaImage {
                  id
                  image {
                    id
                    originalSrc
                  }
                }                          
            }
          }
          pageInfo {
            hasNextPage
          }
        }
        variants (first: 25) {
          edges {
            cursor
            node {
              id
              sku
              title
            }
          }
          pageInfo {
            hasNextPage
          }
        }
    }
  }
}

 

 

Or/And directly update:

 

 

mutation ProductUpdate($input: ProductInput!) {
  productUpdate(input: $input) {
    userErrors {
        field
        message
    }
    product {
      title
      id
      variants (first: 25) {
        edges {
          cursor
          node {
            id
            sku
            title
          }
        }
        pageInfo {
          hasNextPage
        }
      }
    }
  }
}

 

 

Accepted Solution (1)

kindahome
Excursionist
13 3 2

This is an accepted solution.

after hours with chat talking with support, and nobody knows and helps, I could publish the solution...

 

Imagina that I needed to use deprecated fields because the fields that are supposed to be used, didn't work...

 

 

mutation publishablePublish($id: ID!, $input: [PublicationInput!]!) {
  publishablePublish(id: $id, input: $input) {
    publishable {
      availablePublicationCount
      publicationCount
      publishedOnCurrentPublication
    }
    shop {
      id
    }
    userErrors {
      field
      message
    }
  }
}

 

 

Call:

 

 

async function publishToChannelHelper(variables) {
  try {

    //COST - 37
    await getApiPoints(37);
    
    let myTesting = await axios.post('http://localhost:3060/graphql', {"query": gq.publishChannel, "variables": variables}
            ).then( async (res) => {  
			
              console.log(res.data)
              

              return res.data
      
        })

        console.log("THIS IS TESTING")
        console.log(myTesting.errors[0])
        
    return myTesting
  } catch (err) {
    throw err
  }
}

 

 

The data:

 

let publishToChannelStructure = {
            "id": "gid://shopify/Product/XXXXX",
            "input":{
              "channelId": "gid://shopify/Channel/XXXX"      
            }
          };
  
          let publisher = await shopifyHelpers
          .publishToChannelHelper(publishToChannelStructure)
          .then(async (res) => {
            console.log("FIM")
          }) 

View solution in original post

Reply 1 (1)

kindahome
Excursionist
13 3 2

This is an accepted solution.

after hours with chat talking with support, and nobody knows and helps, I could publish the solution...

 

Imagina that I needed to use deprecated fields because the fields that are supposed to be used, didn't work...

 

 

mutation publishablePublish($id: ID!, $input: [PublicationInput!]!) {
  publishablePublish(id: $id, input: $input) {
    publishable {
      availablePublicationCount
      publicationCount
      publishedOnCurrentPublication
    }
    shop {
      id
    }
    userErrors {
      field
      message
    }
  }
}

 

 

Call:

 

 

async function publishToChannelHelper(variables) {
  try {

    //COST - 37
    await getApiPoints(37);
    
    let myTesting = await axios.post('http://localhost:3060/graphql', {"query": gq.publishChannel, "variables": variables}
            ).then( async (res) => {  
			
              console.log(res.data)
              

              return res.data
      
        })

        console.log("THIS IS TESTING")
        console.log(myTesting.errors[0])
        
    return myTesting
  } catch (err) {
    throw err
  }
}

 

 

The data:

 

let publishToChannelStructure = {
            "id": "gid://shopify/Product/XXXXX",
            "input":{
              "channelId": "gid://shopify/Channel/XXXX"      
            }
          };
  
          let publisher = await shopifyHelpers
          .publishToChannelHelper(publishToChannelStructure)
          .then(async (res) => {
            console.log("FIM")
          })