Transform sales

Automate quote-to-order

Requests, pricing, negotiation and acceptance: the sales-led half of B2B revenue, out of Outlook and into one place.

A large part of B2B revenue never goes straight through a checkout. It starts as a request (a basket the shop cannot price, an email, a phone call, a parts list) and becomes an order only after somebody quotes, somebody negotiates and somebody says yes. In most companies that process lives in Excel and Outlook: last year's quote copied, dates changed, a PDF attached, and the negotiation preserved in one person's mailbox. It works until that person is on holiday, or leaves, or quotes the same customer a different price than a colleague did last month.

Why this is harder than it sounds

A quote is a promise with an expiry date, made against assumptions: this quantity, this delivery address, this cost basis. The discipline of quote-to-order is keeping those assumptions attached to the promise. Email loses them immediately. The PDF says €14.20 per piece; it does not say that the price assumed 2,000 pieces and freight to one site.

The second problem is memory. When quoting is a document task, nobody can see what anyone else quoted. The same customer gets three prices from three colleagues, and the one-off concession from March becomes the expected price in September. Margin leaks two points at a time, and no report shows it.

Then vocabulary. A quote is one priced offer with a validity date. A contract price is a standing price for one customer over a period. Customers use both words to mean "the price we agreed", and the difference decides what happens on the next order. Settle the definitions before you configure anything.

A won quote is one order, not a standing price. When the buyer accepts, the platform returns an order draft at the quoted prices, from which your shop or integration places the order. It does not create a contract price. If the deal is meant to hold for a year, somebody has to put it on a customer price list, or your Innendienst re-quotes the same articles on every order.

The levers

Get every request into one list

What good looks like: buyers request a quote from the shop with their basket, and your sales team opens quotes for customers who phone or email. Both land in one list under Order Management › Quotes, each with a number, an owner and a status. Nothing lives only in a mailbox.

What it depends on: customers set up as organisations with contacts, so a request knows whose it is, and roles that give buyers the right to ask.

  1. Request for quote in B2B
  2. The quote lifecycle
  3. Handle a quote request
  4. Organizations
  5. Contacts and roles

Make every price explainable

What good looks like: each position keeps its list price beside the quoted price, with a reason. A second round is a new revision rather than an overwrite. Internal notes stay internal. Six months later, anyone can answer why this customer got eight percent.

What it depends on: the habit of recording a reason, revisions left switched on, and an integration that sets negotiated position prices. The Cockpit sets only carriage, validity and message; a quote sent from the Cockpit goes out at list price.

  1. Quote settings
  2. Negotiate and revise
  3. Price models in B2B

Turn acceptance into the order

What good looks like: the buyer accepts in the shop, whole or line by line. Acceptance returns an order draft at exactly the quoted prices, with the quoted freight on the first order. Your shop or integration places the order from it and writes it back onto the quote. Nobody re-keys anything.

What it depends on: a shop or integration that places the draft as an order and reports it back; deciding whether a basket may be taken apart, who in the customer's company may accept, and how strict the validity date is.

  1. From an accepted quote to an order
  2. Quote settings
  3. Common quote problems

Turn a standing deal into a contract price

What good looks like: where an accepted quote was really a price agreement for a period, the agreed articles go onto a price list bound to the customer, with an end date. From then on the shop shows the agreed price without a quote.

What it depends on: a clear rule for which deals are one-off quotes and which are contract prices, and somebody who owns the price list.

  1. Quotes and contract prices
  2. Contract prices for a customer
  3. Time-limited prices
  4. Check which price a buyer sees

A sensible order

Phase 1: one team, one list. Move the quoting of one sales team or one product group off email: requests in, quotes out, revisions kept, status visible. Connect the integration that sets position prices from the start; without it every quote goes out at list price. Do not change other prices or rules yet. The deliverable is that any colleague can answer "what did we quote this customer, and when does it run out?" without asking anyone.

Phase 2: the buyer answers online. Give your customers' buyers the permissions to request and accept, set the acceptance rules, and add the workflow that mails the buyer when a quote is sent. Build the step in the shop or your integration that places the order from the acceptance's order draft and writes it back onto the quote.

Phase 3: from quotes to contract prices. Read a quarter of quotes for customers you quote the same articles to again and again, and move those agreements onto customer price lists. Hold a monthly look at what expired and why.

