Skip to content
← All resources

Architecture & Data

Staffing Salesforce reporting and margin visibility

Build staffing margin reports with separate bill and pay hours, effective-dated rates, direct costs, weighted margins and a practical reconciliation worksheet.

By Gosai Digital · 5 min read

Reviewed

A placement billing $80 per hour and paying $50 has a $30 hourly bill-pay spread. That figure helps a recruiter discuss pricing. It does not establish what the agency earned after paid nonbillable time, employer costs, credits and other delivery expenses.

Useful Salesforce reporting lets people move from an operational signal to a reconciled financial result. Begin by agreeing the measure, reporting period and source of truth with finance. Then build the records and reports that support those decisions.

Illustrative client margin waterfall · USD · fictional two-week period

Separate billable and payable hours; 20% gross-pay burden assumed. Other direct costs contain that burden; additional variable costs are excluded from gross profit under the example policy.

Revenue$5,200
Less gross pay−$3,300
Less other direct costs−$660
Gross profit$1,240
Less additional variable costs−$280
Defined contribution$960

$5,200 − $3,300 − $660 = $1,240 gross profit (23.85% of revenue). $1,240 − $280 = $960 defined contribution. Neither is net profit.

Define the measures before naming the dashboard

Use separate labels for different questions:

  • Unburdened hourly bill-pay spread: bill rate minus pay rate for a comparable hour and rate category. This excludes employer burden and other costs.
  • Period revenue less gross wages: revenue for the period minus gross worker pay for that period. It accounts for different billable and payable quantities, but still excludes other costs.
  • Gross profit: recognized revenue minus the costs classified as direct cost of services under your finance policy. Gross margin percentage is gross profit divided by revenue.
  • Client contribution: a management measure deducting the costs assigned to that client under an explicit policy. Identify any additional variable or attributable costs beyond those already included in gross profit, without double counting. It is not automatically operating profit or net profit.

Accounting definitions can differ between business models. For a concrete industry example, Robert Half's contract talent gross margin calculation includes payroll, payroll taxes, benefits and reimbursable expenses within costs of services. Its pay-bill spread is one driver of margin. Robert Half 2025 Form 10-K, gross margin discussion

Have finance approve the account mapping, treatment of rebates and fees, and rules for estimates versus posted costs. Keep permanent-placement fees separate from hourly staffing calculations unless an explicitly defined consolidated report combines them.

Calculate at a consistent transaction level

A placement's current rate is insufficient for historical reporting. Use time or financial lines linked to the placement, client, worker and service period. Each line should identify:

  • Billable hours and payable hours separately
  • Bill and pay rate categories, including overtime or other premiums where applicable
  • Currency, rate effective dates and the rate version used
  • Approval state, invoice or payroll reference, and source-system identifier
  • Revenue adjustments, gross pay and direct-cost components
  • Service date, posting period and last synchronization time

Split a line when the applicable rate changes. Retain the applied rate instead of recalculating old work with today's placement rate. Correct posted records through the agreed adjustment process with a traceable link to the original.

Choose a clear authoritative source for each value. Salesforce might own approved commercial terms while payroll owns posted pay and accounting owns recognized revenue. Imported financial results should carry that provenance.

A worked example with unequal hours

The following fictional two-week period uses USD and regular-rate hours. There are no credits or other revenue adjustments. The 20% burden is an illustrative planning assumption, not a statutory rate or industry benchmark. Finance has classified this burden as direct cost and the additional variable costs below as outside gross profit.

Placement A:

  • Revenue: 40 billable hours × $80 = $3,200
  • Gross pay: 42 payable hours × $50 = $2,100, including two paid nonbillable onboarding hours
  • Revenue less gross pay: $1,100
  • Direct burden: $2,100 × 20% = $420
  • Gross profit: $3,200 − $2,100 − $420 = $680
  • Gross margin: $680 ÷ $3,200 = 21.25%
  • Additional variable client costs: $180; defined contribution: $500

