The previous conversation here: https://community.shopify.com/c/graphql-basics-and/graphql-api-productcreate-does-not-publish-product-to-channel/m-p/1570760
Was never fully addressed and is still unresolved. Everyone who has migrated to graphql away from REST etc are now stuck STILL using depreciated end points all because unless you happen to be on a Shopify Plus platform or working with clients on Plus then you are effectively stuck.
We still cannot define new products channel availability and it is now March 2025… like seriously are Shopify Developers actually going to bother to fix this issue after creating the disconnect between product create and channels in the first place?!
And NO I will not resort to going back to REST depreciated end points which can at any update cycle disappear or cease to function. This is NOT the right answer.
So I take it given the duration since my post and lack of response from any official channels that there still isn’t a concrete method setup at all and developers are forced to use depreciated gateway calls back on REST away from GraphQL..

Hey there!
This issue has been a headache for me too. The documentation is not too friendly about this, and I needed to publish a product and collection to an Hydrogen sales channel.
I found a workaround that avoids falling back to REST. You can use the publishablePublish
mutation. The key is getting the channel ID first through a query first (I will cache or store maybe that channel id so I do not need to request it every time).
With this query I found my sales channel by name:
query GetSalesChannels {
channels (first: 50){
edges {
node{
id
name
}
}
}
}
Then publish the product using this mutation, where the publication resource id is the channel id I got as a result of the previous query:
mutation PublishProductToChannel($id: ID!, $input: [PublicationInput!]!) {
publishablePublish(id: $id, input: $input) {
publishable {
availablePublicationsCount {
count
}
resourcePublicationsCount {
count
}
}
shop {
publicationCount
}
userErrors {
field
message
}
}
}
// Variable here:
{
"id": "gid://shopify/Product/{{your product here}}",
"input": {
"publicationId": "gid://shopify/Publication/{{the channel id here}}"
}
}