Work sample 11 / 17Sales pipeline and quoting

HubSpot and Jobber quote pipeline for a landscaping and hardscaping business

How I'd approach a Melbourne landscaping and hardscaping business that gets enquiries from six sources, tracks them in HubSpot and quotes in Jobber, so that every enquiry has a deal, every quote is linked to its deal, and the owner can see what each lead source actually brings in.

Area
Sales pipeline and quoting
Tools
HubSpot · Jobber · Zapier
Typical scope
US$2,000–3,500
Timeline
About 6 weeks, 4 milestones

Work sample: realistic data, not a past client job. Amounts are in AUD and GST is 10%.

01The problem

A landscaping and hardscaping business gets enquiries from Google ads, Facebook and Instagram, its website form, referrals, a lead marketplace and repeat customers. The leads go into HubSpot. The quotes are written in Jobber, because that is where the site visits, jobs and invoices live. The two systems do not talk, so the status of a quote is whatever somebody last typed into HubSpot.

In this sample, over 12 months (October 2025 to September 2026) there were 1,500 deals and 1,100 Jobber quotes. 120 deals reached the site visit stage and never got a quote. 41 deals had no owner. 23 deals were marked won in HubSpot with no job in Jobber, and 212 quotes had a status in HubSpot that did not match Jobber.

Owners usually notice it as

  1. A lead has a site visit and then nothing happens, because the quote never gets written
  2. HubSpot says a deal is won but there is no job in Jobber, or the other way round
  3. Nobody can say which lead source produces jobs rather than just enquiries
  4. The same customer is in HubSpot twice, once by phone number and once by email

02The outcome

This is what the setup does and delivers:

  1. A single stage map that says what each HubSpot stage means in Jobber, agreed with the owner and the estimators
  2. Zapier flows that create the Jobber client and request when a site visit is booked, then write the quote number, amount, status and job number back to the HubSpot deal as the quote moves through Jobber
  3. Contact matching rules that look for an existing contact by email, then by phone, before anything is created
  4. Every deal has an owner, assigned by rule
  5. A weekly list of deals at the quote stage with no quote, and of quotes waiting too long for a reply
  6. A win-rate view by lead source, by job type and by month
  7. A one-page routine for the estimators and one for the office
Data flowHow the work flows, from the first record to sign-off
01ENQUIRYsix sources02DEALHubSpot03ZAPIERflows04QUOTEJobber05JOBJobber06REPORTby lead source6 STAGES · ONE PASS FROM FIRST RECORD TO SIGN-OFF01ENQUIRYsix sources02DEALHubSpot03ZAPIERflows04QUOTEJobber05JOBJobber06REPORTby lead source

03Scope

Exhibit AScope
DeliverableWhat's includedNotes
Health check of leads and quotesReview of a recent export from HubSpot and from Jobber, the current stages, lead sources and contact records; findings, risk list and a fixed quoteUS$300, and the findings are yours to keep. If the findings change the plan, I re-quote before M2
Pipeline and stage mapHubSpot deal stages, required properties, lost reasons, and a one-page map of what each stage means in JobberAgreed with the owner and estimators in M1
Zapier flowsFlows between HubSpot and Jobber for client and request creation, quote created, quote sent, quote approved and job createdJobber triggers used: New Quote Created, Quote Sent, Quote Approved, New Job Created. Jobber does not offer a trigger for a quote that is declined or sent back for changes
Contact and duplicate rulesMatching by email, then phone, then name and suburb (for review only); clean-up of existing duplicatesMerges are reviewed by a person before they are done
Owner assignment and follow-upOwner by rule, a task when a deal has sat at the quote stage with no quote, and a follow-up task when a quote has had no replyBuilt as HubSpot workflows, so they do not depend on Jobber. Rotating owners needs a HubSpot plan that supports it; otherwise the Zap assigns the owner
Lead source reportingHubSpot report or a Google Sheet showing deals, quotes, win rate and won value by sourceBased on quotes marked won or lost, with open quotes shown separately
SOPs and handoverOne-page routines for estimators and the office; recorded walkthroughWritten to match how the team already works
Not includedA website rebuild, ad management, invoicing or accounting set-up, and Jobber features outside quotes and jobsZapier and HubSpot plan costs are the business's own. Jobber's Zapier link is available on certain Jobber plans, which I check in M1

