The staffing Salesforce data model that doesn't fight you
A flat schema that treats every person as a Lead and every job as an Opportunity works when the team is small. It stops working when you have recruiters running parallel searches, clients with multiple divisions, candidates flowing through simultaneous submission pipelines, and a board that wants margin rolled up by brand or region.
The schema that serves a five-person desk is rarely the schema that serves a fifty-person firm. Early Salesforce implementations in staffing tend to flatten everything onto standard objects: candidates as Leads or Contacts, jobs as Opportunities, placements buried in Opportunity custom fields. This works until volume grows and the questions get specific—and then it stops working all at once.
The collapse usually shows up in three places: there is no dedicated record for a candidate submission to a specific job, so pipeline visibility disappears into task notes; there is no clean way to assign multiple recruiters to a search, so the owner field gets overloaded; and there is no consistent field spanning accounts, jobs, and placements to slice revenue by brand or region.
This article covers the six objects at the core of a unified staffing data model, the relationships between them, how to model recruiter assignments without breaking attribution, and the minimum approach to multi-brand reporting that does not require splitting the org.
Schema decisions compound over years
The right object model makes every downstream workflow cheaper to build—and easier to maintain as the business changes.
custom objects nearly every staffing org eventually needs: Job, Submission, Placement
stages in the candidate pipeline: sourced, submitted, placed, billed
Business Unit field applied consistently across Account, Job, and Placement unlocks multi-brand reporting
The six objects that carry a staffing org
Three standard, three custom. The question is not whether to create them—most firms do eventually—but whether each is used correctly, or repurposed to compensate for a missing one.
The Submission object: the missing piece in most early orgs
Without a Submission object, there is no way to track that one candidate was submitted to four different jobs, screened for two, and offered one. Teams work around this by logging submissions as tasks or notes on the Contact record, which means the pipeline is invisible to reports and dashboards. Managers lose the ability to measure submission-to-interview rate, interview-to-offer rate, or time-to-fill by job type.
A Submission is a many-to-many junction between Contact (candidate) and Job. Each Submission carries its own stage, its own activity timeline, and its own rejection reason if the candidate did not advance. When a submission is accepted and a start date is confirmed, a Placement record is created—the Submission does not become a Placement, it produces one. Both records persist in parallel: the Submission records the selection decision, the Placement records the assignment.
Submission stages and Placement stages track different things. Submission tracks screening and selection: Submitted, Phone Screen, Interview Scheduled, Offer Extended, Accepted, Declined, Rejected. Placement tracks the assignment lifecycle: Pending Start, Active, On Hold, Ended, Converted to Perm. Conflating both timelines into a single status field on one object is the most common source of pipeline confusion in staffing orgs.
How to model recruiter assignments without breaking attribution
Recruiters are Users in Salesforce. The question is not whether to link them to jobs—it is how many recruiters can own a job, how split credit is tracked, and who owns the candidate relationship separately from the job search.
Multi-brand and multi-region without splitting the org
Multi-brand and multi-region questions arrive when a staffing firm acquires a second brand or opens a regional office with its own P&L. The impulse is often to create a second Salesforce org for operational separation. That is almost always the wrong decision.
A Business_Unit__c or Division__c picklist field applied consistently to Account, Job, Placement, and Contact provides the segmentation needed for separate pipeline views, list views, and margin analysis. Recruiters can work candidates across brands; revenue rolls up to a single dashboard; and a client that works with two of your brands is one Account with two distinct sales pipelines, not two separate records that have no relationship to each other.
Record Types add the next layer of separation when brands or regions have genuinely different workflows: different required fields, different page layouts, different email templates. Use them when the processes differ, not just to create visual separation. A firm with two brands that follow the same placement process and use the same required fields does not need two record types—it needs a consistent Business Unit filter on its existing reports.
Four relationship decisions that compound into structural debt
These patterns are tempting early on because they reduce the object count. They create problems that grow with every new recruiter, every new client, and every board reporting cycle.
Need to redesign your Salesforce data model for staffing?
We audit existing org schemas, identify structural debt, and design object models that support recruiter workflows, multi-brand reporting, and growth without rebuilding from scratch.
Continue reading
Related resources
Keep moving through the same operating model with a few nearby articles from the same topic cluster.
Scaling Salesforce for High-Volume Staffing and MSP Operations
When staffing volume grows, Salesforce stalls in predictable ways: automation fires synchronously on bulk imports, recruiter pages wait for backend processing, and governor limits surface mid-transaction. Here is how to architect around it.
Advanced
March 1, 2026
The Hidden Cost of Bad Salesforce Architecture in Staffing Firms
Bad Salesforce architecture in staffing doesn't announce itself. It accumulates as reporting workarounds, duplicate operations, fragile automation, and change resistance that compounds until fixing it costs more than living with it.
Applied
March 1, 2026
Salesforce Reporting for Staffing Firms: Pipeline, Margin, and Recruiter Productivity
Salesforce reports in staffing firms are often wrong because the source objects, field conventions, and report types were built for a generic sales org. Here's how to fix the three layers that determine whether your numbers are trustworthy.
Applied
March 1, 2026
Resource updates
Get notified when new guides go live.
Practical notes on Salesforce, staffing workflows, and operational cleanup. No newsletter bloat.
