review.submitted
Shyni sends a POST to your endpoint when this event happens. Before you trust the body, verify the signature.
A customer submitted a review of a handed-over order. data is the review as the studio sees it (ReviewApiView), the same view PUT /reviews/{id}/reply answers with; the studio's reply and report are null at this point. Sent once per review. Sent to the endpoint URL when the event happens. Answer 2xx within 15 seconds. Verify the signature before trusting the body. See the webhooks guide.
Shyni-Signature*stringt=<unix seconds>,v1=<hex>[,v1=<hex>], HMAC-SHA256 of "<t>.<raw body>" keyed with the
endpoint secret. See the webhooks guide.
Shyni-Event-Id*stringSame as the envelope id. Stable across retries, dedupe on it.
Shyni-Event-Type*stringSame as the envelope type.
application/json- body
Webhook body for review.* events; data is the review as the REST API returns it.
id*stringtype*stringEvent name, e.g. review.submitted.
createdAt*stringdate-timeapiVersion*stringbusinessId*stringThe business (studio) the event happened in - the value sent as Shyni-Business.
data*A review as the studio sees it - the public page plus the customer's full name and the order.
Delivery acknowledged. Any 2xx counts as delivered; the body is ignored.
Example payload
Shyni sends a POST to your endpoint
{ "id": "f3a1c2d4-6b7e-4a80-9c15-0e2d4b6a8022", "type": "review.submitted", "createdAt": "2026-10-09T08:53:20Z", "apiVersion": "v1", "businessId": "5d0b8e4a-7c21-4f3e-9a66-1b2c3d4e5f60", "data": { "id": "7c1e9a30-5b84-4d62-8f17-2a6e0d9b4c53", "rating": 5, "text": "Perfect job, the car looks new.", "authorName": "Jan N.", "customerFullName": "Jan Novak", "services": [ "Premium hand wash" ], "visitDate": "2026-10-09", "createdAt": "2026-10-09T08:53:20Z", "orderId": "68aa1b98-3c1e-4f0a-9d2b-5e7f1a2b3c4d", "orderPublicId": "84609120", "reply": null, "report": null }}