Product ResourceFeedback

Version 2019-10

Important

Product ResourceFeedback is only for use with the Sales Channel SDK.

The Product ResourceFeedback API allows you to communicate the state of a shop's individual products, as it pertains to your application, by sending product feedback within the Shopify admin. Once created, product resource feedback is used help merchants get your app setup on their store by addressing missing steps or fixing problems.

Send product feedback

You can send feedback on a product to let merchants know what steps they need to take to make sure your app is set up correctly. Feedback can have one of two states: requires_action or success. You will need to send a requires_action feedback request for each step that the merchant is required to complete. If there are multiple setup steps requiring merchant action, send feedback with a state of requires_action as merchants complete prior steps. Send a success feedback request to remove the feedback message from Shopify admin.

Important

Sending feedback replaces previously sent feedback for the Shop. Unlike REST-style APIs, you don't need to make a PATCH or PUT request to update any previously sent feedback. Send a new POST request to push the latest state of a shop or its resources to Shopify.

Formatting the resource feedback message field

If your state is requires_action you can send up to four string messages, which communicate the action to be taken by the merchant. Each string must be a single message up to 100 characters long, must start with a capital letter (but not use all caps), and must end with a period. You must adhere to the message formatting rules or your requests will fail:

Examples:

  • Needs at least one image.
  • Needs to be a shippable product.
  • Merchants viewing individual products will see your app's messages as a bulleted list of errors. Other user interfaces in Shopify admin will report statistics like the number of errors your app has reported. Once the merchant has made a single or a series of updates to validate the product, your app can send a status ofsuccess.

    What you can do with Product ResourceFeedback

    The Shopify API lets you do the following with the Product ResourceFeedback resource. More detailed versions of these general actions may be available:

    Product ResourceFeedback properties

    created_at
    "created_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was stored by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    updated_at
    "updated_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was last updated by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    resource_id
    "resource_id": 321

    Unique id of the resource.

    resource_type
    "resource_type": "Product"

    Type of resource for which feedback is returned. eg. Shop, Product.

    state
    "state": "requires_action"

    Indicates the state that the Shop or resource is in, from the perspective of your app.

    messages
    "messages": [
      "Needs at least one image."
    ]

    A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app encounters when trying to make use of their Shop and its resources.

    Required only when state is requires_action. Disallowed when state is success.

    Content restrictions for product feedback: four messages up to 100 characters long.

    feedback_generated_at
    "feedback_generated_at": "2020-09-08T17:05:53.682152Z"

    The time at which the payload is constructed. Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival. Type: ISO 8601 UTC DateTime as string with year, month [or week], day, hour, minute, second, millisecond, and time zone.

    Note

    If you queue a Feedback API payload for delivery at a later time, do not update this value when the API call is actually made; ensure that the current time is set when building the payload.

    resource_updated_at
    "resource_updated_at": 2020-09-08 17:05:53 UTC

    The forwarded updated_at timestamp of the product. Used only for versioned resources, where the updated_at timestamp changes based on merchant actions. When required, it is used along with feedback_generated_at to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.

    Endpoints

    POST /admin/api/2019-10/products/{product_id}/resource_feedback.json

    Create product feedback.

    product_id

    Create feedback for a specific product, using its product id.

    state
    • requires_action: Indicates that your app requires the merchant to resolve an issue with this product.
    • success: Indicates that the app does not have any outstanding issues with this product.

    Create a product feedback record indicating the product is usable by your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:03.867413Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:04-04:00",
        "updated_at": "2020-09-08T13:09:04-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [],
        "feedback_generated_at": "2020-09-08T13:09:03-04:00",
        "state": "success"
      }
    }

    If the app is not configured as a Sales Channel, the API returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:04.687851Z"
      }
    }
    View Response
    HTTP/1.1 403 Forbidden
    {
      "errors": {
        "message": "App must be configured as a Sales Channel."
      }
    }

    Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:05.435118Z"
      }
    }
    View Response
    HTTP/1.1 409 Conflict
    {
      "errors": {
        "messages": [
          "Feedback request not delivered. Feedback request is older than a previously delivered feedback request."
        ]
      }
    }

    Sending an invalid feedback payload returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "foobar",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:06.190922Z"
      }
    }
    View Response
    HTTP/1.1 422 Unprocessable Entity
    {
      "errors": {
        "messages": [
          "Validation failed: State must be one of success and requires_action"
        ]
      }
    }

    Create a product feedback record indicating a problem specific to your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "requires_action",
        "messages": [
          "Needs at least one image."
        ],
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:07.710899Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:08-04:00",
        "updated_at": "2020-09-08T13:09:08-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [
          "Needs at least one image."
        ],
        "feedback_generated_at": "2020-09-08T13:09:07-04:00",
        "state": "requires_action"
      }
    }
    GET /admin/api/2019-10/products/{product_id}/resource_feedback.json
    Retrieve all product feedback from your app associated with the product.
    product_id

    Retrieve feedback for a specific product, by product id.

    Get a list of resource feedback records for a specific product

    GET /admin/api/2020-07/products/632910392/resource_feedback.json
    View Response
    HTTP/1.1 200 OK
    {
      "resource_feedback": [
        {
          "created_at": "2020-09-08T13:09:06-04:00",
          "updated_at": "2020-09-08T13:09:06-04:00",
          "resource_id": 632910392,
          "resource_type": "Product",
          "resource_updated_at": "2020-09-08T13:05:54-04:00",
          "messages": [
            "Needs at least one image."
          ],
          "feedback_generated_at": "2020-09-08T12:09:06-04:00",
          "state": "requires_action"
        }
      ]
    }
    Version 2020-01

    Important

    Product ResourceFeedback is only for use with the Sales Channel SDK.

    The Product ResourceFeedback API allows you to communicate the state of a shop's individual products, as it pertains to your application, by sending product feedback within the Shopify admin. Once created, product resource feedback is used help merchants get your app setup on their store by addressing missing steps or fixing problems.

    Send product feedback

    You can send feedback on a product to let merchants know what steps they need to take to make sure your app is set up correctly. Feedback can have one of two states: requires_action or success. You will need to send a requires_action feedback request for each step that the merchant is required to complete. If there are multiple setup steps requiring merchant action, send feedback with a state of requires_action as merchants complete prior steps. Send a success feedback request to remove the feedback message from Shopify admin.

    Important

    Sending feedback replaces previously sent feedback for the Shop. Unlike REST-style APIs, you don't need to make a PATCH or PUT request to update any previously sent feedback. Send a new POST request to push the latest state of a shop or its resources to Shopify.

    Formatting the resource feedback message field

    If your state is requires_action you can send up to four string messages, which communicate the action to be taken by the merchant. Each string must be a single message up to 100 characters long, must start with a capital letter (but not use all caps), and must end with a period. You must adhere to the message formatting rules or your requests will fail:

    Examples:

  • Needs at least one image.
  • Needs to be a shippable product.
  • Merchants viewing individual products will see your app's messages as a bulleted list of errors. Other user interfaces in Shopify admin will report statistics like the number of errors your app has reported. Once the merchant has made a single or a series of updates to validate the product, your app can send a status ofsuccess.

    What you can do with Product ResourceFeedback

    The Shopify API lets you do the following with the Product ResourceFeedback resource. More detailed versions of these general actions may be available:

    Product ResourceFeedback properties

    created_at
    "created_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was stored by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    updated_at
    "updated_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was last updated by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    resource_id
    "resource_id": 321

    Unique id of the resource.

    resource_type
    "resource_type": "Product"

    Type of resource for which feedback is returned. eg. Shop, Product.

    state
    "state": "requires_action"

    Indicates the state that the Shop or resource is in, from the perspective of your app.

    messages
    "messages": [
      "Needs at least one image."
    ]

    A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app encounters when trying to make use of their Shop and its resources.

    Required only when state is requires_action. Disallowed when state is success.

    Content restrictions for product feedback: four messages up to 100 characters long.

    feedback_generated_at
    "feedback_generated_at": "2020-09-08T17:05:53.682152Z"

    The time at which the payload is constructed. Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival. Type: ISO 8601 UTC DateTime as string with year, month [or week], day, hour, minute, second, millisecond, and time zone.

    Note

    If you queue a Feedback API payload for delivery at a later time, do not update this value when the API call is actually made; ensure that the current time is set when building the payload.

    resource_updated_at
    "resource_updated_at": 2020-09-08 17:05:53 UTC

    The forwarded updated_at timestamp of the product. Used only for versioned resources, where the updated_at timestamp changes based on merchant actions. When required, it is used along with feedback_generated_at to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.

    Endpoints

    POST /admin/api/2020-01/products/{product_id}/resource_feedback.json

    Create product feedback.

    product_id

    Create feedback for a specific product, using its product id.

    state
    • requires_action: Indicates that your app requires the merchant to resolve an issue with this product.
    • success: Indicates that the app does not have any outstanding issues with this product.

    Create a product feedback record indicating the product is usable by your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:03.867413Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:04-04:00",
        "updated_at": "2020-09-08T13:09:04-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [],
        "feedback_generated_at": "2020-09-08T13:09:03-04:00",
        "state": "success"
      }
    }

    If the app is not configured as a Sales Channel, the API returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:04.687851Z"
      }
    }
    View Response
    HTTP/1.1 403 Forbidden
    {
      "errors": {
        "message": "App must be configured as a Sales Channel."
      }
    }

    Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:05.435118Z"
      }
    }
    View Response
    HTTP/1.1 409 Conflict
    {
      "errors": {
        "messages": [
          "Feedback request not delivered. Feedback request is older than a previously delivered feedback request."
        ]
      }
    }

    Sending an invalid feedback payload returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "foobar",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:06.190922Z"
      }
    }
    View Response
    HTTP/1.1 422 Unprocessable Entity
    {
      "errors": {
        "messages": [
          "Validation failed: State must be one of success and requires_action"
        ]
      }
    }

    Create a product feedback record indicating a problem specific to your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "requires_action",
        "messages": [
          "Needs at least one image."
        ],
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:07.710899Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:08-04:00",
        "updated_at": "2020-09-08T13:09:08-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [
          "Needs at least one image."
        ],
        "feedback_generated_at": "2020-09-08T13:09:07-04:00",
        "state": "requires_action"
      }
    }
    GET /admin/api/2020-01/products/{product_id}/resource_feedback.json
    Retrieve all product feedback from your app associated with the product.
    product_id

    Retrieve feedback for a specific product, by product id.

    Get a list of resource feedback records for a specific product

    GET /admin/api/2020-07/products/632910392/resource_feedback.json
    View Response
    HTTP/1.1 200 OK
    {
      "resource_feedback": [
        {
          "created_at": "2020-09-08T13:09:06-04:00",
          "updated_at": "2020-09-08T13:09:06-04:00",
          "resource_id": 632910392,
          "resource_type": "Product",
          "resource_updated_at": "2020-09-08T13:05:54-04:00",
          "messages": [
            "Needs at least one image."
          ],
          "feedback_generated_at": "2020-09-08T12:09:06-04:00",
          "state": "requires_action"
        }
      ]
    }
    Version 2020-04

    Important

    Product ResourceFeedback is only for use with the Sales Channel SDK.

    The Product ResourceFeedback API allows you to communicate the state of a shop's individual products, as it pertains to your application, by sending product feedback within the Shopify admin. Once created, product resource feedback is used help merchants get your app setup on their store by addressing missing steps or fixing problems.

    Send product feedback

    You can send feedback on a product to let merchants know what steps they need to take to make sure your app is set up correctly. Feedback can have one of two states: requires_action or success. You will need to send a requires_action feedback request for each step that the merchant is required to complete. If there are multiple setup steps requiring merchant action, send feedback with a state of requires_action as merchants complete prior steps. Send a success feedback request to remove the feedback message from Shopify admin.

    Important

    Sending feedback replaces previously sent feedback for the Shop. Unlike REST-style APIs, you don't need to make a PATCH or PUT request to update any previously sent feedback. Send a new POST request to push the latest state of a shop or its resources to Shopify.

    Formatting the resource feedback message field

    If your state is requires_action you can send up to four string messages, which communicate the action to be taken by the merchant. Each string must be a single message up to 100 characters long, must start with a capital letter (but not use all caps), and must end with a period. You must adhere to the message formatting rules or your requests will fail:

    Examples:

  • Needs at least one image.
  • Needs to be a shippable product.
  • Merchants viewing individual products will see your app's messages as a bulleted list of errors. Other user interfaces in Shopify admin will report statistics like the number of errors your app has reported. Once the merchant has made a single or a series of updates to validate the product, your app can send a status ofsuccess.

    What you can do with Product ResourceFeedback

    The Shopify API lets you do the following with the Product ResourceFeedback resource. More detailed versions of these general actions may be available:

    Product ResourceFeedback properties

    created_at
    "created_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was stored by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    updated_at
    "updated_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was last updated by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    resource_id
    "resource_id": 321

    Unique id of the resource.

    resource_type
    "resource_type": "Product"

    Type of resource for which feedback is returned. eg. Shop, Product.

    state
    "state": "requires_action"

    Indicates the state that the Shop or resource is in, from the perspective of your app.

    messages
    "messages": [
      "Needs at least one image."
    ]

    A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app encounters when trying to make use of their Shop and its resources.

    Required only when state is requires_action. Disallowed when state is success.

    Content restrictions for product feedback: four messages up to 100 characters long.

    feedback_generated_at
    "feedback_generated_at": "2020-09-08T17:05:53.682152Z"

    The time at which the payload is constructed. Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival. Type: ISO 8601 UTC DateTime as string with year, month [or week], day, hour, minute, second, millisecond, and time zone.

    Note

    If you queue a Feedback API payload for delivery at a later time, do not update this value when the API call is actually made; ensure that the current time is set when building the payload.

    resource_updated_at
    "resource_updated_at": 2020-09-08 17:05:53 UTC

    The forwarded updated_at timestamp of the product. Used only for versioned resources, where the updated_at timestamp changes based on merchant actions. When required, it is used along with feedback_generated_at to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.

    Endpoints

    POST /admin/api/2020-04/products/{product_id}/resource_feedback.json

    Create product feedback.

    product_id

    Create feedback for a specific product, using its product id.

    state
    • requires_action: Indicates that your app requires the merchant to resolve an issue with this product.
    • success: Indicates that the app does not have any outstanding issues with this product.

    Create a product feedback record indicating the product is usable by your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:03.867413Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:04-04:00",
        "updated_at": "2020-09-08T13:09:04-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [],
        "feedback_generated_at": "2020-09-08T13:09:03-04:00",
        "state": "success"
      }
    }

    If the app is not configured as a Sales Channel, the API returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:04.687851Z"
      }
    }
    View Response
    HTTP/1.1 403 Forbidden
    {
      "errors": {
        "message": "App must be configured as a Sales Channel."
      }
    }

    Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:05.435118Z"
      }
    }
    View Response
    HTTP/1.1 409 Conflict
    {
      "errors": {
        "messages": [
          "Feedback request not delivered. Feedback request is older than a previously delivered feedback request."
        ]
      }
    }

    Sending an invalid feedback payload returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "foobar",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:06.190922Z"
      }
    }
    View Response
    HTTP/1.1 422 Unprocessable Entity
    {
      "errors": {
        "messages": [
          "Validation failed: State must be one of success and requires_action"
        ]
      }
    }

    Create a product feedback record indicating a problem specific to your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "requires_action",
        "messages": [
          "Needs at least one image."
        ],
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:07.710899Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:08-04:00",
        "updated_at": "2020-09-08T13:09:08-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [
          "Needs at least one image."
        ],
        "feedback_generated_at": "2020-09-08T13:09:07-04:00",
        "state": "requires_action"
      }
    }
    GET /admin/api/2020-04/products/{product_id}/resource_feedback.json
    Retrieve all product feedback from your app associated with the product.
    product_id

    Retrieve feedback for a specific product, by product id.

    Get a list of resource feedback records for a specific product

    GET /admin/api/2020-07/products/632910392/resource_feedback.json
    View Response
    HTTP/1.1 200 OK
    {
      "resource_feedback": [
        {
          "created_at": "2020-09-08T13:09:06-04:00",
          "updated_at": "2020-09-08T13:09:06-04:00",
          "resource_id": 632910392,
          "resource_type": "Product",
          "resource_updated_at": "2020-09-08T13:05:54-04:00",
          "messages": [
            "Needs at least one image."
          ],
          "feedback_generated_at": "2020-09-08T12:09:06-04:00",
          "state": "requires_action"
        }
      ]
    }
    Version 2020-07 (Latest)

    Important

    Product ResourceFeedback is only for use with the Sales Channel SDK.

    The Product ResourceFeedback API allows you to communicate the state of a shop's individual products, as it pertains to your application, by sending product feedback within the Shopify admin. Once created, product resource feedback is used help merchants get your app setup on their store by addressing missing steps or fixing problems.

    Send product feedback

    You can send feedback on a product to let merchants know what steps they need to take to make sure your app is set up correctly. Feedback can have one of two states: requires_action or success. You will need to send a requires_action feedback request for each step that the merchant is required to complete. If there are multiple setup steps requiring merchant action, send feedback with a state of requires_action as merchants complete prior steps. Send a success feedback request to remove the feedback message from Shopify admin.

    Important

    Sending feedback replaces previously sent feedback for the Shop. Unlike REST-style APIs, you don't need to make a PATCH or PUT request to update any previously sent feedback. Send a new POST request to push the latest state of a shop or its resources to Shopify.

    Formatting the resource feedback message field

    If your state is requires_action you can send up to four string messages, which communicate the action to be taken by the merchant. Each string must be a single message up to 100 characters long, must start with a capital letter (but not use all caps), and must end with a period. You must adhere to the message formatting rules or your requests will fail:

    Examples:

  • Needs at least one image.
  • Needs to be a shippable product.
  • Merchants viewing individual products will see your app's messages as a bulleted list of errors. Other user interfaces in Shopify admin will report statistics like the number of errors your app has reported. Once the merchant has made a single or a series of updates to validate the product, your app can send a status ofsuccess.

    What you can do with Product ResourceFeedback

    The Shopify API lets you do the following with the Product ResourceFeedback resource. More detailed versions of these general actions may be available:

    Product ResourceFeedback properties

    created_at
    "created_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was stored by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    updated_at
    "updated_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was last updated by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    resource_id
    "resource_id": 321

    Unique id of the resource.

    resource_type
    "resource_type": "Product"

    Type of resource for which feedback is returned. eg. Shop, Product.

    state
    "state": "requires_action"

    Indicates the state that the Shop or resource is in, from the perspective of your app.

    messages
    "messages": [
      "Needs at least one image."
    ]

    A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app encounters when trying to make use of their Shop and its resources.

    Required only when state is requires_action. Disallowed when state is success.

    Content restrictions for product feedback: four messages up to 100 characters long.

    feedback_generated_at
    "feedback_generated_at": "2020-09-08T17:05:53.682152Z"

    The time at which the payload is constructed. Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival. Type: ISO 8601 UTC DateTime as string with year, month [or week], day, hour, minute, second, millisecond, and time zone.

    Note

    If you queue a Feedback API payload for delivery at a later time, do not update this value when the API call is actually made; ensure that the current time is set when building the payload.

    resource_updated_at
    "resource_updated_at": 2020-09-08 17:05:53 UTC

    The forwarded updated_at timestamp of the product. Used only for versioned resources, where the updated_at timestamp changes based on merchant actions. When required, it is used along with feedback_generated_at to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.

    Endpoints

    POST /admin/api/2020-07/products/{product_id}/resource_feedback.json

    Create product feedback.

    product_id

    Create feedback for a specific product, using its product id.

    state
    • requires_action: Indicates that your app requires the merchant to resolve an issue with this product.
    • success: Indicates that the app does not have any outstanding issues with this product.

    Create a product feedback record indicating the product is usable by your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:03.867413Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:04-04:00",
        "updated_at": "2020-09-08T13:09:04-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [],
        "feedback_generated_at": "2020-09-08T13:09:03-04:00",
        "state": "success"
      }
    }

    If the app is not configured as a Sales Channel, the API returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:04.687851Z"
      }
    }
    View Response
    HTTP/1.1 403 Forbidden
    {
      "errors": {
        "message": "App must be configured as a Sales Channel."
      }
    }

    Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:05.435118Z"
      }
    }
    View Response
    HTTP/1.1 409 Conflict
    {
      "errors": {
        "messages": [
          "Feedback request not delivered. Feedback request is older than a previously delivered feedback request."
        ]
      }
    }

    Sending an invalid feedback payload returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "foobar",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:06.190922Z"
      }
    }
    View Response
    HTTP/1.1 422 Unprocessable Entity
    {
      "errors": {
        "messages": [
          "Validation failed: State must be one of success and requires_action"
        ]
      }
    }

    Create a product feedback record indicating a problem specific to your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "requires_action",
        "messages": [
          "Needs at least one image."
        ],
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:07.710899Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:08-04:00",
        "updated_at": "2020-09-08T13:09:08-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [
          "Needs at least one image."
        ],
        "feedback_generated_at": "2020-09-08T13:09:07-04:00",
        "state": "requires_action"
      }
    }
    GET /admin/api/2020-07/products/{product_id}/resource_feedback.json
    Retrieve all product feedback from your app associated with the product.
    product_id

    Retrieve feedback for a specific product, by product id.

    Get a list of resource feedback records for a specific product

    GET /admin/api/2020-07/products/632910392/resource_feedback.json
    View Response
    HTTP/1.1 200 OK
    {
      "resource_feedback": [
        {
          "created_at": "2020-09-08T13:09:06-04:00",
          "updated_at": "2020-09-08T13:09:06-04:00",
          "resource_id": 632910392,
          "resource_type": "Product",
          "resource_updated_at": "2020-09-08T13:05:54-04:00",
          "messages": [
            "Needs at least one image."
          ],
          "feedback_generated_at": "2020-09-08T12:09:06-04:00",
          "state": "requires_action"
        }
      ]
    }
    Version 2020-10 (Release candidate)

    Important

    Product ResourceFeedback is only for use with the Sales Channel SDK.

    The Product ResourceFeedback API allows you to communicate the state of a shop's individual products, as it pertains to your application, by sending product feedback within the Shopify admin. Once created, product resource feedback is used help merchants get your app setup on their store by addressing missing steps or fixing problems.

    Send product feedback

    You can send feedback on a product to let merchants know what steps they need to take to make sure your app is set up correctly. Feedback can have one of two states: requires_action or success. You will need to send a requires_action feedback request for each step that the merchant is required to complete. If there are multiple setup steps requiring merchant action, send feedback with a state of requires_action as merchants complete prior steps. Send a success feedback request to remove the feedback message from Shopify admin.

    Important

    Sending feedback replaces previously sent feedback for the Shop. Unlike REST-style APIs, you don't need to make a PATCH or PUT request to update any previously sent feedback. Send a new POST request to push the latest state of a shop or its resources to Shopify.

    Formatting the resource feedback message field

    If your state is requires_action you can send up to four string messages, which communicate the action to be taken by the merchant. Each string must be a single message up to 100 characters long, must start with a capital letter (but not use all caps), and must end with a period. You must adhere to the message formatting rules or your requests will fail:

    Examples:

  • Needs at least one image.
  • Needs to be a shippable product.
  • Merchants viewing individual products will see your app's messages as a bulleted list of errors. Other user interfaces in Shopify admin will report statistics like the number of errors your app has reported. Once the merchant has made a single or a series of updates to validate the product, your app can send a status ofsuccess.

    What you can do with Product ResourceFeedback

    The Shopify API lets you do the following with the Product ResourceFeedback resource. More detailed versions of these general actions may be available:

    Product ResourceFeedback properties

    created_at
    "created_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was stored by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    updated_at
    "updated_at": 2020-09-08 17:05:53 UTC

    DateTime when the resource feedback record was last updated by Shopify. Type: ISO 8601 UTC DateTime as string with year, month (or week), day, hour, minute, second, time zone.

    resource_id
    "resource_id": 321

    Unique id of the resource.

    resource_type
    "resource_type": "Product"

    Type of resource for which feedback is returned. eg. Shop, Product.

    state
    "state": "requires_action"

    Indicates the state that the Shop or resource is in, from the perspective of your app.

    messages
    "messages": [
      "Needs at least one image."
    ]

    A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app encounters when trying to make use of their Shop and its resources.

    Required only when state is requires_action. Disallowed when state is success.

    Content restrictions for product feedback: four messages up to 100 characters long.

    feedback_generated_at
    "feedback_generated_at": "2020-09-08T17:05:53.682152Z"

    The time at which the payload is constructed. Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival. Type: ISO 8601 UTC DateTime as string with year, month [or week], day, hour, minute, second, millisecond, and time zone.

    Note

    If you queue a Feedback API payload for delivery at a later time, do not update this value when the API call is actually made; ensure that the current time is set when building the payload.

    resource_updated_at
    "resource_updated_at": 2020-09-08 17:05:53 UTC

    The forwarded updated_at timestamp of the product. Used only for versioned resources, where the updated_at timestamp changes based on merchant actions. When required, it is used along with feedback_generated_at to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.

    Endpoints

    POST /admin/api/2020-10/products/{product_id}/resource_feedback.json

    Create product feedback.

    product_id

    Create feedback for a specific product, using its product id.

    state
    • requires_action: Indicates that your app requires the merchant to resolve an issue with this product.
    • success: Indicates that the app does not have any outstanding issues with this product.

    Create a product feedback record indicating the product is usable by your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:03.867413Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:04-04:00",
        "updated_at": "2020-09-08T13:09:04-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [],
        "feedback_generated_at": "2020-09-08T13:09:03-04:00",
        "state": "success"
      }
    }

    If the app is not configured as a Sales Channel, the API returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:04.687851Z"
      }
    }
    View Response
    HTTP/1.1 403 Forbidden
    {
      "errors": {
        "message": "App must be configured as a Sales Channel."
      }
    }

    Sending outdated feedback (previous feedback payload has a greater resource_updated_at value) returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "success",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:05.435118Z"
      }
    }
    View Response
    HTTP/1.1 409 Conflict
    {
      "errors": {
        "messages": [
          "Feedback request not delivered. Feedback request is older than a previously delivered feedback request."
        ]
      }
    }

    Sending an invalid feedback payload returns an error

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "foobar",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:06.190922Z"
      }
    }
    View Response
    HTTP/1.1 422 Unprocessable Entity
    {
      "errors": {
        "messages": [
          "Validation failed: State must be one of success and requires_action"
        ]
      }
    }

    Create a product feedback record indicating a problem specific to your app

    POST /admin/api/2020-07/products/632910392/resource_feedback.json
    {
      "resource_feedback": {
        "state": "requires_action",
        "messages": [
          "Needs at least one image."
        ],
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "feedback_generated_at": "2020-09-08T17:09:07.710899Z"
      }
    }
    View Response
    HTTP/1.1 202 Accepted
    {
      "resource_feedback": {
        "created_at": "2020-09-08T13:09:08-04:00",
        "updated_at": "2020-09-08T13:09:08-04:00",
        "resource_id": 632910392,
        "resource_type": "Product",
        "resource_updated_at": "2020-09-08T13:05:54-04:00",
        "messages": [
          "Needs at least one image."
        ],
        "feedback_generated_at": "2020-09-08T13:09:07-04:00",
        "state": "requires_action"
      }
    }
    GET /admin/api/2020-10/products/{product_id}/resource_feedback.json
    Retrieve all product feedback from your app associated with the product.
    product_id

    Retrieve feedback for a specific product, by product id.

    Get a list of resource feedback records for a specific product

    GET /admin/api/2020-07/products/632910392/resource_feedback.json
    View Response
    HTTP/1.1 200 OK
    {
      "resource_feedback": [
        {
          "created_at": "2020-09-08T13:09:06-04:00",
          "updated_at": "2020-09-08T13:09:06-04:00",
          "resource_id": 632910392,
          "resource_type": "Product",
          "resource_updated_at": "2020-09-08T13:05:54-04:00",
          "messages": [
            "Needs at least one image."
          ],
          "feedback_generated_at": "2020-09-08T12:09:06-04:00",
          "state": "requires_action"
        }
      ]
    }