Two Dimensions
Cost code versus cost type, and why both matter
The single most useful thing to understand about Procore job costing is that every cost is filed under two dimensions at once, and people constantly confuse them. The cost code answers where the money went in terms of scope of work. The cost type answers what kind of cost it was.
Cost code is the scope of work
A cost code is the line of work: concrete, framing, electrical, drywall, and so on. This is your work breakdown structure, and on most commercial jobs it follows CSI MasterFormat so the divisions are consistent from job to job. When people say a cost landed in the wrong bucket, they mean the wrong cost code.
Cost type is the kind of cost
Within any cost code, the cost type splits the dollars into categories: Labor, Material, Subcontract, Equipment, and Other. So framing labor and framing material live under the same framing cost code but different cost types. That second dimension is what lets you see, for example, that a scope is over budget because of labor overruns rather than material prices.
The other distinction worth nailing down is committed versus direct cost. A committed cost is contracted but not yet fully billed, the value of a subcontract or purchase order. A direct cost is an actual cost already incurred, an invoice, an expense, or labor posted to the job. Procore tracks both against each line, and the projected cost blends them so the over and under reflects everything you are on the hook for, not just what has been invoiced. Getting the underlying codes clean is a prerequisite here, which is why Procore cost code cleanup is the foundation of any real job costing.