by RBP

HubSpot + QuickBooks® Online · for contractors

Looking for a QuickBooks connector that carries job cost?
This is the one that does.

Bring line-level QuickBooks costs into HubSpot and prepare progress invoices with human approval by default.

Handled, on the HubSpot dealSample data
The Handled panel on a HubSpot deal for 128 Cedar Ridge Dr: $16,070.50 actual cost against a $28,750.00 contract, 44.1 percent margin at completion and realised, and a cost-by-bucket table of materials, subcontractor and disposal totalling $16,070.50.

An actual screen from the product, captured on the live fixture deal; screen-recorder cursor removed. The bucket table foots to the same $16,070.50 the top of the panel reports, because the rollup and the drill-down are the same arithmetic.

Line-level job costsHuman approval by defaultPublished capability status →

The bill that goes two places

This is the case the native connector cannot express, and it is ordinary in contracting: one supplier delivers to two roofs on one invoice.

Supplier billJLS-B-001

ABC Supply Co

Delivery to two properties

$11,000.00
Birchwood allocation$6,100.00
Halsted allocation$4,900.00
Demo-company figures, from the QuickBooks sandbox.
1042 Birchwood Ln — Full Reroof $6,100.00 Architectural shingles
88 Halsted Ave — Storm Repair $4,900.00 Architectural shingles
Every dollar has a destination. $6,100.00 + $4,900.00 = $11,000.00

One bill, two roofs — handled. A real supplier bill from the demo company, split at line level so each job carries its own cost. The native connector has no job-level cost at all, so this bill would land on neither deal.

The 88 Halsted Ave deal in HubSpot, showing six QuickBooks cost lines attributed to the job — a purchase order, two labour entries, a vendor credit and two bills, the last being the $4,900.00 ABC Supply bill.
The same allocation on the deal itself: 88 Halsted Ave carrying $4,900.00 from bill JLS-B-001, beside the five other lines QuickBooks holds for that job. Sandbox demo data; old-name suffixes and seed tags removed.

Built for contractors who bill in draws

A roof is one deal, many bills, and several invoices over weeks. Handled is built around that shape rather than around a single sale.

Cost, at line level

One bill split across two jobs, per line. Rolled up by cost code on the deal.

Two margins, not one

At completion, and realised so far. Realised stays withheld until something is billed or received.

Progress billing with a gate

Schedules compute to the cent. A person approves each invoice before it posts, unless an admin switches on automatic posting.

Invoices mirrored back

A posted invoice appears on the deal with its line items and its real status.

All three mechanisms, with the screens and the constraint that enforces them

You have probably already tried to make this work.

A workflow tool wired to push records across. A connector from the marketplace. A spreadsheet somebody rebuilds every Friday. Each one moves data, and none of them tells you whether the job made money.

HubSpot ships its own QuickBooks connector, and for contacts and simple invoices it is genuinely fine. Three limits matter to contractors, and they are the three things Handled was built to close.

Each deal links to its own job. Handled works with the sub-customers you already keep under a parent customer, which is the shape QuickBooks already understands and the shape a contractor already works in. Creating that job from the deal comes next.
It has no link from a deal to a QuickBooks job. Sub-customers with a parent are how contractors track a property, and Intuit’s API supports them, but nothing in the native connector ties a deal to one: its invoices land on whichever customer the contact matches.
One customer, many jobs. The same person can hold four properties and each one keeps its own costs, its own schedule and its own margin.
Customer matching is email-only. One homeowner email across several properties, or one project manager across many buildings, cannot be expressed as one customer with many jobs.
Cost attributed per bill line. Which is how one supplier bill lands on two roofs — the split shown above.
It carries no job-level cost. Bills, vendor credits, purchase orders and time are where a contractor’s margin actually lives, and none of it reaches the deal.

The full comparison, row by row, with the status of every claim

Why we built it

We did not go looking for this problem. We kept getting handed it.

Roofing Business Partner is a roofing business consultancy. Company after company brought us the same reconciliation, and we answered it by hand across thirty-two live integrations held together in Make.com. Handled is what we built to stop doing that.

Read the whole story

Matthew holding the winner’s trophy in front of a HubSpot Unbound conference backdrop.
MatthewProject lead, Roofing Business Partner Won the Customer Platform Pitch Contest at Partner Day, HubSpot UNBOUND 2026.

Roofing Business Partner is a HubSpot Solutions Partner at Diamond tier.

See your next job handled.

Self-serve signup is not open yet, so there is no checkout to click. Talk to us and we will set you up directly, on a QuickBooks sandbox set up with jobs like yours, for fourteen days with no card — fourteen rather than seven because progress billing is the whole claim, and a week can easily contain no real draw at all.

Handled is new. The docs page marks every capability with its status, and nothing on this site claims a capability that does not exist.