Skip to main content
Prefix: /api/merchant/v1. Send:
The key must be allowed to access {storeId}. When its store scope is SELECTED, {storeId} must be in that list. RESTRICTED keys must include the scope named on the method (feedback:read or feedback:reply:write). FULL keys skip that scope list. Either way the user must still have dashboard permission viewFeedbacks. Success JSON is the payload below. It is not wrapped in data. Errors are { "success": false, "error", "code" }. A 500 also includes errorId. A storeId property in a JSON body is ignored. The path store id is the one that is used. {feedbackId} may be the internal id or the public id (FBK-XXXX-XXXX-XXXX-XXXX-XXXX). The response id is always the internal id. publicId is not returned. A review that belongs to another shop returns 404 with error Feedback not found.

List feedback

Scope: feedback:read Reviews are ordered by createdAt descending. page and limit paginate in the database. total is the count for the current rating filter. ratingCounts is always the full store, including reviews outside that filter.
Each feedback object: ratingCounts keys are "1", "2", "3", "4", "5", and "all". Each value is a number. all is the sum of those five counts.

Get feedback

Scope: feedback:read Returns one feedback object with the fields in the list above. Status 200.

Reply to feedback

Scope: feedback:reply:write PUT calls the same handler as POST. Both return 200 and the updated feedback object. Body must be a JSON object:

Clear a reply

Scope: feedback:reply:write No body. Sets reply and repliedAt to null and returns the feedback object. Status 200.

Errors