Skip to main content
On this page▾

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:

  1. read the raw body before parsing it;
  2. check the timestamp is within a few minutes and compare the signature in constant time;
  3. accept any of several v1 values, which appear while a secret is being rotated;
  4. 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.

E-mail

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.

FAQ

How do I receive an order?
In two ways at once, as you configure them: a signed webhook to your server, and an e-mail to the addresses you list. The e-mail carries a worksheet and labels as PDF files. Every order is also stored and visible in the console, so a missed webhook never loses an order.
How do I know a webhook really comes from CutOptim?
Each delivery carries a CutOptim-Signature header, an HMAC-SHA256 over the exact bytes of the body with a timestamp. Your server recomputes it with the receiver secret, which your server fetches from CutOptim with its secret key, and refuses a wrong signature or an old timestamp. Verify the raw body before parsing it, and ignore an event id you have already handled, because delivery is at least once.
What happens if my server is down when an order arrives?
The order is stored first and delivery is retried: after 1, 5, 25 and 125 minutes and then 6 hours. After the sixth failed attempt the delivery is marked dead. Owners and admins can see the delivery log in the console and queue a redelivery of the same event with one click.
What are the order statuses?
Received, confirmed, in production, shipped and completed, plus cancelled. An order moves forward one step at a time, and can be cancelled until it has shipped; completed and cancelled are final. The database enforces this, so no route can move an order backwards. Each change is recorded with who made it.
Can my customer follow the order?
Yes. When you change a status you can tick a box to e-mail the customer, and that mail carries a tracking link. The page shows the order number, your shop's name, the status steps and when each happened, the number of parts and the total. It shows no address, no cut list and none of your notes. The link stops working 365 days after the order.
Which production files can I download?
Seven, per order: the part list (CSV), the placements (CSV), a drawing of the plan (SVG), a CNC drawing (DXF), a labels PDF, a worksheet PDF, and an ERP extract (JSON). The SVG, DXF and placements files are the same as the Engine API produces for the same plan.

Last updated: October 19, 2026