Common mistakes

  • Digitising the document instead of the process. A nicer PDF changes nothing. The value is in the list, the revisions, the validity and the link to the order.
  • Leaving the won deal in the quote. If the agreement is for a period, it belongs on a price list.
  • No follow-up before expiry. The list shows Valid until on every quote; a quote that runs out unanswered is usually a missed phone call.
  • No workflow on the quote events. The quotes app sends no mail. Without a workflow, buyers do not hear that their quote is ready.
  • Bundle prices with partial acceptance on. A price calculated over the whole basket, accepted line by line, gives the discount away.

How you know it is working

  • Time from request to quote sent. The figure the buyer experiences. Watch the slowest tenth, not the median.
  • Share of quotes that expire unanswered. High means a follow-up problem, not a price problem.
  • Share of accepted quotes that reached an order through the quote, visible as the ordered entry on the trail. Anything else is retyping.
  • Gap between list and quoted totals, by reason and by customer. Persistent large gaps for one customer are a contract price waiting to be set up.

What you're building

A request arrives from the shop with the buyer's basket, or your sales team opens a quote for a customer who called. Somebody takes it on, your integration sets the position prices, and your team sends it with the freight and a validity date. The buyer accepts in the shop, whole or line by line. Acceptance returns an order draft at the quoted prices; the shop places the order from it and writes it back onto the quote. Where the deal holds for a period, the agreed prices also go onto a customer price list.

What you need

  • Customers as organisations, with the contacts who request and accept: Organizations
  • Roles carrying quotes.read, quotes.request and quotes.accept for buyers: Contacts and roles
  • The quotes app's settings decided: validity, grace period, partial acceptance, who may accept: Quote settings
  • A workflow that mails the buyer on quote.quoted and quote.rejected: Events and webhooks
  • Agreed definitions of quote and contract price: Quotes and contract prices
  • An integration from your ERP, a CPQ system or a connection of your own that sets negotiated position prices: Connect a system
  • A shop or integration that places the order from the order draft and writes it back onto the quote: From an accepted quote to an order
  • The order path into your ERP, so an accepted quote is an order without retyping: Connect a system

Build it

  1. Write down what a quote is and what a contract price is in your company: Quotes and contract prices
  2. Clean the customer data for the pilot team so every request belongs to an organisation: Customer data hygiene
  3. Decide the quote settings: Quote settings
  4. Connect the integration that sets position prices: Connect a system
  5. Give the pilot customers' buyers the quote permissions: Contacts and roles
  6. Build the workflow that mails the buyer when a quote is sent or refused: Build a workflow
  7. Run the pilot team's requests through the list: take on, price, send: Handle a quote request
  8. Keep second rounds as revisions, with notes on both sides: Negotiate and revise
  9. Build the step in the shop or integration that places the order from the order draft and writes it back onto the quote, and check that the orders carry the quoted prices: From an accepted quote to an order
  10. Move repeated agreements onto customer price lists: Contract prices for a customer
  11. Review the list once a week for requests nobody took on and quotes about to expire: Reading your quotes

Decisions you'll need to make

DecisionThe trade-offWhere most customers land
Partial acceptance on or off?On lets buyers order part now and part later. Off protects a price that was calculated over the whole basket.On, unless you routinely give basket discounts. Then off, and quote the parts separately.
Who may accept: anyone in the organisation, or only the requester?Organisation-wide keeps deals moving when somebody is away. Requester-only matches customers whose rules say the asker must sign.Anyone in the organisation, with quotes.accept given only to the people who may commit money.
How strict is the validity date?No grace period is clean and occasionally loses a deal at 00:30. Hours of grace are a courtesy you decide once.A default validity of 30 days and no grace period; price the quote again with a new date if the buyer needs longer.
One-off quote or contract price?Quotes keep every deal negotiable. A contract price saves the re-quote on every order but needs an owner and an end date.Quote for projects and oversized consignments; contract price for articles a customer orders every month at an agreed price.
Where do position prices come from?Position prices cannot be edited in the Cockpit; a negotiated price always arrives through the quotes app's pricing step. Your ERP or CPQ system calculates it, or a lean integration carries over what your team priced.An integration from day one: a lean one carrying your team's prices at first; the ERP once quote volume justifies it.