RevOps for Staffing Agencies: Contract and Direct Hire Revenue, Job Orders and Gross Profit
RevOps for staffing agencies explained: contract and direct hire revenue, the job order funnel, which system owns each record, and gross profit per job order.
A staffing agency's largest client by billings buys contract labour through a managed service provider, and account management ranks it first because the billing report does. Its requisitions outnumber every other client's on the recruiting desk, yet each goes to several competing suppliers, the agency fills one in five, and a program fee comes off every invoice. The billing report has no record of the unfilled requisitions, and the applicant tracking system none of the fee or the employer's cost on each hour, so neither shows that this client returns the least gross profit for each requisition worked.
This article sets out the operating model of revenue operations in a staffing or recruiting agency, without reference to any one software product. It covers the two ways a placement earns revenue, client programs run through managed service providers, the lifecycle, the handoffs and the system that owns each record. Sample data then tests how recruiting capacity is spread across three clients, before metrics, a procedure, symptoms, costs and evidence limits.
The firm's foundations paper treats revenue operations as a capability that makes interdependent commercial work governable by keeping objectives, records, measures, systems and decisions traceable to one another. In a staffing agency its object is the chain of records from a client's job order through candidates and placements to the hours billed, and back to the next job order. A job order is a client's request to fill one or more openings, a submittal puts a candidate forward for it, and a placement records a candidate filling it. Burden is the employer's cost of a worker beyond the pay rate.
Any agency can check the finding against its own records. The figure that should decide where recruiting capacity goes is gross profit per job order worked: gross profit after burden, program fees and direct-hire refunds, divided by every job order the agency submitted a candidate to, filled or not. Unfilled job orders exist only in the applicant tracking system, and burden and program fees only in payroll and billing. Where those are separate systems none can compute the figure, and the CRM, where client accounts are ranked, holds neither part.
Staffing Revenue Models: Contract Hours, Direct Hire Fees and Conversions
In temporary and contract staffing, as the American Staffing Association defines the service, the staffing firm hires its own employees and assigns them to supplement a client's workforce. The Bureau of Labor Statistics counts temporary help agency workers as those paid by a temporary help agency, so the agency carries the payroll.
Contract revenue is therefore an hourly spread earned over time. The client pays a bill rate for each hour, the agency pays the worker a pay rate, and the employer's costs sit on top of the pay: Social Security and Medicare alone take 7.65 percent of wages from the employer. Bullhorn's placement record holds both rates, a markup of bill less pay over pay, and a reported hourly margin calculated using burden and other costs. How markup, spread and burdened margin diverge on one job order is set out in the division of records between a CRM and an applicant tracking system.
The hours decide the value. The association's model staffing agreement supports each invoice with time sheets and treats the client's approval of documented hours as authority to bill them. An extension lengthens a contract placement and an early end shortens it, so its value exists only once the hours are approved.
Direct hire earns a fee instead. The association defines direct placement as establishing a permanent employment relationship, with a contingency fee paid by the client when the employee is hired; a retained search is paid whether or not a hire results. Bullhorn stores the fee as a percentage on the client corporation and the job order, and as a fee and yearly salary on the placement, whose end date is empty for a permanent hire. The fee carries no hours or burden, but it can be reversed: the placement's days guaranteed and days prorated state how long the hire must stay before the fee falls due.
Temporary-to-hire work joins the two. The model agreement lets a client that hires an assigned employee within a stated period either continue the assignment for a stated number of hours or pay a fee set as a multiple of the final bill rate. A conversion ends an hourly revenue stream and may replace it with a single fee, so the placement record carries both.
Direct Clients and Managed Service Provider Programs
In staffing, MSP means a managed service provider for contingent labour, not a managed IT services provider. The association defines an MSP as an on-site supplier engaged to manage a client's temporary and contract staffing, including selecting staffing firms and vendor management systems. The same list defines a vendor management system (VMS) as web-based software a client uses to buy and manage services, contract staff among them. SAP Fieldglass describes the MSP as the organisation that manages the staffing suppliers in a contingent worker program under one set of terms.
A program changes three things about a job order. It arrives by distribution: a Fieldglass distribution list sends a job posting to one or more suppliers, optionally in levels, the second receiving it when a rule is met, such as no response within 72 hours. Its submittals can be capped: a maximum number of submittals per supplier limits each supplier's candidates per position, three in the documentation's example. Its billing is net: under the supplier-funded option, the supplier pays the MSP fee and subtracts it from the amount billed, and Bullhorn's pay-and-bill model lists VMS Fee among the discounts applied to invoices.
A program job order is thus worked in competition, with capped candidates, at a bill rate the agency does not keep in full, and it reaches the applicant tracking system only when keyed in or imported. Bullhorn's placement time and expense record carries a VMS requisition identifier and assignment number, so the join between the two sets of records exists. Winning or renewing supplier status is a business-development decision, and its record belongs in the CRM beside the client account.
The Staffing Lifecycle from Job Order to Redeployment
The lifecycle runs across two markets that meet on one record: clients supply job orders, candidates supply the labour, and each Bullhorn placement corresponds to one job order and one candidate. One job order may carry several placements against its number of openings.
Four records make up the funnel. A job order carries openings, rates or fee, status, and its submissions, sendouts, interviews and placements. A job submission is the formal submittal of an evaluated candidate, and an approved one creates the placement. A sendout records the candidate's details going to the client, and interviews are appointments on the job order. For a program client the steps also run in the VMS, where job seekers carry statuses such as submitted, shortlisted, interviewed or rejected.
After the placement the revenue models divide. A contract placement accrues approved hours and ends completed, ended early, extended or converted; a direct-hire placement is invoiced once and becomes final when its guarantee period passes. A job order closed without a placement ends unfilled, cancelled or filled by another supplier.
The lifecycle then loops back. A contractor whose assignment ends can be redeployed to another job order, having already been recruited, screened and employed. The client's next job order restarts the funnel, and whether its account manager knows what earlier job orders returned depends on a third loop, from payroll and billing to the client account.
Handoffs Between Sales, Recruiting, the Back Office and Finance
Four functions carry the record in turn: sales and account management, recruiting, the back office and finance.
Account management hands recruiting a qualified job order: openings, rates or fee terms, start date, and channel, either direct or a named program with its fee. The handoff fails when a program requisition is entered at its gross bill rate with no fee, so the placement shows a spread the agency will not keep.
Recruiting hands the client submittals and interviews, and hands the back office a placement with rates, dates and billing contact. That second handoff fails when rates are retyped: before its build, a published contract staffing agency found the rate on 9 percent of executed assignment agreements disagreeing with its CRM. The return to the client side fails more quietly, when a job order lost to another supplier is deleted or left open instead of closed with a reason.
The back office hands finance approved hours, invoices net of program fees, payroll and burden, and direct-hire fees with any refunds. Finance then holds the figure the next account decision needs, gross profit by job order, and its return to account management carries the finding. The ledger has gross profit and no unfilled job orders, the applicant tracking system has unfilled job orders and no gross profit, and the CRM has neither until the return is built. The same return sends assignment end dates to recruiting while the contractor is still working.
Staffing Records and the Systems That Own Them
Whether the CRM and the applicant tracking system are one product or two is a platform decision, and the ownership below holds either way.
| Record | System of record and owning function | Summary returned to the client account |
|---|---|---|
| RecordProspect, client account and master services agreement | System of record and owning functionCRM; sales | Summary returned to the client accountNone; the account starts here |
| RecordProgram supplier status and terms, including the fee | System of record and owning functionCRM; sales, from the program agreement | Summary returned to the client accountNone |
| RecordProgram requisition, submittals and time approval | System of record and owning functionThe client's VMS; the program | Summary returned to the client accountThe VMS requisition identifier, through the job order |
| RecordJob order: openings, rates or fee terms, channel, status and close reason | System of record and owning functionApplicant tracking system; account management and recruiting | Summary returned to the client accountJob orders worked, filled and unfilled |
| RecordCandidate, submittal, sendout and interview | System of record and owning functionApplicant tracking system; recruiting | Summary returned to the client accountSubmittals per placement |
| RecordPlacement: rates or salary and fee, dates, guarantee terms | System of record and owning functionApplicant tracking system; recruiting | Summary returned to the client accountPlacements; end dates go to recruiting |
| RecordTimesheets, pay and burden | System of record and owning functionPayroll; back office | Summary returned to the client accountNone directly |
| RecordInvoices, program fee deductions, fee refunds and cash | System of record and owning functionBilling and accounting; finance | Summary returned to the client accountGross profit by job order, after burden, fees and refunds |
Recruiting Capacity Across Three Clients on Sample Data
The figures below are sample data for an invented agency and describe no client. Over twelve months it worked job orders for three clients: A, buying contract labour through an MSP program with a supplier-funded fee of 3 percent of billings; B, a direct contract client; and C, a direct-hire client. Every assignment and guarantee period began and ended inside the year, and each job order had one opening.
| Measure | Client A, MSP program | Client B, direct contract | Client C, direct hire |
|---|---|---|---|
| MeasureJob orders worked | Client A, MSP program40 | Client B, direct contract10 | Client C, direct hire6 |
| MeasureSubmittals | Client A, MSP program120 | Client B, direct contract30 | Client C, direct hire24 |
| MeasureInterviews | Client A, MSP program24 | Client B, direct contract15 | Client C, direct hire12 |
| MeasurePlacements | Client A, MSP program8 | Client B, direct contract6 | Client C, direct hire3 |
| MeasureFill ratio | Client A, MSP program20.0% | Client B, direct contract60.0% | Client C, direct hire50.0% |
| MeasureSubmittals per placement | Client A, MSP program15.0 | Client B, direct contract5.0 | Client C, direct hire8.0 |
| MeasureTerms on the placement | Client A, MSP program$60.00 bill, $40.00 pay | Client B, direct contract$55.00 bill, $35.00 pay | Client C, direct hire20% of a $90,000 salary |
Client A's 120 submittals are the program's cap of three per position on all 40 job orders, and on this record B leads on fill ratio. The second table holds what payroll and billing know, with each contract placement working 520 hours, thirteen weeks at forty, and burden at 18 percent of pay, 7.65 points of it statutory.
| Measure | Client A, MSP program | Client B, direct contract | Client C, direct hire |
|---|---|---|---|
| MeasureHours worked | Client A, MSP program4,160 | Client B, direct contract3,120 | Client C, direct hireNone |
| MeasureBillings | Client A, MSP program$249,600 | Client B, direct contract$171,600 | Client C, direct hire$54,000 in fees |
| MeasureWages | Client A, MSP program$166,400 | Client B, direct contract$109,200 | Client C, direct hireNone |
| MeasureBurden at 18% of pay | Client A, MSP program$29,952 | Client B, direct contract$19,656 | Client C, direct hireNone |
| MeasureProgram fee at 3% of billings | Client A, MSP program$7,488 | Client B, direct contractNone | Client C, direct hireNone |
| MeasureFee refunded inside the guarantee period | Client A, MSP programNone | Client B, direct contractNone | Client C, direct hire$18,000 |
| MeasureGross profit | Client A, MSP program$45,760 | Client B, direct contract$42,744 | Client C, direct hire$36,000 |
| MeasureGross profit per hour | Client A, MSP program$11.00 | Client B, direct contract$13.70 | Client C, direct hireNone |
| MeasureGross profit per placement | Client A, MSP program$5,720 | Client B, direct contract$7,124 | Client C, direct hire$12,000 |
On the billing report A leads with $249,600 of $475,200, or 52.5 percent, and it leads on gross profit with $45,760 of $124,504. Client C's refund is one hire who left on day 20 of a 90-day guarantee that prorates the fee only from day 30.
Neither table says which client's next job order deserves recruiting time. Gross profit per job order worked is $45,760 ÷ 40 = $1,144 for A, $42,744 ÷ 10 = $4,274.40 for B and $36,000 ÷ 6 = $6,000 for C, so the ranking by billings reverses. Client A absorbed 40 of the 56 job orders worked, or 71.4 percent, and returned 36.8 percent of the gross profit.
The figure is the product of one number from each system: the fill ratio from the applicant tracking system and gross profit per placement from payroll and billing. For A, 20.0 percent of $5,720 is $1,144; for B, 60.0 percent of $7,124 is $4,274.40; and for C, 50.0 percent of $12,000 is $6,000.
The mechanism sits on both sides of the record. The program sends each requisition to competing suppliers, so 32 of A's 40 job orders ended without an agency placement. Both clients' rates carry a $20.00 spread, yet burden and the fee leave $11.00 an hour from A against $13.70 from B. Each fact is visible in one system and the product in none. Burden also decides the order of B and C: computed from spread alone, B's figure would be 3,120 × $20.00 ÷ 10 = $6,240, ahead of C's $6,000.
The sample does not justify leaving the program: one year of closed job orders does not forecast the next, and program volume may keep recruiters working between direct orders. It justifies showing the figure in each account plan, so program requisitions are worked only with a strong candidate and weighed at renewal against what they returned.
Staffing Revenue Operations Metrics and Their Source Records
Each metric reads particular records, and only the last reads all of them.
| Metric | Definition | Records it reads |
|---|---|---|
| MetricFill ratio | DefinitionPlacements over job orders worked, by client and channel | Records it readsApplicant tracking system |
| MetricSubmittals per placement | DefinitionSubmittals over placements, by client and recruiter | Records it readsApplicant tracking system |
| MetricInterview rate | DefinitionInterviews over submittals sent to the client | Records it readsApplicant tracking system; VMS for program clients |
| MetricTime to fill | DefinitionDays from job order opened to placement start | Records it readsApplicant tracking system |
| MetricSpread | DefinitionBill rate less pay rate, per hour | Records it readsApplicant tracking system |
| MetricGross profit per hour | DefinitionBill rate less pay rate, burden and program fee | Records it readsApplicant tracking system, payroll, billing |
| MetricContractors on assignment | DefinitionPlacements with approved hours in a week | Records it readsApplicant tracking system, payroll |
| MetricRedeployment rate | DefinitionEnded assignments followed by a new placement within a stated number of days, over ended assignments | Records it readsApplicant tracking system |
| MetricDirect-hire fee retention | DefinitionFees kept after guarantee periods, over fees invoiced | Records it readsApplicant tracking system, accounting |
| MetricRepeat-client share | DefinitionJob orders from clients with a placement in the prior twelve months, over all job orders | Records it readsCRM, applicant tracking system |
| MetricGross profit per job order worked | DefinitionGross profit after burden, program fees and refunds, over job orders worked, filled or not | Records it readsCRM account, applicant tracking system, payroll, billing |
Spread is what the rates promise, and gross profit per hour what the agency keeps; reporting one as the other overstates contract margin by burden and fee, $9.00 an hour for A and $6.30 for B on the sample. Where recruiter time is recorded, hours can replace job orders worked as the last metric's denominator.
Job Order to Gross Profit Reconciliation Procedure
- List every system holding a record of a client, program, job order, candidate, placement, hour or invoice, each program client's VMS included, and name the function that owns each.
- Complete the records table above for the agency, with one system of record per record and read-only copies elsewhere.
- Store the applicant tracking system's client identifier on the CRM account and the VMS requisition identifier on every program job order, so records join on identifiers rather than names.
- Record on each job order its channel, its fee terms, and a close reason from a fixed list that includes filled by another supplier and cancelled by the client.
- Define gross profit in writing: bill less pay, burden and program fee for contract hours, and fee less refunds for direct hire, naming the burden components included.
- Name who writes gross profit by job order to the client account each month, and who sends assignment end dates to recruiting before each end.
- Compute gross profit per job order worked by client over twelve months of closed job orders, and show it in the account plan and at each program renewal.
- Verify on one closed program job order, one filled contract job order and one direct-hire placement. Approved hours times bill rate equal the invoice before the program fee, and the invoice less the fee equals cash received; wages, burden, fee and gross profit sum to billings; the direct-hire fee equals salary times the fee percentage, less any refund; the unfilled program job order appears in its client's denominator; and the account's gross profit matches billing. Any equality that fails points to the handoff where the record broke.
The same model configured in one CRM, with job order, placement, timesheet and time entry objects, is the subject of HubSpot for staffing and recruiting and its walkthrough.
Staffing Revenue Symptoms and Their Mechanisms
The largest client by billings keeps recruiters at capacity while gross profit stays flat. Its job orders go to competing suppliers, so recruiting time spreads across requisitions that end without a placement; step 7 puts the figure in the account review.
Recruiting reports a higher contract margin than finance does. Recruiting reads spread from the two rates on the placement, finance reads gross profit after burden and the program fee, and the definition in step 5 names the difference.
Direct-hire revenue reported at placement exceeds the fees collected. Fees are counted when the hire starts, while refunds inside the guarantee period are credited later in accounting, so the refund must be written back to the placement.
A program client's fill ratio moves when nothing changed on the desk. Job orders lost to another supplier are deleted or left open instead of closed with a reason, so the denominator shifts; step 4 repairs the record.
Contractors leave at the end of an assignment without a redeployment conversation. End dates sit on the placement and reach recruiting only when someone looks, and step 6 sends them ahead of each end.
Costs and Returns of Staffing Revenue Operations
The firm that publishes this page is a HubSpot Solutions Partner paid to implement CRM systems, staffing agencies among its clients, and it has an interest in any conclusion that adds one.
The model buys capacity decisions made on returns rather than billings: recruiting time directed by gross profit per job order worked, program renewals judged on net figures, and redeployment raised before an assignment ends. It costs a close reason on every job order, program terms recorded on the job order, a written definition of gross profit, and an owner for the monthly return from billing. The close reason is the weak point, because the recruiter who records it gains nothing from a figure account management reads.
The case is strongest for an agency that serves both direct clients and MSP programs, mixes contract and direct-hire work, and cannot work every job order it receives. It is weakest for an agency serving one program or one client, where fill ratio and gross profit per hour describe the whole book, and for a direct-hire boutique whose recruiters run each search from intake to fee.
Scope, Evidence Limits and Dates
This page covers the commercial record of temporary, contract and direct-hire work, from client account to gross profit, and leaves out payroll compliance, joint employment, workers' compensation, statement-of-work services, recruitment process outsourcing, pricing and revenue recognition. Definitions are those of the American Staffing Association and the Bureau of Labor Statistics, and product behaviour is as documented by Bullhorn and SAP Fieldglass, all read in September 2026. Fieldglass documents its funding options for statement-of-work invoices, so each program's terms decide how its fee applies to time sheets; under the buyer-funded option the client pays the fee and agency gross profit carries none of it.
Three limits apply to the evidence. No study found for this page tests whether an operating model of this kind changes gross profit, fill ratio or redeployment, and the direct research reviewed in the firm's history of revenue operations is recent and small. The sample agency is invented, so its reversal shows that a ranking by billings can invert, not how frequently one does. Gross profit per job order worked treats a job order as a unit of recruiting effort, which it is not: a direct-hire search and a capped program requisition can take different hours, and the 3 percent fee and 18 percent burden are sample values rather than benchmarks.
Frequently Asked Questions
Revenue operations in a staffing or recruiting agency: what does it mean?
It means governing the records that carry a client from account to job order, through submittals and placements to the hours billed or fee earned, and back to the next job order. It sets which system owns each record and how each metric is defined, so a decision about recruiting capacity can be judged by the gross profit it produced.
Does a recruiting firm need RevOps?
It needs the discipline where recruiting capacity is scarce and clients differ in what a job order returns, as when direct clients, MSP programs and direct-hire searches compete for the same recruiters. A firm serving one client or one program, or a boutique whose recruiters run each search end to end, can hold the chain in one system.
RevOps versus recruiting operations: what separates the two?
On this page, recruiting operations means running the candidate side of the desk: the applicant tracking system, sourcing, the submittal workflow and measures such as submittals per placement. Revenue operations spans both sides of the market and the back office, joining the job order to the client account and the placement to payroll and billing. The two meet at the job order, where the recruiting funnel supplies the denominator of gross profit per job order worked.
Does an MSP program change revenue operations for a staffing agency?
It changes three records. The requisition originates in the client's VMS and its identifier belongs on the job order; submittals are capped and made in competition, which lowers the reachable fill ratio; and a supplier-funded fee comes off each invoice, which puts gross profit per hour below the spread the rates suggest.
Revenue Operations for Staffing Agencies in Summary
A staffing agency earns an hourly spread on contract labour, less burden and any program fee, and a fee on direct hire, less any refund inside the guarantee period. A CRM holds accounts and program terms, an applicant tracking system the funnel, payroll and billing the hours and cash, and a program client's VMS its requisitions. Revenue operations for staffing gives each of those records one owner and defines each metric by the records it reads.
Where recruiting time cannot cover every job order, deciding where it goes needs gross profit per job order worked: the fill ratio from the applicant tracking system multiplied by gross profit per placement from payroll and billing. On the sample that figure moves the program client from first by billings, with 52.5 percent of them, to last at $1,144 a job order against $6,000 for the direct-hire client. Until billing writes gross profit back to the client account each month, the account manager deciding on the next job order reads billings, and billings rank the program client first.