Procore and QuickBooks Online integration for WIP and cash reporting
Procore forecasts and QuickBooks actuals joined through a trust-ordered crosswalk, so the WIP schedule builds itself and unmapped jobs stay visible.
The problem
Procore holds the job forecast and QuickBooks Online holds the money, but nothing links a Procore project to a QuickBooks customer and job. The controller rebuilds the WIP schedule by hand each month, matching names that drift from one system to the other.
What we build
We connect both APIs with least-privilege credentials, land raw payloads in a Fabric lakehouse, and link projects to jobs in strict order of trust: the controller's manual mapping, then exact project number, then an unambiguous name match. Anything left over goes to an Exceptions page instead of being guessed onto the wrong job.
How it works
- 1
Connect with least privilege
An Intuit developer app using the OAuth authorization code flow for QuickBooks Online and a Procore custom app, with token reauthorization planned from day one and secrets in Azure Key Vault.
- 2
Extract and keep the raw payloads
Extract notebooks run under a rate limiter and land every API response in bronze as raw JSON, so any number can be traced back to what the source returned.
- 3
Build the crosswalk without guessing
Gold applies the manual mapping file first, exact project numbers second, and a name match only when there is exactly one candidate.
- 4
Gate before Power BI
Quality checks block the publish on missing data or values that would make a calculation wrong, and the report keeps showing the last version that passed.
- Procore
- QuickBooks Online
- Azure Key Vault
- Microsoft Fabric
- Power BI
- GitHub
The value it creates
Time saved
The WIP schedule is generated from source data instead of rebuilt in Excel; measured by the controller's month-end hours before and after.
Better decisions
Earned revenue, billings, and over/under billing are calculated once from governed measures, so every page uses the same definitions.
Early warning
Unmapped projects, cost codes projected over, and jobs over their estimate at completion surface on one Exceptions page.
Forecasting
A cash forecast built on committed cash only, with its assumptions stated on the page.
Proof
Related use cases
- Built and shown
Cost-code crosswalk and master data that every report agrees on
Projects, cost codes, and vendors mapped once in versioned reference data, so every report uses the same answer and gaps go back to the owner.
- We design and build this
CRM to Procore integration: one job record from pursuit to closeout
Stamp the CRM deal ID onto the Procore project, keep company and contact records aligned, and report pipeline next to backlog without retyping anything.
- We design and build this
ERP migration data mapping without losing history
A versioned map from old ERP to new, reconciled before cutover, so job history, cost codes, and vendors carry over and reports read across both.
- Built and shown
Get Procore data into Power BI, reliably
A repeatable pipeline from the Procore API into a Power BI model, with validation, history and refresh you can rely on.
- Built and shown
Procore and Sage integration for reporting you can reconcile
Procore projects matched to Sage jobs in a governed lakehouse, so cost, billing, and AP line up in one report and every mismatch lands on a worklist.
- Built and shown
Schedule data in your reporting: P6 and Outbuild next to cost
Milestones and activities from P6 XER files or Outbuild land in the same model as cost and project records, mapped to the right project.
Frequently asked questions
Does QuickBooks Online access expire?
QuickBooks Online uses OAuth, and Intuit sets the token lifetimes. In our build we planned for periodic reauthorization and documented who signs in and when, so the refresh does not quietly stop. Check Intuit's current documentation for the exact limits.
Our project names do not match between Procore and QuickBooks. Is that a problem?
It is the normal case. The crosswalk uses an explicit mapping file first and exact project numbers second, and only matches on names when there is a single sensible candidate. The durable fix is adding the project number to the QuickBooks job name so the exact rule takes over.
Can we see this working before we commit?
Yes. The walkthrough and screenshots on the work page show the full report with sample data for a fictional contractor, including the WIP schedule, Exceptions, and cash forecast pages.
Do we need HubSpot too?
No. HubSpot adds pipeline next to backlog in our build, but the Procore and QuickBooks join stands on its own. A CRM can be added later through the same crosswalk.
Next step
Which report or workflow would you like to improve?
Tell us what your team does today, which systems are involved, and what you want to change. We'll discuss whether there is a practical fit.
Prefer email? charley@buildflows.ai