Skip to content

product_match.updated

View as Markdown
POST

A product match was created as matched, or changed status. data is the product match.

Beauty-Router-Signature
required
string

t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" with your webhook secret>. While several secrets are live, the header has one v1 per live secret, and you accept the event if any v1 matches. Reject a request when t is more than 5 minutes old or more than 5 minutes in the future. See Webhooks.

Example

t=1793200437,v1=5f2b8c0e4d6a7b1c9e3f0a2d4b6c8e1f3a5b7d9c0e2f4a6b8d1c3e5f7a9b0c2d
Media typeapplication/json
object
id
required

The event ID. Skip an event you already handled.

string
createdAt
required
string format: date-time
type
required
string
Allowed value: product_match.updated
data
required
object
id
required

The product match ID.

string
externalId
required

Your ID for the product. Unique within the company.

string
>= 1 characters <= 128 characters
status
required

in_review: Beauty Router is matching the product. needs_reply: Beauty Router needs more information, asked in question. matched: final, with productId.

string
Allowed values: in_review needs_reply matched
productId

The matched product ID. Only when status is matched.

string
question

What Beauty Router needs to know. Only when status is needs_reply.

string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time

Examples

ExampleMatch needs a reply
{
"id": "event-7Zx1cVb9Nm",
"type": "product_match.updated",
"createdAt": "2026-10-27T16:40:33Z",
"data": {
"id": "match-9Lk4jHg7Fd",
"externalId": "inv-10517",
"status": "needs_reply",
"question": "Is this product from Jadewell or Amberlin?",
"createdAt": "2026-10-27T09:14:02Z",
"updatedAt": "2026-10-27T16:40:31Z"
}
}

Respond with a 2xx status within 10 seconds. Otherwise Beauty Router retries with backoff for up to 24 hours. Delivery is at least once, so skip an event id you already handled.