Not included: payroll, STP or BAS lodgement.

Exhibit BSample data
ItemVolume
Period12 months to 30 September 2026
Deals in HubSpot1,500
Lead sources6
Jobber quotes1,100 ($19,501,750 ex GST)
Deals with a site visit but no quote120
Deals with no owner (old process)41
Duplicate contact pairs (old process)63
Test monthSeptember 2026, 157 deals, 180 quote events

04Walkthrough

4.1 The stage map

Each HubSpot deal stage means something specific in Jobber, and the rules are written on one page so the office and the estimators work to the same picture.

HubSpot stageWhat it meansJobber eventHow it moves
New enquiryLead received, not yet contactedNoneCreated when the enquiry arrives
Site visit bookedA visit is bookedClient and request createdHubSpot to Jobber, by Zap
Quote being preparedQuote startedNew Quote CreatedJobber to HubSpot, by Zap
Quote sentQuote with the customerQuote SentJobber to HubSpot, by Zap
Quote approvedCustomer acceptedQuote ApprovedJobber to HubSpot, by Zap
Won, job bookedA Jobber job existsNew Job CreatedJobber to HubSpot, by Zap
Lost before quoteClosed before quotingNoneSet in HubSpot with a lost reason
Lost after quoteQuote not acceptedNoneSet in HubSpot with a lost reason; the quote is archived in Jobber by the office

Lost deals are handled by people, not by a trigger. The Jobber link has no trigger for a declined quote or a quote sent back for changes, so a lost reason is required in HubSpot, and a weekly list shows any quote that has been waiting for a reply for more than 45 days so it can be closed in both systems.

4.2 Zapier flows

#Starts whenWhat it doesNotes
1Enquiry arrives (website form, lead form, phone entry)Find or create the contact (email, then phone), create the deal with source and ownerHubSpot duplicates are prevented by the matching rules in 4.3
2Deal enters Site visit bookedFind or create the Jobber client, create a Jobber request with the deal ID in the title, add a note to the request with the deal ID, write the Jobber client ID to the dealThe request is created on the client's first property in Jobber. Clients with several properties are checked by the estimator
3New Quote Created in JobberRead the deal ID from the start of the quote title, move the deal to Quote being prepared, write the quote numberIf no deal ID is found, the quote is matched by Jobber client ID; if that fails, it goes on a needs-matching list
4Quote SentMove to Quote sent, set the amount (ex GST) and the quote status
5Quote ApprovedMove to Quote approved
6New Job CreatedMatch the job to the open approved deal for that client, write the job number, move to Won, job booked and set the close date

How a quote finds its deal: the quote title in Jobber begins with the HubSpot deal ID, for example "[HS 412320461] Retaining wall, Essendon". The deal ID is also written as a note on the Jobber request, so a person can find it. The Zap reads the ID from the title. I do not rely on a feature that carries the deal ID from the request into the quote on its own, so the first month is checked closely.

4.3 Contact and duplicate rules

OrderRuleExample
1Match on email, lower-cased and trimmedThe same email typed with capitals and in lower case is one contact
2If no email, match on phone, formatted to the international formatThe same mobile written with and without the country code is one contact
3If still no match, create the contact
4Same name and suburb with a different phoneNot merged by a Zap. Listed for review

Existing duplicates are cleaned up in M2. In the sample, 63 pairs were found:

Match typePairs
Mobile number in different formats (with and without the country code)27
Email with different capitals or a typo21
Same name and suburb, different phone15
Total63

4.4 Field mapping

HubSpot deal propertyJobber fieldDirection
Deal nameRequest and quote title (starts with deal ID)HubSpot to Jobber
Deal IDQuote title and request noteHubSpot to Jobber
Jobber client ID (custom)ClientHubSpot to Jobber
Jobber quote number (custom)Quote numberJobber to HubSpot
Amount (ex GST)Quote total, with GST taken out in the ZapJobber to HubSpot
Jobber quote status (custom)Draft, Awaiting response, ApprovedJobber to HubSpot
Jobber job number (custom)Job numberJobber to HubSpot
Close dateJob created dateJobber to HubSpot
Lost reasonNot syncedEntered in HubSpot
Lead sourceNot syncedEntered in HubSpot, from the form or the person who takes the call
Deal ownerNot syncedAssigned by rule in HubSpot

4.5 One deal from enquiry to job

Take Retaining wall, Essendon, a referral lead for $14,600.00 ex GST ($1,460.00 GST, $16,060.00 inc GST).

DateStepSystemWhat happens
02 Feb 2026Enquiry receivedHubSpotContact found or created by email, then phone. Deal created in New enquiry with source Referral and the owner by rule
03 Feb 2026Site visit bookedHubSpot to JobberZap finds or creates the Jobber client, creates a request titled "[HS 412320461] Retaining wall, Essendon", and adds a note to the request with the deal ID
03 Feb 2026Quote created in JobberJobber to HubSpotQuote Q-1585 is created with the deal ID at the start of its title; the deal moves to Quote being prepared
04 Feb 2026Quote sentJobber to HubSpotDeal moves to Quote sent; amount set to $14,600.00 ex GST; quote status set to Awaiting response
22 Feb 2026Quote approvedJobber to HubSpotDeal moves to Quote approved
23 Feb 2026Job createdJobber to HubSpotJob JOB-3148 is written back; deal moves to Won, job booked and the close date is set

4.6 The funnel and the sources

StepDeals
Deals created1,500
Closed before a quote (not qualified or no response)280
Reached the quote stage1,220
Quote stage but no quote in Jobber120
Jobber quotes1,100
Won, job booked387
Lost after quote592
Still open at 30 September 2026121

Of the 280 deals closed before a quote, 82 were out of the service area, 74 did not respond, 66 had a budget that was too low and 58 were DIY or not proceeding. Of the 592 quotes that were lost, 134 chose another quote on price, 141 postponed, 166 did not respond to follow-up and 151 changed scope.

Win rate is the quotes won divided by quotes won or lost, so open quotes do not distort it.

Lead sourceDealsWith a quoteWonLostWin rateWon value (ex GST)Avg days to quote
Google Ads4202949017534.0%$1,525,2008.1
Website form3302519513241.9%$1,909,4507.7
Facebook and Instagram2551693810925.9%$645,6507.8
Referral225198997457.2%$1,837,6003.3
Marketplace leads180111217721.4%$313,1507.8
Repeat customer9077442563.8%$780,5503.4
Total1,5001,10038759239.5%$7,011,6006.7

By month:

Month createdDealsWith a quoteWonWon value (ex GST)
Oct 202515912040$766,550
Nov 202514310445$880,550
Dec 20251389537$717,200
Jan 20261097827$450,200
Feb 20261259131$552,400
Mar 202613910033$628,100
Apr 20261329337$689,250
May 20261016532$583,900
Jun 2026866025$362,400
Jul 20261008136$616,400
Aug 20261118629$474,500
Sep 202615712715$290,150
Total1,5001,100387$7,011,600

The 387 won deals total $7,011,600.00 ex GST, $701,160.00 GST and $7,712,760.00 inc GST.

4.7 Test month (September 2026)

One month runs through the new flows before handover. For each quote event in Jobber (quote sent, approved, job created), the time in Jobber is compared with the time the HubSpot deal was updated:

Jobber eventEvents
Job created29
Quote approved29
Quote sent122
Total180

