Review-required pricing
Flag a quote line for mandatory review before a customer sees a price or can check out.
The review-required gate lets your pricing equation hold a part back for your attention before anything is shown to the customer. While it is active, the price is hidden on the storefront and the customer cannot check out.
💡 Use this for parts that are outside your normal range: unusually large files, edge-case material combinations, high quantities, or anything you want to price manually before committing.
How it works
- Your pricing equation sets
reviewRequiredtotruewhen callingdone(). - The customer sees a "price under review" message instead of a price, and the checkout button is disabled.
- You review the part from the order detail page in the manufacturer platform and set a price manually.
- Once all flagged parts have a price, the customer can proceed to checkout.
Setting the flag in your equation
Pass true as the third argument to done() to flag a quote line for mandatory review:
done(price) // normal quote
done(price, duration) // with manufacturing duration
done(price, duration, reviewRequired) // flag for review when reviewRequired is trueYour equation still runs to completion. The calculated price is visible to your team internally and can be approved as-is or adjusted.
You can also use the object style if you prefer:
done({ price: calculatedPrice, reviewRequired: true })Both do exactly the same thing.
Automatic triggering
The gate also fires automatically if the computed price is falsy, negative, or NaN (for example, if a required material variable is missing and the formula produces an unexpected result). This means customers will never see a broken or zero-price quote - no need to set reviewRequired if your equation already can't produce a valid price.
Examples
Each example follows the same pattern: compute reviewRequired as a boolean, pass it to done(). The examples below are minimal and can be extended into more complex logic based on your use case.
Part exceeds machine dimensions
const { width, length, height } = specification
const X = 340 // width (mm) - adjust to your machine
const Y = 340 // length (mm)
const Z = 580 // height (mm) - Z is the vertical axis
const reviewRequired = width > X || length > Y || height > Z
// Alternatively, flag if the largest single dimension exceeds the vertical axis
// const reviewRequired = Math.max(width, height, length) > Z
done(unitPrice, 0, reviewRequired)Price out of expected range
const reviewRequired = unitPrice > 1000
done(unitPrice, 0, reviewRequired)Material requires manual pricing
const MANUAL_MATERIALS = ['Inconel 625', 'Ti-6Al-4V', 'Carbon PEEK']
const reviewRequired = MANUAL_MATERIALS.includes(specification.material.name)
done(unitPrice, 0, reviewRequired)Quantity too high
const reviewRequired = requisition.quantity > 500
done(unitPrice, 0, reviewRequired)Production time too long
const totalHours = round(buildHours + setupHours, 1) // your duration calculation
const reviewRequired = totalHours > 120
done(unitPrice, totalHours, reviewRequired)Unsupported material and colour combination
const isUnsupported =
specification.material.name === 'TPU' && specification.color === 'white'
done({ price: computeBasePrice(), reviewRequired: isUnsupported })Post-process equation
In post-process equations, processPricing.price gives you the parent part's process price.
const handlingFee = variable('1: Handling fee', 2)
const finishFee = processPricing.price * variable('2: % of part price', 0.15)
const finalUnitPrice = variable('3: Override unit price', handlingFee + finishFee)
const reviewRequired = finalUnitPrice > 500
done(finalUnitPrice, 2, reviewRequired)Always require review (fully manual quoting)
done({ price: 0, reviewRequired: true })What the customer sees
When any part in an order is flagged for review, the customer sees a localised "price under review" message in place of the price. The checkout button is disabled until all flagged parts have been reviewed and priced.
What you see as a manufacturer
Flagged orders are visible in your order list. Open the order, review the part details, and use the override controls to set a price. Once every flagged part has a valid price, the customer can check out.
Related
Last updated on