Staffing & Recruiting
Salesforce ATS integration for staffing firms
Plan Salesforce and ATS integration with clear ownership, a worked field map, safe retries, reconciliation, and practical rollout checks for staffing teams.
By Gosai Digital · 5 min read
Reviewed
A useful ATS integration gives people the information they need at the point of work, with a clear way to recover when systems disagree. Before choosing middleware, decide which workflow needs to improve, which system can change each value, and how operations will recognize an incomplete transfer.
Start by checking whether the ATS is a separate platform, a separate Salesforce org, or an application in the same org. That distinction changes the work. A Salesforce-native ATS may need shared-record configuration and permission changes rather than a second copy of its data.
Item 1: ATS authoritative placement change
Stable tenant key and event identity retained
Item 2: Contract, identity and version checks
Reject stale state; deduplicate business effects
Item 3: Salesforce placement projection
Accepted record may outlive a lost response
Item 4: Owned exception queue
Unmapped status requires repair, not endless retry
Item 5: Reconciliation
Compare identifiers and relevant values with the source
This guide describes an integration between separate systems. The example is illustrative, not a Gosai client implementation or a universal staffing data model.
Define the smallest useful contract
Suppose an agency manages client relationships in Salesforce and recruiting in an external ATS. Account managers need to see whether accepted job orders have been filled. They do not need every candidate document or recruiter note.
The first release could exchange approved job orders and placement status. Sales, recruiting, finance, and the system owners should agree this contract:
| Information | Authority in this example | What crosses the boundary | Exception rule |
|---|---|---|---|
| Client identity | Salesforce | Stable client key and approved business fields to ATS | Unmatched client goes to review |
| Approved job order | Salesforce for commercial request; ATS for fulfillment | Request key, role, location, approved terms; ATS order ID returned | ATS rejection leaves request visibly pending |
| Placement lifecycle | ATS | Placement ID, order ID, status, start/end dates | Unknown status is held for mapping review |
| Candidate identity | ATS | Candidate key and minimum permitted display fields, if needed | Ambiguous identity is not auto-merged |
| Invoiced revenue | Finance system | Only the agreed reporting detail | Financial corrections originate in finance |
These are example ownership choices. Some agencies originate orders in their ATS; others require invoice-line detail in Salesforce. Both can be valid. Decide authority at field or business-transition level when ownership is split, and enforce it through permissions and integration behavior.
For each mapped field, document its API name, type, allowed values, direction, null behavior, transformation, sensitivity, and business owner. Distinguish an omitted field from an instruction to clear it. Specify time zones, currencies, effective dates, and cancellation semantics before testing.
Make identity and retries explicit
Use a stable source identifier rather than email or name as the synchronization key. If several ATS tenants feed one org, include the tenant in the key: an illustrative placement key is “ats-east:placement:8472”. Configure the corresponding Salesforce field as an External ID and, where the entity model requires it, Unique.
Salesforce REST upsert can create or update a record using an external ID. It does not decide which candidate records represent the same person, resolve competing owners, or make every downstream automation safe to repeat.
A proposed message contract might contain event ID “evt-901”, placement key “ats-east:placement:8472”, source version 12, changed fields, and occurrence time. Keep delivery attempts separate from the business event. A retried delivery must retain the same event identity.
If the ATS supplies no reliable event ID or version, agree another supported strategy, such as fetching the current authoritative record before applying a change. A timestamp alone can be insufficient when updates share a timestamp or clocks differ.
Work through a failure before go-live
In the example, version 12 changes a placement to Confirmed. Salesforce accepts the update, but the connection closes before the integration receives the response.
- Retain the pending message and retry with bounded backoff for a recoverable failure.
- Match the same external key. Use event deduplication and version checks so the retry does not duplicate business effects or reapply older state.
- If version 11 arrives afterward, reject the stale update or obtain the current source state.
- If Salesforce rejects an unmapped status, move the message to an exception queue with its error, owner, and repair action. Repeating the same invalid payload indefinitely will not repair it.
- After correction, replay safely and reconcile the source record against Salesforce.
Upsert alone may still rerun automation. Notifications, billing handoffs, and other consequential consumers need their own deduplication rules. Salesforce's integration patterns discuss idempotency and recovery; the integration team must implement the appropriate behavior.
Choose timing from the business need
An account manager's placement dashboard may tolerate scheduled updates. A decision that gates a worker's assignment may require a fresher authoritative check. Write the freshness requirement and stale-data behavior for each workflow.
Measure API demand from changes, payload size, batch size, retries, imports, and other integrations. Weekly placement count cannot establish whether either vendor's limits will be reached. Salesforce allocations are shared across org usage; check the API limits reference and the selected ATS contract.
Queues help absorb bursts, but do not guarantee delivery. Monitor queue age, rejected messages, expired retention, and missing records. Salesforce retains high-volume platform events and change data capture events for 72 hours; event replay has explicit limits. Legacy standard-volume platform events have a 24-hour retention window, so verify the event type in existing integrations. Design a catch-up path for outages beyond the supported window.
Separate platform features from implementation work
Salesforce provides APIs, external-ID fields, permissions, events, Flow, and Apex. A packaged connector may provide mappings, scheduling, or retry facilities. Verify its exact object coverage, version support, API entitlements, and recovery behavior.
Cross-system conflict resolution, durable exception handling, reconciliation, and operational dashboards still need configuration or development somewhere. They are not automatically supplied by enabling an API. For outbound Salesforce authentication, Named Credentials and External Credentials provide supported mechanisms; restrict integration access and keep secrets out of mappings and logs.
Treat backfill and ongoing operation as one design
Before loading history, resolve duplicate keys and parent-child dependencies. Establish a source-supported snapshot or change watermark, capture concurrent changes, load the baseline, and replay changes without overwriting newer values. Test interruption and restart.
Agree how merges, withdrawals, deletion requests, and retention affect each copy. A source deletion should not automatically erase records another system must retain. Conversely, leaving sensitive data in an exception queue can defeat an approved deletion process. Give retained payloads an access and retention policy.
Reconciliation should compare identifiers and relevant values, not just total record counts. Assign someone to investigate mismatches, with business-agreed freshness and exception-resolution expectations.
Release checklist
- Ownership and mappings approved by the affected teams
- Duplicate, stale, missing-parent, invalid-value, and timeout cases tested
- Backfill and restart rehearsed with representative data
- Authentication expiry and vendor outages tested
- Reconciliation identifies missing and incorrect records
- Exceptions have an owner, repair procedure, and safe replay path
- Rollback preserves records already accepted by either system
Start with the handoff that needs fixing
Talk through your ATS and Salesforce integration. Bring the two system names, one troublesome handoff, and a sample field map without personal data. That is enough context to discuss what should move, who owns it, and what recovery needs to look like.
Sources and review date
Reviewed October 9, 2026 against the linked Salesforce documentation. The worked contract and release checklist are proposed design guidance. ATS capabilities, package behavior, licenses, and limits must be verified for the selected products and org.
For help defining system ownership, the integration contract and recovery boundaries, see our fractional Salesforce architect support.