The longest delay was 13 minutes and the average was 7.0 minutes. The target is 15 minutes or less, which depends on the Zapier plan's polling interval, so I confirm it in M1. The full log is in sync_log_sep_2026.csv.

05Checks

Exhibit CChecks on the sample data
CheckBefore (deals created Oct to Aug)After (test month, Sep)Status
Every deal at the quote stage has a Jobber quote973 of 1,093 deals127 of 127 deals past the site visit stagePASS
Every won deal has a Jobber job349 of 372 won deals29 of 29 jobs written back to their dealPASS
Quote status in HubSpot = Jobber, within 15 minutes761 of 973 quotes in step180 of 180 events, longest 13 minutesPASS
Every deal has an owner1,302 of 1,343 deals157 of 157 dealsPASS
No new duplicate contacts63 pairs found0 new pairsPASS

The 41 deals with no owner before the fix are the ones marked "no owner" in the old_process_issue column; the deal_owner column shows the owner assigned after the clean-up.

06Milestones

Exhibit DMilestones
MilestoneWhat happensRough durationWhat is signed offShare
M1 · Health check and stage mapHealth check (US$300), a review of HubSpot and Jobber exports, stage map, lost reasons and matching rules agreedAbout 1.5 weeksFindings, stage map and fixed quote25%
M2 · Flows builtHubSpot properties and stages, the six Zapier flows, owner assignment, duplicate clean-up, the weekly listsAbout 2.5 weeksA test enquiry taken through to a job and a won deal40%
M3 · Test monthA month of live enquiries run through the new flows, checks reviewed, win rate by source report builtAbout 1.5 weeks, plus the month runningThe five checks pass and the first source report is reviewed25%
M4 · HandoverSOPs, walkthrough recording and a short reviewAbout 0.5 weekOwner and estimators confirm they can run it10%

The fixed quote follows the US$300 health check, so the price is based on what is actually in your files. If the health check changes the plan, I re-quote before M2.

Typical scope for this kind of project: US$2,000–3,500.

About 6 weeks, 4 milestones. Your software subscriptions are billed to you by the vendors.

07Handover

  1. A one-page stage map
  2. The six Zapier flows, documented, with the matching rules
  3. HubSpot workflows for owner, no-quote and follow-up tasks
  4. A weekly list of quotes to close out in both systems
  5. A lead source report
  6. One-page routines for estimators and the office
  7. A recorded walkthrough
  8. Prepared by Manaz Afzal

08Files

A screen from the sample workbook, then every file in the work sample. Select the image to open it full size.

Summary tab of the workbook: the sample size and the figures in this walkthrough, each tied out by a live formula
Exhibit ESummary tab of the workbook: the sample size and the figures in this walkthrough, each tied out by a live formula

hubspot-jobber-quote-pipeline.xlsx › Summary

FilesDownload the work sample
FileWhat it isSize
hubspot-jobber-quote-pipeline.xlsxWorkbook with 9 tabs (Read me, Summary, HubSpot deals, Jobber quotes, Sync log Sep 2026, Duplicates before, Sources, Months, Funnel). The Summary tab lines up every figure on this page with a live formula247.3 KB
hubspot-jobber-quote-pipeline.pdfThis work sample as an A4 PDF (8 pages)318.7 KB
hubspot_deals.csv1,500 deals with source, owner, stage, amount, Jobber quote and job, and the issues in the old process225.3 KB
jobber_quotes.csv1,100 quotes with deal ID in the title, status, GST and totals121.3 KB
sync_log_sep_2026.csv180 quote events in the test month with the delay in minutes14.8 KB
contact_duplicates_before.csv63 duplicate contact pairs and the action for each8.1 KB

Tell me what’s bugging you and I’ll tell you where I’d look first.

Send a short note on Upwork about what is slowing the business down. I’ll reply with where I’d start, and whether the US$300 Systems Health Check is the right first step.