Processes

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

  1. Your pricing equation sets reviewRequired to true when calling done().
  2. The customer sees a "price under review" message instead of a price, and the checkout button is disabled.
  3. You review the part from the order detail page in the manufacturer platform and set a price manually.
  4. 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 true

Your 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.


Last updated on