Skip to content

Margin and price approval

Use this page to protect your margin. You see the cost and margin of every quote while you price it, and Price approval holds a proposal that goes below your limits until an approver says yes. Nothing is sent to the buyer while a proposal waits.

While you edit a quote, each line shows Cost and Margin, and a Cost and margin card shows Total cost and Total margin.

  • Where the cost comes from: the product cost you entered in Shopify. A line whose product has no cost shows Not set in Shopify, so you know where to add it.
  • How margin is worked out: the quoted price minus the cost, on the line total (price times quantity). Shipping, tax and discounts on the whole order are not part of it.
  • Total margin appears once every line has a cost and a price. Until then the card lists the lines or products that are missing.
  • If Shopify cannot be reached, the quote page says so and does not show cost and margin.
  • Who sees it: only your team. Cost and margin are never sent to the buyer.

When you send a proposal, the cost and margin are saved with that version. Open the Versions card and click View to see them. A version sent before they were recorded shows “Cost and margin were not recorded for this version.”

  1. Go to Settings > Price approval.
  2. Turn Price approval on. It is off by default, so proposals are sent as before.
  3. Set at least one limit:
    • Minimum margin: a proposal with a lower margin than this is held. Leave empty for no margin floor.
    • Maximum discount: a proposal that discounts the quote total by more than this is held. Leave empty for no discount cap. Both are percentages from 0 to 100.
  4. Choose what happens to products without a cost. Hold proposals with products that have no cost: when off, a product without a cost is left out of the margin check. When on, such a proposal is held because its margin cannot be fully checked.
  5. Pick the Approvers (see below) and save.

Approvers are people from your team. Add them first in Settings > Team members, then tick them under Approvers on the Price approval page. You need at least one approver, and up to 20.

  • An approver has to click This is me next to their name in Team members. Until then the page warns that they are not linked to a Shopify account and cannot approve.
  • While Price approval is on, only approvers can approve or reject a proposal, and only approvers can change the price approval settings. Other staff see the settings read only.
  • If no approver is left in your team, the settings are not locked, so you can pick new approvers.

When you click Send proposal email (or Resend proposal email) and the proposal breaks a limit, the app shows “Held for approval. The proposal was not sent.” The quote gets a Price approval card and the Activity timeline adds Held for price approval.

The card tells you why the proposal was held, for example “Margin 12% is below the 15% minimum” or “Discount 25% is above the 20% maximum”, or that some products have no cost. It also shows who it will be sent to and the payment terms that are held.

Each request has a status:

Status Meaning
Waiting for approval An approver has to decide before this proposal is sent.
Approved An approver approved it, and the proposal was sent.
Rejected An approver rejected it. The proposal was not sent.
Out of date The quote changed after the request, so it can no longer be approved. Send the proposal again.

Approvers decide from the Price approval card on the quote, or from the Waiting for approval list at the bottom of the Price approval page, which shows every held proposal with a count and a link to each quote.

  • Approve and send: the held proposal goes out as it was written. The timeline adds Price approved. If the proposal cannot be sent, the app says “Approved, but the proposal could not be sent. Send it from the quote.”
  • Reject: a window asks for a Reason. Your team sees the reason; the buyer does not. The proposal is not sent. The timeline adds Price rejected.

If someone already decided the request, the app says so and refreshes the list.

A request is tied to the quote as it was when you sent. If you or the buyer change the quote afterwards, the request becomes Out of date and cannot be approved. Edit the quote if needed, then send the proposal again; it goes through the check again.

A proposal email that failed can be resent from the quote’s email log with Resend only if the quote has not changed since. If it changed, the app says the email can no longer be resent: send the proposal again from the quote so the check runs.