Salesforce ATS + Testlify Integration
Complete setup and user guide — from Salesforce admin configuration to day-to-day use
This guide covers the full Salesforce ↔ Testlify integration in two parts:
- Part I — Salesforce Admin Setup: one-time configuration performed by a Salesforce System Administrator (creating the connected app, granting field permissions, configuring picklist values, and verifying the setup).
- Part II — Connect & Use the Integration: connecting Testlify to Salesforce, linking assessments, and the day-to-day flow of sending assessments and tracking results through a hiring pipeline.
If you're a Salesforce Administrator setting this up for the first time, start at Part I. If setup is already complete, jump to Part II.
What This Integration Does
- Automatically creates a matching Testlify assessment invite whenever a candidate is added to a job in Salesforce.
- Sends the assessment invite to the candidate by email — no manual step in Testlify required.
- Syncs the candidate's assessment status, score, completion date, and full report back onto the Salesforce Applicant record.
Before You Begin
- Salesforce System Administrator access, with access to Salesforce Setup.
- Your Testlify integration details, including the OAuth callback URL supplied by Testlify.
- Your Salesforce domain / My Domain URL (e.g. yourcompany--sandbox.sandbox.my.salesforce.com).
- Admin access to Testlify (Settings > Integrations).
- At least one Testlify assessment you want to use for the role you're hiring for.
PART I · SALESFORCE ADMIN SETUP (ONE-TIME)
1. Create the Connected App
Salesforce now manages connected apps through the External Client App Manager. This is where Testlify's OAuth credentials are generated.
Step 1: Open the External Client App Manager
In Salesforce, go to Setup, then search for and open External Client App Manager under Apps > External Client Apps.

Setup > External Client Apps > External Client App Manager. Click New External Client App to start.
Step 2: Enter basic information
Fill in the External Client App Name, API Name, Contact Email, and set Distribution State to Local. Click Create.

Basic Information for the new app.
Step 3: Enable OAuth settings and scopes
Open the new app and enable OAuth Settings. Enter the OAuth Callback URL supplied by Testlify, then move the following scopes into Selected OAuth Scopes:
- Access the identity URL service (id, profile, email, address, phone)
- Manage user data via APIs (api)
- Manage user data via Web browsers (web)
- Full access (full)
- Access Connect REST API resources (chatter_api)
- Access Visualforce applications (visualforce)

Enter the callback URL and select the required OAuth scopes.
Step 4: Configure flow enablement and security policies
Under the app's Policies, enable Authorization Code and Credentials Flow. Under Security, keep “Require secret for Web Server Flow”, “Require secret for Refresh Token Flow”, and “Enable Refresh Token Rotation” checked (these are Salesforce defaults for most orgs).

Authorization Code and Credentials Flow enabled, with the default security requirements in place.
Step 5: Save and confirm the app is enabled
Save your changes. The app's status should now show as Enabled. Open the OAuth Settings section and click Consumer Key and Secret to reveal and copy both values — you'll paste these into Testlify in Part II.

Confirm the app shows an Enabled status before continuing.
Security: Keep the Consumer Key and Consumer Secret private. Treat them like a password — don't paste them into chat, email, or shared documents.
2. Grant Field Permissions for Testlify Fields
Testlify writes assessment results onto a custom object in your ATS. Before that data can be seen, the fields it uses need to be made visible to the right profile(s), typically System Administrator.
Step 6: Open Object Manager
In Setup, search for Object Manager and open it.

Setup > Object Manager.
Step 7: Open the ATS Applicant object
Find and open ATS Applicant (API name: bpats__ATS_Applicant__c).

Locate ATS Applicant in the object list.
Step 8: Locate the Testlify fields
Open Fields & Relationships. You'll find four Testlify fields on this object:
- Testlify Assessment Score (Testlify_Assessment_Score__c) — Number
- Testlify Assessment Status (Testlify_Assessment_Status__c) — Picklist
- Testlify Completed Date (Testlify_Completed_Date__c) — Date/Time
- Testlify Report URL (Testlify_Report_URL__c) — URL

