A driver chain: a real project with a settable status when the newer Projects API is available; a sub-customer when it is not; and just the parent customer as the last resort. The platform's own status column is the source of truth in every driver; the accounting status is a best-effort mirror only the first driver can set.
Also called: QuickBooks project · job costing · sub-customer · project status · quickbooks projects · track the job in quickbooks
- 1Contract countersign or Start Project fires the sync for a job.
- 2One link row per account and job is claimed by flipping its status to syncing — a best-effort mutex against double-fired triggers.
- 3The best available driver is used, and the chosen model is sticky so later calls update rather than create a second project.
- 4Status is monotonic, so an out-of-order or concurrent trigger cannot regress a started job.
- 5It never throws to the caller; failures mark the row for the retry sweep.
The header reconciles the request with reality: a live, API-settable project status needs the newer Projects API, a specific plan tier and premium access, 'When any of that is missing we degrade gracefully through a driver chain.' The non-blocking rule is absolute: 'Never throws to the caller — the contract-countersign and Start-Project flows must never be blocked by a QB failure.' The enum values carry an honest warning: 'VERIFY AGAINST YOUR SANDBOX before trusting in production... If a value is wrong the create simply fails and the driver falls back to a sub-customer — nothing breaks.'
- Jobs had to be created in accounting manually after every signing.
- Not every accounting plan supports real projects.
- Double-fired triggers could create duplicate projects.
- An accounting failure could have blocked a contract countersign.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →