order.created
An order was created and its charge ran. status is placed or payment_failed, or pending_verification when the
charge waits for verification. data is the order.
Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”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=5f2b8c0e4d6a7b1c9e3f0a2d4b6c8e1f3a5b7d9c0e2f4a6b8d1c3e5f7a9b0c2dRequest Bodyrequired
Section titled “Request Bodyrequired”object
The event ID. Skip an event you already handled.
object
The order ID.
The order number people see.
The company the order belongs to.
The user who placed the order.
draft: the order is saved for later. It holds no stock, and the supplier does not see it.
pending_verification: the company is prequalified, and the order waits until its verification ends, with no
charge yet.
payment_failed: the card charge failed, or a payment is waiting for 3-D Secure. Beauty Router tries once more
after 24 hours when the failure can be retried. If that fails too, or the failure cannot be retried, it cancels the
order at 24 hours. placed: the card was
charged, and the brand or distributor starts preparing the order right after. ready_to_ship, in_transit,
delivered, delivery_failed, and canceled follow the delivery. Only a placed order takes stock from the
supplier.
Why the order was canceled. Only on canceled orders.
The brand or distributor that fulfills the order.
object
object
The product ID.
The product name.
The wholesale price of one unit before the discount, in US dollars.
The discount on the whole line, in US dollars.
The line total, in US dollars.
The total of the lines, in US dollars.
The discount on the order, in US dollars.
The shipping charge, in US dollars: a flat amount or a carrier quote, free above the supplier’s threshold. It is
locked when the order is created. null on a draft with no address.
The sales tax, in US dollars. null on a draft with no address.
The amount the salon pays, in US dollars. It can change until the order is placed. null on a draft with no
address.
Always usd.
object
Street address.
Suite, unit, or floor.
A two-letter US state code.
ZIP code.
Phone number for the delivery. Required on the company. Optional on an order, which then uses the company’s phone.
object
The carrier’s tracking page. Left out when there is none.
The carrier. Left out when it is not known.
When the order was delivered, or null.
Examples
{ "id": "event-4Ty8uIo2Pa", "type": "order.created", "createdAt": "2026-10-26T15:42:12Z", "data": { "id": "order-8Jd3kFs6Gh", "number": "4821-7730", "companyId": "loc-7Hk2pQx9Lm", "userId": "user-3Vb8nWq1Rt", "status": "placed", "supplier": { "id": "sup-1Ry6tUi3Op", "name": "Amberlin" }, "lines": [ { "productId": "prod-4Fz9QbX2kL", "name": "Amberlin Bond Repair Shampoo 33.8 fl oz", "quantity": 6, "unitPrice": 24.5, "discount": 0, "total": 147 }, { "productId": "prod-6Gh2jKl8Zx", "name": "Amberlin Bond Repair Conditioner 33.8 fl oz", "quantity": 4, "unitPrice": 26.5, "discount": 0, "total": 106 } ], "productsTotal": 253, "discount": 0, "shipping": 0, "salesTax": 22.01, "total": 275.01, "currency": "usd", "deliveryAddress": { "line1": "1450 Larimer St", "line2": "Suite 200", "city": "Denver", "state": "CO", "postalCode": "80202", "country": "US", "phone": "+13035550142" }, "trackingNumbers": [], "createdAt": "2026-10-26T15:42:10Z", "updatedAt": "2026-10-26T15:42:10Z", "deliveredAt": null }}Responses
Section titled “Responses”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.
