Quotes in your ERP: how to know which ones you lost
Give every ERP quote a matching HubSpot deal, matched on quote number, with follow-ups at day 3, 7 and 14. Closed won when it becomes a sales order, closed lost with a required reason when it expires.
If your quotes are built in SYSPRO, SAP Business One, Pronto Xi, MYOB, NetSuite or Xero, you mostly find out you lost one when it never turns into an order. Nobody marks it lost, nobody records why, and nobody follows it up in the week it mattered. The fix is to give every ERP quote a matching deal in HubSpot.
The smallest version that works: each quote in the ERP creates or updates a HubSpot deal at a "Quote sent" stage, carrying the value, quote number, expiry date and rep. HubSpot then sets follow-up tasks at day 3, 7 and 14. When the ERP turns the quote into a sales order, the deal moves to closed won. When the quote expires, the deal moves to closed lost and the rep has to pick a reason.
Match the two systems on the ERP quote number and the ERP customer ID. You can start with a weekly CSV import and move to an integration platform or custom code once the process has proven itself. After about 90 days you have something most ERP-led businesses have never had: a win rate, a list of reasons you lose, and the size of the quotes nobody chased.
Why do ERP quotes become a black hole?
An ERP is built to run what happens after the customer says yes: orders, stock, invoices, payments. It stores a quote well. It does very little with a quote that is waiting on an answer. There is usually no stage, no reminder, and no field that says the customer went with someone else.
We hear this on discovery calls with manufacturers and distributors all the time. A manufacturer sending about 150 quotes a month out of SYSPRO put it simply: you don't actually know if [you] lost them
. Another, already on HubSpot, asked whether HubSpot picks up those quote figures or whether someone has to enter them by hand. Businesses on SAP, Pronto and Xero described the same gap in different words.
The cost is easy to work out. Take your monthly quote count, multiply by your average quote value, and ask what share of that was ever followed up after it was sent. For most businesses we talk to, the honest answer is "we don't know".
What is the minimum viable fix?
Keep building quotes in the ERP. Your pricing, stock and product rules are there, and moving quoting into HubSpot is a much bigger project (our quote to cash guide covers that route). What changes is that HubSpot gets a deal for every quote, so the follow-up and the outcome have somewhere to be recorded.
The pipeline stages and follow-up cadence set out in this post. Matching runs on the ERP quote number and the ERP customer ID.
Set up a pipeline in HubSpot with these stages:
| Stage | How a deal gets there | What happens |
|---|---|---|
| Quote sent | A new quote appears in the ERP | Deal created with value, quote number, expiry date, ERP customer ID and rep as owner |
| Followed up | Rep logs the first conversation | Optional. Useful if you want to see which quotes got a real answer |
| Closed won | The ERP converts the quote to a sales order | Deal closed with the order value and sales order number |
| Closed lost | The quote passes its expiry date, or the customer says no | Rep must choose a closed lost reason |
Add four custom deal properties: ERP quote number, quote expiry date, ERP customer ID and sales order number. Make the quote number a property that requires unique values. HubSpot lets you set that when you create the property, on single-line text and number properties, with up to ten unique value properties per object. That one setting stops the same quote creating two deals.
For the lost reason, HubSpot already has a default "Closed lost reason" deal property. Turn it into a dropdown with five to eight options your reps recognise, such as price, lead time, went with incumbent, project cancelled, no response. Then use the pipeline's conditional stage rules to make it required on the closed lost stage. HubSpot's pipeline settings let you mark a property as required for a stage, and the rep cannot move the deal until it is filled in.
If you want to check your stage setup before building, our guide to HubSpot deal stages covers what to fix first.
How do the follow-ups at day 3, 7 and 14 work?
There are two ways to do it, and the right one depends on your HubSpot subscription.
- Sequences. A sequence enrols the contact who received the quote and runs a mix of emails and tasks. Sequences need Sales Hub or Service Hub Professional or Enterprise, and the rep needs an assigned Sales or Service seat. Task steps take a delay in business days, so day 3, 7 and 14 map straight on.
- Workflows. A workflow can create a task for the deal owner a set number of days after the deal enters "Quote sent", and can move the deal to closed lost when the expiry date passes. Workflows need a Professional or Enterprise subscription.
A sensible cadence for a trade or industrial quote:
- Day 3. A call task. Has it arrived, does it match what they asked for, who else is involved in the decision.
- Day 7. An email or call about the thing most likely to stall it: lead time, a substitution, a price break at a higher quantity.
- Day 14. A direct question. Is this still going ahead, and if not, what did they go with.
- Expiry. If nothing has happened, the deal moves to closed lost and the rep is asked why.
When the ERP shows a sales order, the deal moves to closed won. Make sure whatever creates the chasers also checks the deal stage first, so nobody gets a follow-up after they have already ordered.
How many of last month's quotes were followed up?
We can map your ERP quotes to a HubSpot pipeline with you in one call.
How do quotes get from the ERP into HubSpot?
Match on two keys every time. The ERP quote number finds the deal. The ERP customer ID finds the company the deal belongs to. Matching on company name is how you end up with three versions of the same customer. Our post on connecting HubSpot to your ERP covers how to get the customer ID onto HubSpot companies in the first place.
Then pick a method. Most businesses start at the top and move down as volume grows.
| Method | How it works | Good for | Watch out for |
|---|---|---|---|
| Manual CSV import | Export open quotes and new sales orders from the ERP each week, import to HubSpot as deals | Proving the process in the first month, low quote volumes | Someone has to do it every week. Follow-ups lag by up to a week |
| Integration platform | Make, Workato, Boomi or similar reads the ERP on a schedule and creates or updates deals | Most 50 to 250 person businesses once the process works | Monthly platform fees, and someone has to watch the error log |
| Custom code | A small service reads the ERP and writes to HubSpot through the API, matching on the quote number | On-premise ERPs, high volumes, revision rules that a platform cannot express | You own the code and the hosting |
On a CSV import, HubSpot updates an existing deal when the row carries a unique identifier, either the HubSpot Record ID or a property that requires unique values. That is the quote number property you made earlier. Through the API, HubSpot's batch upsert for deals does the same job: create the deal if the quote number is new, update it if it exists.
Whichever you pick, sync three events: quote created or changed, quote converted to a sales order, quote expired or cancelled. Leave line items, stock and pricing in the ERP.
What do you do about quote revisions?
This is where most quote syncs go wrong. A customer asks for a different quantity, the rep revises the quote, and the ERP either issues a new number or adds a suffix such as Q10452-2. If each revision creates a new deal, your pipeline doubles and your win rate falls through the floor, because every superseded version looks lost.
Pick one rule and write it down:
- Same quote, new version. If your ERP keeps the base number and adds a revision suffix, match on the base number. Update the existing deal's value and expiry, and store the latest revision in a separate property.
- New number for each revision. If your ERP issues a fresh number, store an "original quote number" on the new quote, or ask reps to fill it in. The sync uses that to find the existing deal.
- Genuinely different options. If you send a customer a good, better, best set of three quotes, keep them as one deal and record which option they ordered when the sales order arrives.
Test the rule against last month's quotes before switching anything on. If 150 quotes produce 210 deals, your revision rule is not working yet.
What reporting do you get after 90 days?
Three months of quotes gives most businesses enough closed deals to report on:
- Win rate by rep, product line and customer type. Closed won against all closed deals, by count and by value.
- Why you lose. Closed lost deals grouped by reason. If price is the top reason on one product line and lead time on another, those are two different conversations with operations.
- Follow-up against outcome. Win rate on quotes that had a day 3 call logged, against quotes that did not.
- Time to decision. HubSpot's stage calculated properties, such as date entered and time in each stage, show how long quotes sit before the customer decides. These need a Professional or Enterprise subscription.
- What is still open. Every quote at "Quote sent" with its value and expiry date, which gives sales and operations the same forward view.
Once you have the lost reasons, you can go a level deeper. Our guide to running a win/loss analysis with Claude shows how to read the notes and call recordings behind those reasons, which a dropdown alone will not tell you.
Frequently asked questions
Can HubSpot track quotes built in SYSPRO, SAP Business One or Pronto? Yes, if each ERP quote creates a HubSpot deal. HubSpot does not read the ERP by itself, so you need a CSV import, an integration platform or custom code to bring the quote number, value, expiry and rep across.
How do you stop quote revisions creating duplicate deals? Match on the ERP quote number, made a unique value property in HubSpot, and decide one rule for revisions. Either match on the base quote number or store the original quote number on each revision.
Do you need Sales Hub Professional to follow up quotes in HubSpot? Sequences need Sales Hub or Service Hub Professional or Enterprise with an assigned seat, and workflows need a Professional or Enterprise subscription. Without them, reps can still work from deals and manual tasks, but nothing runs automatically.
How do you make reps record why a quote was lost? Turn HubSpot's closed lost reason property into a dropdown and make it required on the closed lost stage using the pipeline's conditional stage rules. The deal cannot move to closed lost until a reason is chosen.
When does a quote count as won? When the ERP converts it to a sales order. The sync moves the matching deal to closed won and records the sales order number, so nobody has to update HubSpot by hand.
Sources
- Set up and customise pipelines, HubSpot Knowledge Base, for required properties by stage and closed won and lost stages.
- HubSpot's default deal properties, HubSpot Knowledge Base, for closed lost reason, close date and stage calculated properties.
- Set validation rules for properties, HubSpot Knowledge Base, for unique value properties and the limit of ten per object.
- Create and edit sequences, HubSpot Knowledge Base, for subscriptions, seats and task delays.
- Create workflows, HubSpot Knowledge Base, for workflow subscriptions.
- Import records, HubSpot Knowledge Base, for updating existing records by unique identifier.
- Create or update a batch of deals by unique property, HubSpot Developers, for upserting deals on a unique property.
Want every quote in your ERP followed up and accounted for? See our RevOps and HubSpot work, or talk to us.
Do you know which of your quotes you lost last quarter?
Book 15 minutes and we will look at how your ERP quotes could reach HubSpot.