The four Testlify fields on the ATS Applicant object.
Step 9: Open a field and view its accessibility
Click into a Testlify field (for example, Testlify Assessment Score), then click View Field Accessibility.

Custom Field Definition Detail > View Field Accessibility.
Step 10: Grant access to the right profile
On the Field Accessibility page, find the profile that should see this field (typically System Administrator) and click its current access level to edit it.

Click the profile's access link (Hidden/Editable) to change it.
Check Visible (and Read-Only only if the field should not be editable), then Save.

Check Visible for the profile, then Save.
Note: Repeat Steps 9–10 for all four Testlify fields: Assessment Score, Assessment Status, Completed Date, and Report URL.
3. Configure the Testlify Status Picklist
The Testlify Assessment Status field is a picklist. It needs specific values that match the statuses Testlify sends back.
Step 11: Open the Testlify Assessment Status field
In Fields & Relationships on the ATS Applicant object, open Testlify Assessment Status.

Testlify Assessment Status is a Picklist field.
Step 12: Add the required picklist values
Open the picklist Values and add any of the following that are missing, then save:
- Completed
- Pass
- Fail
- invited
- started
- expired

Active picklist values for Testlify Assessment Status.
4. Verify the Setup
Step 13: Verify the object via the Salesforce REST API
Confirm the object is reachable via the API using a request like this (replace {domain} with your Salesforce domain and <ACCESS_TOKEN> with a valid OAuth access token):
curl --location 'https://{domain}/services/data/v62.0/sobjects/bpats__ATS_Applicant__c' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'Content-Type: application/json'
A successful response returns the object's metadata.
Step 14: Log out and log back in
Important: After completing all of the above, log out of Salesforce and log back in so the new permissions and settings take effect.
Expected Result
- Connected App (External Client App) created and OAuth enabled.
- Testlify fields are accessible to the right profile(s).
- Testlify Status picklist values are configured.
- The Salesforce object metadata is returned successfully from the API call.
PART II · CONNECT & USE THE INTEGRATION
5. Connect Salesforce to Testlify
With the Connected App in place, link it to Testlify. This is done once.
Step 15: Open Integrations in Testlify
Go to Settings > Integrations. Salesforce is listed alongside your other supported integrations.

Settings > Integrations — Salesforce shown as an available/active integration.
Step 16: Enter your Salesforce Connected App credentials
Open the Salesforce integration and enter the Client ID (Consumer Key), Client Secret (Consumer Secret), and Auth Host (Login URL) from Part I, Step 5. Click Next.

Enter the Client ID, Client Secret, and Auth Host, then click Next.
Note: Once connected successfully, Salesforce will show an “Active” status in your Integrations list.
6. Link a Testlify Assessment to Your ATS
Step 17: Open the assessment's Integration tab
Open (or create) the assessment you want candidates for this role to take, then go to Settings > Integration.
Step 18: Link the assessment
Click Link to connect this assessment to jobs coming from your ATS.

Until an assessment is linked, you'll see “No ATS has been linked to this assessment.” Click Link to connect it.
7. Create a Job Requisition in Salesforce
Step 19: Start a new requisition
In your Salesforce ATS, go to the Requisitions tab and click New.

Requisitions > New.
Step 20: Fill in the requisition details
Complete the requisition fields (job family, working details, effective dates, etc.) and click Save.

Fill in the requisition fields, then click Save.
Step 21: Confirm the requisition was created
Salesforce confirms the new requisition and opens its record page, which includes the ATS Kanban board for tracking applicants.

A confirmation banner appears, and the requisition record opens automatically.
8. Add a Candidate to the Job
Step 22: Open Add Candidates to Job
On the requisition record, open the ATS Kanban tab and click Add Candidates to Job.

ATS Kanban tab > Add Candidates to Job.
Step 23: Search for the candidate
In the Add Candidate to Job window, click the Contact field and start typing the candidate's name.

