shopResourceFeedbackCreate
Requires access scope. Also: App must be configured to use the Storefront API or as a Sales Channel.
The object lets your app report the status of shops and their resources. For example, if
your app is a marketplace channel, then you can use resource feedback to alert merchants that they need to connect their marketplace account by signing in.
Resource feedback notifications are displayed to the merchant on the home screen of their Shopify admin, and in the product details view for any products that are published to your app.
This resource should be used only in cases where you're describing steps that a merchant is required to complete. If your app offers optional or promotional set-up steps, or if it makes recommendations, then don't use resource feedback to let merchants know about them.
Sending feedback on a shop
You can send resource feedback on a shop to let the merchant know what steps they need to take to make sure that your app is set up correctly. Feedback can have one of two states: or
success
. You need to send a feedback request for each step that the merchant is required to complete.
If there are multiple set-up steps that require merchant action, then send feedback with a state of as merchants complete prior steps. And to remove the feedback message from the Shopify admin, send a
success
feedback request.
Important
Sending feedback replaces previously sent feedback for the shop. Send a new mutation to push the latest state of a shop or its resources to Shopify.
Arguments
- Anchor to inputinput•Resource
Feedback requiredCreate Input! The fields required to create shop feedback.
Anchor to ShopResourceFeedbackCreatePayload returnsShopResourceFeedbackCreatePayload returns
- Anchor to feedbackfeedback•
The shop feedback that's created.
- Anchor to userErrorsuser•
Errors The list of errors that occurred from executing the mutation.
- Create a new ResourceFeedback
- Create a shop feedback record indicating a problem specific to your app
- Create a shop feedback record indicating the shop is usable by your app
- Sending an invalid feedback payload returns an error
- Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error
- shopResourceFeedbackCreate reference
Examples
mutation ShopResourceFeedbackCreate($input: ResourceFeedbackCreateInput!) {
shopResourceFeedbackCreate(input: $input) {
feedback {
messages {
message
}
feedbackGeneratedAt
state
}
userErrors {
field
message
}
}
}
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": "mutation ShopResourceFeedbackCreate($input: ResourceFeedbackCreateInput!) { shopResourceFeedbackCreate(input: $input) { feedback { messages { message } feedbackGeneratedAt state } userErrors { field message } } }",
"variables": {
"input": {
"messages": [
"is not connected. Connect your account to use this sales channel."
],
"state": "REQUIRES_ACTION",
"feedbackGeneratedAt": "2024-12-05T14:05:02.351662Z"
}
}
}'
const { admin } = await authenticate.admin(request);
const response = await admin.graphql(
`#graphql
mutation ShopResourceFeedbackCreate($input: ResourceFeedbackCreateInput!) {
shopResourceFeedbackCreate(input: $input) {
feedback {
messages {
message
}
feedbackGeneratedAt
state
}
userErrors {
field
message
}
}
}`,
{
variables: {
"input": {
"messages": [
"is not connected. Connect your account to use this sales channel."
],
"state": "REQUIRES_ACTION",
"feedbackGeneratedAt": "2024-12-05T14:05:02.351662Z"
}
},
},
);
const data = await response.json();
const client = new shopify.clients.Graphql({session});
const data = await client.query({
data: {
"query": `mutation ShopResourceFeedbackCreate($input: ResourceFeedbackCreateInput!) {
shopResourceFeedbackCreate(input: $input) {
feedback {
messages {
message
}
feedbackGeneratedAt
state
}
userErrors {
field
message
}
}
}`,
"variables": {
"input": {
"messages": [
"is not connected. Connect your account to use this sales channel."
],
"state": "REQUIRES_ACTION",
"feedbackGeneratedAt": "2024-12-05T14:05:02.351662Z"
}
},
},
});
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
mutation ShopResourceFeedbackCreate($input: ResourceFeedbackCreateInput!) {
shopResourceFeedbackCreate(input: $input) {
feedback {
messages {
message
}
feedbackGeneratedAt
state
}
userErrors {
field
message
}
}
}
QUERY
variables = {
"input": {
"messages": ["is not connected. Connect your account to use this sales channel."],
"state": "REQUIRES_ACTION",
"feedbackGeneratedAt": "2024-12-05T14:05:02.351662Z"
}
}
response = client.query(query: query, variables: variables)