An order starts when your customer confirms a quote in the Configurator. From that moment it is a stored, signed record, and CutOptim tells you about it in two ways.
What an order is
An order document holds the cut list, the full sheets used, hardware, bonded panels, the cutting plan, and the quote with its lines and totals in whole minor currency units. It is signed, so it cannot be changed afterwards. Sending the same order request twice returns the same order, never a second one.
Because the price came from your published rules on the server, your shop does not trust the browser for it. Before your cart accepts a line, your server asks CutOptim to verify the quote with your secret key. The ready-made way is the WooCommerce plug-in; for other shops see custom platforms.
Webhook delivery
Add a webhook to the channels.webhooks list of your configuration (Advanced category, JSON editor) and publish. Each entry has an id, a url and the events you want. The URL must be a public HTTPS address; private, local and internal addresses are refused when you save and again when sending. Two events are sent:
- order.created when a customer places an order.
- order.status_changed when you move an order to a new status.
Every delivery is a POST with a canonical JSON body and these headers: CutOptim-Signature, CutOptim-Event-Id, CutOptim-Event-Type, CutOptim-Delivery-Attempt and CutOptim-Delivery-Id. The signature is t=<unix seconds>,v1=<hex>, an HMAC-SHA256 of <t>.<raw body> with the receiver secret. Your receiver should:
- read the raw body before parsing it;
- check the timestamp is within a few minutes and compare the signature in constant time;
- accept any of several
v1values, which appear while a secret is being rotated; - answer with a 2xx status quickly, and handle an event id once only.
The receiver secret is revealed to your server by POST /cfg/v1/admin/webhooks/<id>/secret on the service, with your secret key. It is not shown in the console.
A non-2xx answer, a timeout or a redirect counts as a failure. Retries wait 1, 5, 25 and 125 minutes, then 6 hours, and the sixth failed attempt marks the delivery dead. A redelivery repeats the same event id so your receiver can recognise it. Other event types in the configuration, such as quote or project events, are accepted but never sent.
In the channels.email section of your configuration you list the shop’s recipient addresses (tenantRecipients) and may switch on a copy to the customer (sendCustomerCopy). The shop’s mail carries a worksheet and a labels PDF; the customer copy goes out only when you enabled it and the order carries a customer reference with an address on file, and replying to it reaches your first recipient. The status mail goes out only when you ask for it while changing a status. A failure to send never blocks the order. A sandbox mails only the owner’s confirmed address and never a customer.
The order console
The Orders area of the console lists orders by status and date, and opens an order to show its cut list, price lines, totals and history. Owner and admin also see the webhook and e-mail delivery logs, with a Redeliver button that queues a copy of a finished, failed or dead delivery. A delivery that is still waiting or running cannot be redelivered.
To change a status you pick the next status, add an optional note and decide whether to e-mail the customer. The allowed moves are:
| From | To |
|---|---|
| received | confirmed, cancelled |
| confirmed | in production, cancelled |
| in production | shipped, cancelled |
| shipped | completed |
Completed and cancelled orders do not move. Orders are never deleted from the console; they are business records.
The tracking page
The customer’s tracking link shows the order number, your shop’s name, the status steps with the time of each, the number of parts and the total, in one of ten languages. It shows no address or e-mail, no cut list and never your notes, and it has no scripts. The link cannot be guessed, belongs to one order, and expires 365 days after the order. If you need the link for a phone call, your server can request it with the secret key; the console does not show it.
Production files
Each order can be downloaded as seven files from the order detail:
| File | Use |
|---|---|
| Part list (CSV) | the parts with sizes and quantities |
| Placements (CSV) | where each part sits on each sheet |
| Drawing (SVG) | the plan, to view or print |
| CNC drawing (DXF) | for CNC software |
| Labels (PDF) | part labels |
| Worksheet (PDF) | a sheet for the workshop |
| ERP extract (JSON) | for your ERP system |
The PDFs are rebuilt from the order, and refused when the plan cannot be reproduced exactly, in which case the other files are still available. The PDFs are in English. There is no Excel export for an order, and 1D or timber orders do not exist yet, so nothing is exported for them.
What is not covered
- The Configurator takes no payment; payment and fulfilment stay in your shop.
- There is no bulk status change.
- A tracking link cannot be revoked one by one; it expires on its own.