Click the Contact field to search your existing candidates.

Matching candidates appear as you type.
Step 24: Select the candidate and save
Select the correct candidate from the results, confirm it appears as a chip in the Contact field, then click Save.

With the candidate selected, click Save.
Note: The candidate now appears in the Sourcing column of the ATS Kanban board.
9. Automatic Assessment Invite
Step 25: Testlify creates the invite automatically
As soon as the candidate is saved to the job, Testlify automatically creates or updates a matching assessment (named after the requisition) and emails the candidate an invite. No manual step in Testlify is required.

Testlify confirms the assessment was updated with the new candidate invite.
Step 26: Confirm delivery in Testlify
Open the linked assessment in Testlify and check All Candidates. The candidate appears with a Delivered status.

The candidate's invite status shows as Delivered.
10. Track Results
Step 27: Watch for the completed score in Testlify
Once the candidate completes the assessment, their score and grading automatically appear in Testlify under All Candidates.

Score and grading populate automatically once the candidate finishes.
Step 28: See the candidate on the Salesforce Kanban board
Back in Salesforce, the candidate's card appears on the ATS Kanban board with their live applicant status.

The candidate's card shows their current stage and status.
Note: You can drag candidate cards between Sourcing, Recruiter Review, and Hiring Manager Review to move them through your pipeline.

Example: the candidate card moved to the Hiring Manager Review column.
Step 29: Open the applicant record
Click into the ATS Applicant record to see the full detail view, including the linked Job and current ATS Stage.

The Applicant record header shows the candidate, linked Job, ATS Stage, and status.
Step 30: Review the synced Testlify fields
Scroll down on the Applicant record to see the fields configured in Part I sync automatically from Testlify:
- Testlify Assessment Status — e.g. Completed
- Testlify Assessment Score — the candidate's overall score
- Testlify Completed Date — when the candidate finished the assessment
- Testlify Report URL — a direct link to the full PDF assessment report

These fields update automatically — no manual data entry needed.
Step 31: Open the full assessment report
Click the Testlify Report URL link on the Applicant record to open the candidate's full PDF assessment report, including their score breakdown and completion details.

The full report opens as a PDF, showing score, completion time, and candidate details.
Field Reference
The Testlify fields on the Salesforce ATS Applicant object (bpats__ATS_Applicant__c):
| Field Label | API Name | Type | What It Means |
| Testlify Assessment Status | Testlify_Assessment_Status__c | Picklist | Whether the candidate has started or completed the assessment. Values: Completed, Pass, Fail, invited, started, expired. |
| Testlify Assessment Score | Testlify_Assessment_Score__c | Number | The candidate's overall score on the linked assessment. |
| Testlify Completed Date | Testlify_Completed_Date__c | Date/Time | The date and time the candidate finished the assessment. |
| Testlify Report URL | Testlify_Report_URL__c | URL | A direct link to the candidate's full PDF assessment report. |
Troubleshooting & Tips
Setup issues (Part I)
- Field doesn't appear on the Applicant record — confirm field-level security was granted to the profile you're logged in as (Part I, Step 10), then log out and back in.
- API verification call fails — confirm the access token is valid and unexpired, and that the domain in the URL matches your Salesforce My Domain exactly.
- Consumer Key/Secret not visible — you need “Customize Application” or admin permissions on the External Client App to view them.
Day-to-day issues (Part II)
- “No ATS has been linked to this assessment” — repeat Part II, Section 6 to link the assessment to your ATS.
- Candidate didn't receive an invite — confirm the Salesforce integration status shows Active under Testlify Settings > Integrations.
- Fields on the Applicant record aren't updating — confirm the candidate was added to the correct Job/Requisition, and that the linked assessment matches that job.
- Credentials need to change — if the Consumer Secret is rotated in Salesforce, update it in Testlify under Settings > Integrations > Salesforce.
- Still stuck — reach out to your Testlify support contact or your Salesforce administrator.