Placement B:

  • Revenue: 20 billable hours × $100 = $2,000
  • Gross pay: 20 payable hours × $60 = $1,200
  • Direct burden: $240; gross profit: $560
  • Gross margin: 28%; additional variable costs: $100; defined contribution: $460

The client totals are $5,200 revenue, $3,300 gross pay, $660 direct burden, $1,240 gross profit and $960 contribution under this example's policy.

Multiplying A's $30 hourly spread by 40 billable hours would produce $1,200, overstating even its unburdened period result by $100. The separate payable-hours calculation captures the onboarding cost.

Weight margin by revenue

The client's gross margin is total gross profit divided by total revenue: $1,240 ÷ $5,200 = 23.85%, rounded to two decimals.

The simple average of 21.25% and 28% is 24.625%. It gives the smaller placement the same influence as the larger one and answers a different question. Sum revenue and relevant cost dollars first, then divide. Never sum hourly spreads and label the result client profit.

For zero revenue, display the monetary result and flag the percentage as undefined. Investigate negative revenue or credits instead of silently forcing percentages into a normal range. Aggregate different currencies only after an agreed conversion policy.

Need help connecting approved time, payroll and billing into a result you can reconcile? See our fractional Salesforce architect support.

Use the reconciliation worksheet

Create one row per placement, period and applicable rate segment, with these columns:

  1. A

    Placement and client identifiers

    Your value / reference: ________________

  2. B

    Service period, currency and rate version

    Your value / reference: ________________

  3. C

    Billable hours

    Your value / reference: ________________

  4. D

    Bill rate

    Your value / reference: ________________

  5. E

    Signed revenue adjustment: negative for credits

    Your value / reference: ________________

  6. F

    Payable hours

    Your value / reference: ________________

  7. G

    Pay rate

    Your value / reference: ________________

  8. H

    Signed gross-pay adjustment

    Your value / reference: ________________

  9. I

    Other direct costs under finance's policy

    Your value / reference: ________________

  10. J

    Additional contribution costs, excluding amounts in I

    Your value / reference: ________________

  11. K

    Revenue = C × D + E

    Your value / reference: ________________

  12. L

    Gross pay = F × G + H

    Your value / reference: ________________

  13. M

    Gross profit = K − L − I

    Your value / reference: ________________

  14. N

    Defined contribution = M − J

    Your value / reference: ________________

  15. O

    Source references, status and exception owner

    Your value / reference: ________________

Use separate rows for differing rate categories. Reconcile K to finance's recognized revenue and L to payroll for the selected basis and period. Do not count both a calculated line and its imported posted replacement. At the total level, gross margin is SUM(M) ÷ SUM(K), with a zero-denominator check.

Make the Salesforce implementation fit the model

Start with a reportable line-level dataset and drill-through to source records. A client dashboard should show the period, currency, actual or estimated status, refresh time and unresolved exceptions alongside its margin.

For custom staffing objects, native roll-up summaries require the supported master-detail relationship. A Placement lookup to Account does not itself create that path. Consider reports, a controlled aggregation process or an external reporting model according to volume and ownership; do not change relationship types merely to obtain a total. Salesforce roll-up summary field documentation

Keep forecast run-rate views separate from closed-period results. Forecast from expected billable and payable hours, rate schedules and explicit cost assumptions. Refresh for endings, extensions and changes in expected utilization.

Turn exceptions into decisions

If hours or rates are missing, mark the result incomplete and assign an owner. If spread falls, check effective dates and premiums. If gross profit falls while spread holds, examine paid nonbillable time and direct costs. If contribution falls while gross profit holds, inspect the additional attributed costs. Resolve reconciliation differences before using the report for consequential pricing or compensation decisions.

Review one client from timesheet to margin

Discuss your staffing reporting with Gosai Digital. Bring your metric definitions and a redacted example linking approved time, payroll and billing. We can help identify the missing relationships, reconciliation steps and Salesforce changes needed to make that client's numbers explainable.