Skip to main content
Roofing jobs are dynamic. Labor hours change, materials get added, and on-site expenses evolve as work progresses. Without clear visibility into these costs, it becomes difficult to understand profitability or catch overruns early. That’s where Zuper’s Job Costing feature comes in, giving you complete visibility into job-level costs as they happen. You can track labor, materials, and expenses in one place and instantly see how they impact total cost, gross profit, and profit margin. This helps you stay in control of your margins and make informed decisions before small issues turn into losses. Zuper calculates job profitability based on the revenue source that best aligns with your business’ operations. Depending on your business model, revenue can be baselined to the sum of:
  • Selling price of job line items
  • Customer accepted quotes
This ensures your profitability insights always reflect how you price, sell, and deliver your roofing jobs.

Pre-requisites

  1. Ensure Job Profitability is enabled for your account. If not, contact your account administrator or email support@zuper.co to have it enabled.
  2. Configure required settings on the Job Costing & Expenses page (see related documentation for details).

Understanding Job Profitability with Quotes (Projected vs Actual)

For roofing, Zuper provides an enhanced profitability view based on customer-accepted quotes. When the Sum of Accepted Quote Values Associated to the Job option is set in Settings, the system displays two separate views: Projected and Actual. Costingroofs 01
  • Projected profitability represents the expected margin based on the revenue and estimated costs defined in the quote.
  • Actual profitability shows the true margin of a job after execution, based on real costs such as labor, materials, and expenses.
    The revenue used for this calculation is derived from the sum of accepted quotes, ensuring profitability aligns with the customer-committed price. Any difference from projected profitability reflects cost overruns or savings during execution.
    Important: When multiple quotes are linked to a job, accepted quotes are given the highest priority. If no quotes are accepted, sent quotes are considered next, followed by draft quotes. You can manually select or deselect quotes directly from here when needed.Costingroofs 04

Each view shows Margin percentage, Revenue, Cost of Goods Sold, and Profit value. You can hover over COGS to see a detailed breakdown of parts, labor, and expenses. This side-by-side visibility helps your teams to monitor performance throughout the job lifecycle.

Projected Values

Projected values represent what you expected to earn when the customer accepted the quote. These values come directly from the quotes associated with the job and act as the financial benchmark. Costingroofs 03
  • Projected Total Revenue
    This is the sum of accepted quote subtotals. Taxes are excluded because Zuper treats taxes as collected on behalf of the government.
  • Projected COGS
    This includes the estimated cost of materials and service captured in the quote.
  • Projected Profit
    This is calculated as projected revenue minus projected COGS.
    For example
    If the accepted quote value is $333 and the estimated COGS is $221, the projected profit is $112 with a margin of 33.6 percent.

Actual Values

Actual values represent the real financial outcome of the job based on costs recorded during execution. Costingroofs 05
  • Actual Total Revenue
    Actual Total Revenue represents the revenue baseline used to calculate real-time profit and margin in the Actual view. It is sourced from the sum of customer-accepted quote subtotals (taxes excluded), keeping profitability aligned with the customer-committed price.
    Note: When revenue is sourced from accepted quotes, changes made during job execution affect only Actual COGS. As a result, profit and margin are determined solely by cost increases or savings, and no revenue variance is reflected.
By default, Actual Total Revenue is locked to the sum of accepted quote subtotals. This ensures profitability is always measured against the customer’s committed price, even if job line items change during execution. In this locked mode, no revenue variance is shown; any cost overrun reduces profit, and any cost savings increase it, giving a clear view of execution efficiency and cost control.Costingroofs 07You can unlock Actual Total Revenue from the Job Details page. When unlocked, revenue updates in real time based on the current selling prices of all job line items, and variance indicators show differences from the projected (quoted) amount. This is useful for what-if analysis, such as simulating how profitability would have changed if extra or removed items were accounted for in the original estimate, or when final billing needs to reflect actual on-site consumption.
  • Actual COGS
    This includes all direct costs recorded on the job, grouped into parts and services, labor, and expenses.
  • Actual Profit
    Actual Profit is calculated by subtracting Actual COGS from the revenue baseline.
    For Example
    If actual costs increase to $233.40 due to additional expense or labor, the profit drops to $99.60, and the margin reduces to 12.40 percent. Zuper highlights this change using visual indicators so overruns are immediately visible.
Comparing projected and actual values helps your business identify patterns and gaps. By reviewing the differences, teams can take corrective actions, such as improving estimating accuracy, negotiating supplier pricing, or adjusting margins for future quotes.

Understanding Job Profitability with Job Line Items

When job profitability is calculated using job line items, revenue comes from the selling prices of parts, products, and services added to the job. These revenue and costs (COGS) are subtracted to show your gross profit and margin. As reps add materials such as shingles or underlayment, insert expenses, or log labor hours, Zuper continuously updates the total cost. Costingroofs 08 The profitability card on the job details page displays the current margin (%) and profit ($), updating in real-time to help you monitor overruns, such as extra materials resulting from hidden damage. To use this method, ensure that the Sum of Selling Price of Job Line Items is selected in Settings > Jobs > Job Costing & Expenses > General.
In this method, revenue is always dynamic (equivalent to the “unlocked” scenario), and profitability continuously follows the current sum of job line item selling prices.
For a detailed breakdown of how profitability is calculated for jobs, refer to Calculating Job Profitability for Fixed Price Jobs.