Reading Time

ATS integration guide: Emply, Jobylon, and Salesforce assessment mapping

Assessment platforms that don't integrate tightly with your ATS create manual overhead at exactly the wrong moment, when a recruiter is managing 50+ active applications and needs status updates, scores, and rejection decisions to flow automatically. This reference document covers how Selection Lab integrations with Emply, Jobylon, and Salesforce work at a systems level. What triggers an invitation, what gets returned after a candidate completes an assessment, and how rejection outcomes map back to ATS statuses.

Three distinct events drive every integration.

  1. Invitation trigger (incoming to Selection Lab). The ATS detects a pipeline stage change or webhook event and instructs Selection Lab to send an assessment invite to the candidate.
  2. Completion callback (outgoing from Selection Lab). When a candidate finishes (or declines/expires), Selection Lab pushes result artifacts back to the ATS record.
  3. Outcome/rejection mapping (decisioning layer). The ATS applies a configured rule to translate a Selection Lab result status into the correct ATS candidate status, including rejection messaging.

Understanding which layer a problem belongs to is the fastest way to isolate configuration errors. For the same pattern in Recruitee and SmartRecruiters, see ATS status mapping for assessment results.

Terminology used throughout this document

TermDefinition
Invitation statusWhether the assessment invite was successfully delivered and opened. Possible values pending, sent, opened, failed.
Completion statusThe terminal state of the candidate's assessment attempt. completed, declined, expired, error.
Report availabilityWhether a full result report (URL or embedded view) is ready to render in the ATS.
Candidate outcomeThe downstream ATS action triggered by the completion status plus score thresholds. advance, reject, withdraw, or manual review.

Emply assessment integration: invitation fields and trigger mechanism

Fields sent to Selection Lab on invite

When an Emply candidate moves to a pipeline stage configured to trigger a Selection Lab assessment, Emply sends a structured payload to the Selection Lab webhook endpoint. The fields that should be present in a correctly configured Emply integration are listed below. Fields marked [TBD] require verification against your specific Emply setup, since Emply's public help documentation does not publish the full payload schema.

FieldTypeRequiredPurpose in Selection Lab
first_namestringYesPersonalizes invite messaging and report header
last_namestringYesReport identity, duplicate detection
emailstring (RFC 5322)YesPrimary invite delivery channel
application_idstringYesCorrelation key, echoed back on completion callback so Emply updates the correct record
candidate_idstringYesExternal candidate identity, used for deduplication across applications
requisition_idstringRecommendedLinks assessment to the correct job, drives assessment profile selection if profiles are mapped per vacancy
locale / languageISO 639-1 (e.g., nl, en)RecommendedSets the UI language of the assessment and invite copy
phonestring (E.164)OptionalRequired only if WhatsApp delivery is configured; without it, email delivery is used
consent_flagbooleanOptional [TBD]If Emply passes a pre-collected consent flag, Selection Lab can record it; otherwise, Selection Lab's own consent flow fires before results are shared

What happens when optional fields are missing. If locale is absent, Selection Lab defaults to the language configured in the assessment profile. If phone is absent and the invite channel is set to WhatsApp, the invite fails silently unless a fallback channel (email) is configured. Verify fallback behavior with your Selection Lab account configuration.

Configuration steps for Emply invite triggers

The trigger mechanism for Emply integrations operates via a webhook or connector sync (exact mechanism [TBD], confirm whether your Emply instance uses webhook push or a polling-based connector). The configuration path is as follows.

  1. In your Emply admin, navigate to the integration/connector settings for your assessment vendor.
  2. Select the pipeline stage that should trigger an invite (e.g., "Assessment Stage").
  3. Map that stage to the Selection Lab webhook endpoint and provide the API credentials (Bearer token or OAuth client credentials, depending on your Selection Lab tenant configuration).
  4. Select the assessment profile to assign to candidates entering that stage. If your vacancy-to-profile mapping is dynamic, confirm whether Emply passes the requisition_id so Selection Lab can resolve the correct profile automatically.
  5. Confirm consent workflow settings. If Emply collects candidate consent to share data with third-party processors before the application reaches the assessment stage, pass the consent flag in the payload. If not, Selection Lab initiates its own consent request before sharing results back.

Auth failure mode. If the API credential is expired or misconfigured, Emply will receive an HTTP 4xx response. Depending on your connector configuration, this may silently drop the invite or queue it for retry. Check your integration logs in both Emply and the Selection Lab admin panel to confirm delivery.

Retry behavior for failed deliveries is [TBD], confirm retry count, backoff interval, and dead-letter behavior with your Selection Lab integration engineer.

Emply integration: what gets returned after assessment completion

Once a candidate completes (or exits) the Selection Lab assessment, Selection Lab sends a completion callback to Emply. The callback payload contains the following artifact types.

Completion status values

StatusMeaning
completedCandidate finished all assessment components
declinedCandidate actively rejected the invite
expiredInvite window elapsed without candidate action
partialCandidate started but did not finish (if partial submissions are enabled)
errorTechnical failure during assessment session

Score and report fields

FieldTypeNotes
match_scoreinteger (0-100)Composite match score against the role profile
component_scoresobjectPer-component breakdown (e.g., cognitive, personality, hard skills). [TBD] exact component key names depend on your assessment profile configuration
report_urlstring (URL)Deep link to the candidate's full report in the Selection Lab portal, renderable in Emply if iframe embedding is configured
report_availablebooleanSet to true once the report PDF is generated and accessible
completed_atISO 8601 timestampCompletion time in UTC
application_idstringEchoed from the invite payload for ATS record correlation
candidate_idstringEchoed for deduplication

Consent and privacy logic

Selection Lab's privacy model requires that results are shown to the candidate first. Consent is then requested a second time before results are shared back to the ATS. This means that if a candidate completes the assessment but has not yet given post-assessment consent to share results, the report_url and component_scores fields in the callback payload may be withheld or returned as null until consent is recorded. Personal data is stored in Frankfurt in compliance with EU data residency requirements.

The exact Emply implementation of this consent gate (whether it blocks the callback entirely or sends a partial payload with a consent_pending flag) is [TBD], confirm with your Selection Lab account manager.

Emply status mapping and rejection handling

Decision outcome mapping table

Selection Lab completion statusScore conditionRecommended Emply target status
completedScore >= configured thresholdMove to next stage (e.g., "Interview")
completedScore < configured threshold"Rejected - Assessment" or equivalent
declinedn/a"Withdrawn" or "No Response"
expiredn/a"Rejected - No Show" or configured stage
errorn/a"Manual Review"

The exact Emply stage/status string values are picklist-defined in your Emply configuration. The mapping must be set up in the Selection Lab integration settings to match those exact string values. A mismatch (e.g., "Rejected" vs. "rejected" vs. "REJECTED") will cause the callback to fail silently or return a 422 error.

Rejection messaging channels

On a rejection outcome, Selection Lab can trigger a rejection message to the candidate via two channels.

  • Email, an automated email using the configured rejection template
  • WhatsApp, a rejection message through Selection Lab's SmartChat flow, if the candidate was onboarded via WhatsApp intake and a phone number is present

The timing (immediate vs. delayed) and exact template variables are [TBD], confirm rejection message templates and channel priority logic with your Selection Lab account configuration.

Sample webhook payloads

Invite trigger payload (Emply to Selection Lab)

{
  "event": "assessment.invite",
  "application_id": "APP-00123",
  "candidate_id": "CAND-78901",
  "requisition_id": "REQ-456",
  "first_name": "Jane",
  "last_name": "Smith",
  "email": "[email protected]",
  "phone": "+31612345678",
  "locale": "nl",
  "consent_flag": true
}

Completion callback payload (Selection Lab to Emply)

{
  "event": "assessment.completed",
  "application_id": "APP-00123",
  "candidate_id": "CAND-78901",
  "completion_status": "completed",
  "match_score": 74,
  "component_scores": {
    "cognitive": 68,
    "personality": 81,
    "hard_skills": 72
  },
  "report_url": "https://app.selectionlab.com/reports/APP-00123",
  "report_available": true,
  "completed_at": "2026-08-30T09:14:22Z"
}

Note that field names and the presence of component_scores keys depend on your active assessment profile. The above is illustrative; confirm the exact schema with your Selection Lab integration spec sheet.

Troubleshooting Emply-specific issues

  • Status enum mismatch. If Selection Lab returns a status value that doesn't match an Emply picklist option exactly, the update will fail. Export your Emply pipeline status list and verify each string against the mapping table in your Selection Lab admin.
  • Missing application_id. Without the correlation key, Selection Lab cannot identify which Emply record to update. Check the connector config to confirm Emply is passing this field on every invite event.
  • Consent-blocked result delivery. If a candidate completed the assessment but results aren't appearing in Emply, check whether post-assessment consent is pending. The Selection Lab admin panel shows consent status per candidate.
  • Auth expiry. Rotate API credentials and update them in both the Emply connector and the Selection Lab integration settings simultaneously.

Jobylon assessment integration: pipeline actions and invite triggers

Jobylon's integration model for assessment partners is documented via its Pipeline Actions framework. According to Jobylon's support documentation (January 27, 2026), partner integrations are configured at the pipeline status level. Navigate to Pipeline Actions, create an action next to the status you want to automate, choose "Partner Integrations" as the action type, select your assessment vendor, and save. With that setup, an assessment test is automatically sent when a candidate moves to the selected status.

This means the Jobylon assessment integration is event-driven by status change, not by manual recruiter action. No separate webhook configuration is required on the recruiter side beyond the Pipeline Actions setup. The invite is dispatched as soon as the ATS records the status transition.

Selection Lab fits directly into this model. When a candidate enters the configured pipeline status, Selection Lab receives the invite event and delivers the assessment invitation. Recruiters can view the complete report and individual scores within the Jobylon candidate record once results are returned.

What Jobylon's public docs don't cover

The Jobylon support article on partner integrations does not publish the following.

  • Granular invite payload schemas (which candidate fields are transmitted to the partner)
  • Exact result/status field names returned from the partner
  • Rejection messaging channel logic (email vs. WhatsApp vs. ATS-only)
  • Score-threshold-based status movement configuration for the return path

These details are [TBD], request the Selection Lab + Jobylon integration spec from your Selection Lab account manager, or review the Jobylon admin under Settings > Integrations for field-level detail.

For the return path (results back into Jobylon), the same general completion callback pattern applies as described in the Emply section. Completion status, match score, component scores, and report URL are pushed back to the candidate record. Jobylon's pipeline can then be configured to move candidates automatically based on score thresholds using its native score-based automation feature.

Salesforce assessment integration: object mapping and status constraints

Salesforce's data model for recruiting (whether native Salesforce Recruiting or a managed package like Salesforce for Recruiting) uses strongly typed picklist fields on objects such as Application, Assessment, or custom staging objects. This imposes stricter constraints on result mapping than Emply or Jobylon.

How completion artifacts map to Salesforce objects

Selection Lab's Salesforce integration pushes completion artifacts to a designated object (typically a custom Assessment__c or equivalent object, or an existing Application/Candidate Stage object, depending on your Salesforce org configuration). The fields populated are conceptually the same as in the Emply return payload. Completion status, scores, report URL, and timestamp. However, the exact API field names and object targets depend on your Salesforce org schema.

Key constraint. Any status field mapped from a Selection Lab completion status must correspond to an active picklist value in your Salesforce org. If completed_with_low_score is not a valid picklist entry in your Application_Status__c field, the update will fail with a Salesforce validation error.

Rejection mapping as a translation layer

For Salesforce, rejection mapping is a two-step translation.

  1. Selection Lab outputs a canonical completion status (e.g., completed, declined, expired) plus a pass/fail determination based on score thresholds.
  2. The integration layer (either a Salesforce Flow, Apex trigger, or the Selection Lab connector) translates that canonical status into the Salesforce picklist value configured for rejection (e.g., "Rejected - Assessment", "No Longer in Consideration").

If your org uses Salesforce Experience Cloud and candidates access assessments through a portal, external user permissions for the relevant objects must be configured to allow status reads and report URL access. This is a common source of "results not visible" tickets in Salesforce-integrated deployments.

For candidate rejection status mapping with automatically triggered invitations in Salesforce, the pattern mirrors the Emply approach. A configured threshold fires the rejection status update, and the messaging channel (email, WhatsApp) is driven by candidate contact data and Selection Lab template configuration.

Cross-ATS decision matrix: mapping outcomes consistently

Regardless of which ATS you're using, the mapping logic should normalize Selection Lab's canonical statuses before writing to ATS-specific enums. The following matrix applies across Emply, Jobylon, and Salesforce.

Selection Lab canonical outcomeScore conditionRecommended ATS actionNotes
knockout_rejectKnockout criteria met during SmartChat intakeImmediate rejection status plus reject messageNo assessment sent; candidate rejected at screening layer
completed_passmatch_score >= role thresholdAdvance to next stageRecruiter review optional or bypassed
completed_failmatch_score < role thresholdRejection status (assessment-stage)Rejection message sent via configured channel
declinedCandidate refused inviteWithdrawal or "no response" statusNo score available
expiredInvite TTL elapsedRejection or "no show" statusConfigurable; some orgs prefer manual review
errorTechnical failureManual review queueDo not auto-reject; retry or re-invite

The principle behind this matrix is normalize first, then map. Your ATS-specific picklist values should never be hardcoded directly in the integration callback logic. Maintain a mapping table in your integration configuration layer that translates Selection Lab's canonical statuses to your ATS strings. That way, if Emply renames a pipeline status, you update the mapping table once rather than changing the integration logic.

Setup checklist and troubleshooting

Pre-flight checklist

  • Correlation keys confirmed, application_id and candidate_id are present in every invite payload
  • Assessment profile selected and mapped to the correct requisition/job type
  • Webhook endpoint registered and auth credentials active (test with a ping/health check call)
  • Consent workflow confirmed, determine whether pre-collection by Emply is sufficient or whether Selection Lab's post-assessment consent gate applies
  • ATS picklist values exported and verified against Selection Lab's status mapping table
  • Rejection messaging templates reviewed and approved (channel, timing, variables)
  • Fallback channel configured for candidates without a phone number (WhatsApp flow requires E.164 phone)

Invite troubleshooting

SymptomLikely causeFix
Candidate moved to assessment stage but received no inviteWebhook not firing or auth failureCheck connector logs; verify credentials; confirm Pipeline Actions config (Jobylon) or connector mapping (Emply/Salesforce)
Invite delivered but wrong languagelocale field missing or not passedConfirm ATS passes locale; set default locale in Selection Lab assessment profile as fallback
Duplicate invites sentcandidate_id not deduplicating correctlyConfirm dedup logic in Selection Lab tenant; check whether ATS is firing the trigger multiple times on re-entry to a stage
Rate limit error on invite endpointHigh-volume hiring burstReview Selection Lab's API rate limits with your account manager; implement queue-based dispatch if needed

Completion/result troubleshooting

SymptomLikely causeFix
Results not appearing in ATSConsent gate pending or application_id mismatchCheck consent status in Selection Lab admin; verify application_id is echoed correctly in callback
report_url returns 403Insufficient permissions (common in Salesforce Experience Cloud setups)Configure external user/profile permissions for the report object
ATS status not updated after completionPicklist value mismatchExport ATS picklist; update mapping table in integration config
Score fields missing in ATSAssessment profile doesn't include all componentsReview active components in assessment profile; confirm return schema with Selection Lab integration spec

Operational monitoring

Configure logging at three points. (1) The ATS connector/webhook dispatch log to confirm invite events fired, (2) the Selection Lab admin event log to confirm invites were received and delivered, and (3) the ATS update log to confirm completion callbacks were applied. For Salesforce, Apex debug logs or Platform Event logs give the most granular visibility.

Reconciliation. Run a weekly report comparing candidates in the "Assessment Stage" status with candidates who have a completed Selection Lab result. Any gap indicates an invite delivery failure or a consent-blocked result. Most ATS platforms support this as a simple pipeline filter; Selection Lab's reporting panel provides a matching export.

For persistent delivery failures, request an audit trail export from Selection Lab that includes event timestamps, HTTP response codes, and any retry attempts. This is the fastest path to diagnosing whether a failure is on the ATS connector side or within Selection Lab's delivery pipeline. Want to see the integration with your ATS? Book a demo.

Frequently asked questions

What triggers an assessment invitation from the ATS?

A pipeline stage change. Emply, Jobylon and Salesforce each send an invite event to Selection Lab when a candidate enters the configured assessment stage. In Jobylon this is set up through Pipeline Actions, in Emply through the connector settings, in Salesforce through a Flow, an Apex trigger or the Selection Lab connector.

What does Selection Lab return to the ATS after a candidate completes an assessment?

A completion status (completed, declined, expired, partial or error), a match score from 0 to 100, per-component scores, a report URL, a report-available flag, a UTC timestamp, and the application_id and candidate_id echoed back so the ATS updates the right record.

Why are assessment results missing from the ATS after completion?

Most often because post-assessment consent is still pending, the application_id doesn't match, or the status value doesn't match an ATS picklist entry exactly. Check the consent status in the Selection Lab admin first, then the correlation key, then the picklist mapping.

How should rejections be mapped across different ATS platforms?

Normalize first, then map. Translate Selection Lab's canonical outcomes (completed_pass, completed_fail, declined, expired, error, knockout_reject) into your ATS statuses through a mapping table, never by hardcoding picklist strings in the callback logic. Send error outcomes to manual review, never to automatic rejection.

Do candidates without a phone number still receive an invite?

Only if a fallback channel is configured. WhatsApp delivery needs an E.164 phone number. Without it, the invite falls back to email where fallback is enabled and fails silently where it isn't, so check your fallback setting before going live.

FAQ

Can game-based assessments promote diversity in the hiring process?

Yes, game-based assessments can support diversity by focusing on skills and behaviors rather than traditional criteria like résumés, which may contain unconscious biases. This gives candidates from diverse backgrounds a fairer chance to demonstrate their potential.

What is a game-based assessment?

A game-based assessment is a method that uses game mechanics to evaluate a candidate’s skills, competencies, and personality traits. While playing these games, candidates are assessed on aspects like problem-solving, cognitive ability, and behavior under pressure in an interactive way.

What are the advantages of game-based assessments?

Game-based assessments offer a more engaging and interactive experience for candidates, which can lead to a more positive perception of the hiring process—especially among certain groups. For employers, they provide deeper insights into both cognitive and behavioral traits, which traditional tests may miss. They also reduce the chance of socially desirable answers, as candidates tend to respond more authentically in a game environment.

How reliable are game-based assessments compared to traditional tests?

When well-designed, game-based assessments can be just as reliable—or even more reliable—than traditional tests. They assess a wide range of behaviors and cognitive abilities in a dynamic setting. However, the quality of these assessments varies greatly, so careful evaluation is essential.

How does a game-based assessment work?

Candidates participate in interactive games designed to measure specific skills and behaviors. Evaluation goes beyond just the final score—it also considers how the candidate makes decisions, handles challenges, and responds to different scenarios. These insights reveal underlying thought processes and behavioral patterns.

Are game-based assessments scientifically validated?

The main drawback is that many game-based assessments are relatively new and have not yet been extensively researched by independent academics. Providers often cite their own research, which is rarely externally validated. Without independent studies, the reliability of these assessments remains uncertain—something to keep in mind when selecting one.

How can game based assessments contribute to a better candidate experience

This can vary significantly by audience. The playful, interactive nature of game-based assessments can lower stress levels for some candidates compared to traditional tests. However, research shows that certain groups, especially those over 35, may find them more stressful. Men also tend to rate the experience more positively than women.

Can you practice game-based assessment?

You can familiarize yourself with the style of games used, but it’s difficult to "practice" for them in a traditional sense. These assessments are designed to measure natural reactions and authentic behavior, so repeated practice typically has less effect on performance than with traditional tests.

Will game-based assessments replace traditional tests in the future?

It’s likely that game-based assessments will become more common in hiring processes, but they probably won’t fully replace traditional tests. Both approaches have value and can complement each other depending on the role and the company’s needs.

How are the results of a game-based assessment analyzed?

Results are analyzed based on predefined criteria such as problem-solving ability, reaction time, and behavior under pressure. Advanced algorithms collect and interpret this data to provide a reliable, objective evaluation of a candidate’s strengths.

What kind of skills do game-based assessments measure?

They assess a wide range of abilities, including problem-solving, adaptability, decision-making under pressure, teamwork, and emotional intelligence. Depending on the design, they may also evaluate cognitive skills like memory, attention, and pattern recognition.

How long does a game-based assessment take?

Typically, these assessments last between 15 and 60 minutes, depending on the game’s complexity and the number of skills being tested. They’re usually shorter and more engaging than traditional assessments, making for a smoother candidate experience.

Are game-based assessments suitable for all roles?

They are especially effective for roles that require flexibility, creativity, problem-solving, and strong interpersonal skills. For highly technical or specialized roles, additional assessments may be needed to measure specific knowledge.

What’s the difference between a game-based and a gamified assessment?

A gamified assessment adds game-like elements (such as points or rewards) to a traditional test to increase engagement. A game-based assessment, on the other hand, is a standalone game designed specifically to evaluate certain competencies. The game itself is the primary evaluation tool, not just an enhancement.

FAQ

How can I improve my company’s retention rate?

The retention rate can be improved by investing in employee development and satisfaction. This includes offering training, career opportunities, and recognition for their contributions. A culture of open communication and attention to work-life balance can also contribute to higher retention. Additionally, offering competitive compensation and involving employees in decision-making can strengthen loyalty.

What are the benefits of growth opportunities for employee retention?

Growth opportunities can promote employee retention by giving staff a sense of direction and motivation. When they have the chance to learn and develop professionally within the company, they feel valued, which increases their loyalty. This can prevent them from leaving to seek better opportunities elsewhere. kunnen het behoud van personeel bevorderen door medewerkers een gevoel van richting en motivatie te geven. Wanneer zij de kans krijgen om te leren en zich professioneel te ontwikkelen binnen het bedrijf, voelen zij zich gewaardeerd, wat hun loyaliteit vergroot. Dit kan voorkomen dat ze vertrekken om elders betere kansen te zoeken.

What are the key factors that influence employee retention?

Key factors that influence employee retention include salary and benefits, opportunities for professional development, work-life balance, company culture, and the relationship with supervisors. Employees tend to stay longer when they feel valued, challenged, and supported in their work environment.

Why is employee retention so important for organizations?

Employee retention is important because it helps reduce recruitment and training costs for new employees, and it contributes to retaining knowledge and experience within the organization. High retention also ensures continuity within teams, leading to a more stable company culture, higher customer satisfaction, and improved business outcomes.

Which recruitment strategies help improve retention?

Recruitment strategies that can improve retention include identifying candidates who align with the company culture, using assessments to evaluate soft skills, and providing transparency about role expectations during the hiring process. Employees who feel connected to the organization and have clarity about their role are more likely to stay longer.

How can a good onboarding process contribute to higher retention?

An effective onboarding process can contribute to higher retention by helping new employees quickly adapt to their role, the company culture, and expectations. By providing support and clear information from the start, their engagement is increased, and the likelihood of them leaving early due to feelings of being overwhelmed or lacking guidance is reduced.

What is the role of company culture in retaining employees?

Company culture plays a crucial role in employee retention. When employees feel heard, valued, and connected to the values and norms of the company, they are more likely to stay. A positive culture that fosters collaboration, respect, and personal growth can significantly enhance employee motivation and satisfaction.

How can leadership and management style influence retention?

Leadership and management style have a significant impact on retention. Leaders who inspire, support, and coach their team can increase employee engagement and satisfaction. Offering autonomy and trust can lead to higher loyalty, while inefficient or negative management styles can contribute to dissatisfaction and increased employee turnover.

What is the importance of recognition and rewards for employee retention?

Recognition and rewards play an important role in employee retention by showing staff that their work is valued. This can increase their motivation and loyalty. In addition to financial rewards, compliments, promotions, and other forms of recognition can also contribute to satisfaction and retaining employees.

What role does work-life balance play in improving retention?

A balanced work-life balance plays an important role in increasing retention. By reducing stress and improving job satisfaction, employees are more likely to stay with the company. Initiatives such as flexible working hours, remote work options, and respect for personal time can contribute to this balance.

What does increasing retention mean within a company?

Increasing retention within a company means implementing strategies to keep employees with the organization for longer. This can be achieved by improving job satisfaction, offering growth opportunities, and fostering a positive and supportive company culture.

How do I measure the success of my retention strategy?

The success of a retention strategy can be measured by tracking retention rates and turnover rates, and by gaining insights from exit interviews. Additionally, employee satisfaction surveys and feedback from performance evaluations can provide valuable information about the effectiveness of the strategies applied.

What are the costs of a low retention rate?

A low retention rate can bring significant costs, such as increased expenses for recruiting and training new employees. Furthermore, the loss of experienced staff can lead to lower productivity, reduced knowledge transfer, and a negative impact on company culture.

How can I increase employee engagement?

To increase employee engagement, involve them in decision-making processes, regularly ask for their feedback, and recognize their contributions. Offering development opportunities and maintaining transparent communication can also contribute to greater engagement.

How can technology help improve employee retention?

Technology can be a tool for improving employee retention by facilitating communication, feedback, and development. By using online platforms for training, recognition, and evaluation, companies can create a more engaged and satisfied workforce.

FAQ

How long does it take to complete the tool?

Less than 10 minutes. You’ll answer 30 guided questions and get a summary of what to look for in your next assessment platform.

Can this checklist help me compare assessment providers?

Yes. By clarifying what matters most to your team, it makes comparing providers' features, pricing, and strengths much easier and more strategic.

How can I use this checklist if I’m not doing a formal RFI?

It’s equally valuable for internal evaluations, exploring new tools, or improving your current hiring process even if you’re not issuing an RFI or RFQ.

What should I look for in a modern assessment tool?

Prioritize platforms with user-friendly design, mobile compatibility, strong analytics, ATS integrations, and inclusive features like neurodiversity support.

What types of assessments should I consider in 2025?

Leading tools combine cognitive testing, situational judgment tests (SJTs), behavior assessments, and predictive AI to evaluate candidates more holistically.

Who should use an assessment checklist?

HR professionals, hiring managers, and procurement teams evaluating pre-selection solutions, especially those comparing AI-powered or compliance-driven assessment platforms.

How does this checklist help with RFIs and RFQs for assessments?

The checklist helps you define your exact requirements so you can confidently draft or respond to Requests for Information (RFI) or Requests for Quotation (RFQ) for assessment tools.

What is an assessment tool in hiring?

An assessment tool evaluates candidates’ skills, behaviors, and fit during the recruitment process. It helps improve hiring decisions and streamline pre-selection.

Game-based assessment packs

← Our Blog

ATS integration guide: Emply, Jobylon, and Salesforce assessment mapping

A technical guide to Emply, Jobylon, and Salesforce integrations: invitation triggers, completion callbacks, and rejection status mapping for automated hiring workflows.
Joeri Everaers
COO
Read time: Approx

Assessment platforms that don't integrate tightly with your ATS create manual overhead at exactly the wrong moment, when a recruiter is managing 50+ active applications and needs status updates, scores, and rejection decisions to flow automatically. This reference document covers how Selection Lab integrations with Emply, Jobylon, and Salesforce work at a systems level. What triggers an invitation, what gets returned after a candidate completes an assessment, and how rejection outcomes map back to ATS statuses.

Three distinct events drive every integration.

  1. Invitation trigger (incoming to Selection Lab). The ATS detects a pipeline stage change or webhook event and instructs Selection Lab to send an assessment invite to the candidate.
  2. Completion callback (outgoing from Selection Lab). When a candidate finishes (or declines/expires), Selection Lab pushes result artifacts back to the ATS record.
  3. Outcome/rejection mapping (decisioning layer). The ATS applies a configured rule to translate a Selection Lab result status into the correct ATS candidate status, including rejection messaging.

Understanding which layer a problem belongs to is the fastest way to isolate configuration errors. For the same pattern in Recruitee and SmartRecruiters, see ATS status mapping for assessment results.

Terminology used throughout this document

TermDefinition
Invitation statusWhether the assessment invite was successfully delivered and opened. Possible values pending, sent, opened, failed.
Completion statusThe terminal state of the candidate's assessment attempt. completed, declined, expired, error.
Report availabilityWhether a full result report (URL or embedded view) is ready to render in the ATS.
Candidate outcomeThe downstream ATS action triggered by the completion status plus score thresholds. advance, reject, withdraw, or manual review.

Emply assessment integration: invitation fields and trigger mechanism

Fields sent to Selection Lab on invite

When an Emply candidate moves to a pipeline stage configured to trigger a Selection Lab assessment, Emply sends a structured payload to the Selection Lab webhook endpoint. The fields that should be present in a correctly configured Emply integration are listed below. Fields marked [TBD] require verification against your specific Emply setup, since Emply's public help documentation does not publish the full payload schema.

FieldTypeRequiredPurpose in Selection Lab
first_namestringYesPersonalizes invite messaging and report header
last_namestringYesReport identity, duplicate detection
emailstring (RFC 5322)YesPrimary invite delivery channel
application_idstringYesCorrelation key, echoed back on completion callback so Emply updates the correct record
candidate_idstringYesExternal candidate identity, used for deduplication across applications
requisition_idstringRecommendedLinks assessment to the correct job, drives assessment profile selection if profiles are mapped per vacancy
locale / languageISO 639-1 (e.g., nl, en)RecommendedSets the UI language of the assessment and invite copy
phonestring (E.164)OptionalRequired only if WhatsApp delivery is configured; without it, email delivery is used
consent_flagbooleanOptional [TBD]If Emply passes a pre-collected consent flag, Selection Lab can record it; otherwise, Selection Lab's own consent flow fires before results are shared

What happens when optional fields are missing. If locale is absent, Selection Lab defaults to the language configured in the assessment profile. If phone is absent and the invite channel is set to WhatsApp, the invite fails silently unless a fallback channel (email) is configured. Verify fallback behavior with your Selection Lab account configuration.

Configuration steps for Emply invite triggers

The trigger mechanism for Emply integrations operates via a webhook or connector sync (exact mechanism [TBD], confirm whether your Emply instance uses webhook push or a polling-based connector). The configuration path is as follows.

  1. In your Emply admin, navigate to the integration/connector settings for your assessment vendor.
  2. Select the pipeline stage that should trigger an invite (e.g., "Assessment Stage").
  3. Map that stage to the Selection Lab webhook endpoint and provide the API credentials (Bearer token or OAuth client credentials, depending on your Selection Lab tenant configuration).
  4. Select the assessment profile to assign to candidates entering that stage. If your vacancy-to-profile mapping is dynamic, confirm whether Emply passes the requisition_id so Selection Lab can resolve the correct profile automatically.
  5. Confirm consent workflow settings. If Emply collects candidate consent to share data with third-party processors before the application reaches the assessment stage, pass the consent flag in the payload. If not, Selection Lab initiates its own consent request before sharing results back.

Auth failure mode. If the API credential is expired or misconfigured, Emply will receive an HTTP 4xx response. Depending on your connector configuration, this may silently drop the invite or queue it for retry. Check your integration logs in both Emply and the Selection Lab admin panel to confirm delivery.

Retry behavior for failed deliveries is [TBD], confirm retry count, backoff interval, and dead-letter behavior with your Selection Lab integration engineer.

Emply integration: what gets returned after assessment completion

Once a candidate completes (or exits) the Selection Lab assessment, Selection Lab sends a completion callback to Emply. The callback payload contains the following artifact types.

Completion status values

StatusMeaning
completedCandidate finished all assessment components
declinedCandidate actively rejected the invite
expiredInvite window elapsed without candidate action
partialCandidate started but did not finish (if partial submissions are enabled)
errorTechnical failure during assessment session

Score and report fields

FieldTypeNotes
match_scoreinteger (0-100)Composite match score against the role profile
component_scoresobjectPer-component breakdown (e.g., cognitive, personality, hard skills). [TBD] exact component key names depend on your assessment profile configuration
report_urlstring (URL)Deep link to the candidate's full report in the Selection Lab portal, renderable in Emply if iframe embedding is configured
report_availablebooleanSet to true once the report PDF is generated and accessible
completed_atISO 8601 timestampCompletion time in UTC
application_idstringEchoed from the invite payload for ATS record correlation
candidate_idstringEchoed for deduplication

Consent and privacy logic

Selection Lab's privacy model requires that results are shown to the candidate first. Consent is then requested a second time before results are shared back to the ATS. This means that if a candidate completes the assessment but has not yet given post-assessment consent to share results, the report_url and component_scores fields in the callback payload may be withheld or returned as null until consent is recorded. Personal data is stored in Frankfurt in compliance with EU data residency requirements.

The exact Emply implementation of this consent gate (whether it blocks the callback entirely or sends a partial payload with a consent_pending flag) is [TBD], confirm with your Selection Lab account manager.

Emply status mapping and rejection handling

Decision outcome mapping table

Selection Lab completion statusScore conditionRecommended Emply target status
completedScore >= configured thresholdMove to next stage (e.g., "Interview")
completedScore < configured threshold"Rejected - Assessment" or equivalent
declinedn/a"Withdrawn" or "No Response"
expiredn/a"Rejected - No Show" or configured stage
errorn/a"Manual Review"

The exact Emply stage/status string values are picklist-defined in your Emply configuration. The mapping must be set up in the Selection Lab integration settings to match those exact string values. A mismatch (e.g., "Rejected" vs. "rejected" vs. "REJECTED") will cause the callback to fail silently or return a 422 error.

Rejection messaging channels

On a rejection outcome, Selection Lab can trigger a rejection message to the candidate via two channels.

  • Email, an automated email using the configured rejection template
  • WhatsApp, a rejection message through Selection Lab's SmartChat flow, if the candidate was onboarded via WhatsApp intake and a phone number is present

The timing (immediate vs. delayed) and exact template variables are [TBD], confirm rejection message templates and channel priority logic with your Selection Lab account configuration.

Sample webhook payloads

Invite trigger payload (Emply to Selection Lab)

{
  "event": "assessment.invite",
  "application_id": "APP-00123",
  "candidate_id": "CAND-78901",
  "requisition_id": "REQ-456",
  "first_name": "Jane",
  "last_name": "Smith",
  "email": "[email protected]",
  "phone": "+31612345678",
  "locale": "nl",
  "consent_flag": true
}

Completion callback payload (Selection Lab to Emply)

{
  "event": "assessment.completed",
  "application_id": "APP-00123",
  "candidate_id": "CAND-78901",
  "completion_status": "completed",
  "match_score": 74,
  "component_scores": {
    "cognitive": 68,
    "personality": 81,
    "hard_skills": 72
  },
  "report_url": "https://app.selectionlab.com/reports/APP-00123",
  "report_available": true,
  "completed_at": "2026-08-30T09:14:22Z"
}

Note that field names and the presence of component_scores keys depend on your active assessment profile. The above is illustrative; confirm the exact schema with your Selection Lab integration spec sheet.

Troubleshooting Emply-specific issues

  • Status enum mismatch. If Selection Lab returns a status value that doesn't match an Emply picklist option exactly, the update will fail. Export your Emply pipeline status list and verify each string against the mapping table in your Selection Lab admin.
  • Missing application_id. Without the correlation key, Selection Lab cannot identify which Emply record to update. Check the connector config to confirm Emply is passing this field on every invite event.
  • Consent-blocked result delivery. If a candidate completed the assessment but results aren't appearing in Emply, check whether post-assessment consent is pending. The Selection Lab admin panel shows consent status per candidate.
  • Auth expiry. Rotate API credentials and update them in both the Emply connector and the Selection Lab integration settings simultaneously.

Jobylon assessment integration: pipeline actions and invite triggers

Jobylon's integration model for assessment partners is documented via its Pipeline Actions framework. According to Jobylon's support documentation (January 27, 2026), partner integrations are configured at the pipeline status level. Navigate to Pipeline Actions, create an action next to the status you want to automate, choose "Partner Integrations" as the action type, select your assessment vendor, and save. With that setup, an assessment test is automatically sent when a candidate moves to the selected status.

This means the Jobylon assessment integration is event-driven by status change, not by manual recruiter action. No separate webhook configuration is required on the recruiter side beyond the Pipeline Actions setup. The invite is dispatched as soon as the ATS records the status transition.

Selection Lab fits directly into this model. When a candidate enters the configured pipeline status, Selection Lab receives the invite event and delivers the assessment invitation. Recruiters can view the complete report and individual scores within the Jobylon candidate record once results are returned.

What Jobylon's public docs don't cover

The Jobylon support article on partner integrations does not publish the following.

  • Granular invite payload schemas (which candidate fields are transmitted to the partner)
  • Exact result/status field names returned from the partner
  • Rejection messaging channel logic (email vs. WhatsApp vs. ATS-only)
  • Score-threshold-based status movement configuration for the return path

These details are [TBD], request the Selection Lab + Jobylon integration spec from your Selection Lab account manager, or review the Jobylon admin under Settings > Integrations for field-level detail.

For the return path (results back into Jobylon), the same general completion callback pattern applies as described in the Emply section. Completion status, match score, component scores, and report URL are pushed back to the candidate record. Jobylon's pipeline can then be configured to move candidates automatically based on score thresholds using its native score-based automation feature.

Salesforce assessment integration: object mapping and status constraints

Salesforce's data model for recruiting (whether native Salesforce Recruiting or a managed package like Salesforce for Recruiting) uses strongly typed picklist fields on objects such as Application, Assessment, or custom staging objects. This imposes stricter constraints on result mapping than Emply or Jobylon.

How completion artifacts map to Salesforce objects

Selection Lab's Salesforce integration pushes completion artifacts to a designated object (typically a custom Assessment__c or equivalent object, or an existing Application/Candidate Stage object, depending on your Salesforce org configuration). The fields populated are conceptually the same as in the Emply return payload. Completion status, scores, report URL, and timestamp. However, the exact API field names and object targets depend on your Salesforce org schema.

Key constraint. Any status field mapped from a Selection Lab completion status must correspond to an active picklist value in your Salesforce org. If completed_with_low_score is not a valid picklist entry in your Application_Status__c field, the update will fail with a Salesforce validation error.

Rejection mapping as a translation layer

For Salesforce, rejection mapping is a two-step translation.

  1. Selection Lab outputs a canonical completion status (e.g., completed, declined, expired) plus a pass/fail determination based on score thresholds.
  2. The integration layer (either a Salesforce Flow, Apex trigger, or the Selection Lab connector) translates that canonical status into the Salesforce picklist value configured for rejection (e.g., "Rejected - Assessment", "No Longer in Consideration").

If your org uses Salesforce Experience Cloud and candidates access assessments through a portal, external user permissions for the relevant objects must be configured to allow status reads and report URL access. This is a common source of "results not visible" tickets in Salesforce-integrated deployments.

For candidate rejection status mapping with automatically triggered invitations in Salesforce, the pattern mirrors the Emply approach. A configured threshold fires the rejection status update, and the messaging channel (email, WhatsApp) is driven by candidate contact data and Selection Lab template configuration.

Cross-ATS decision matrix: mapping outcomes consistently

Regardless of which ATS you're using, the mapping logic should normalize Selection Lab's canonical statuses before writing to ATS-specific enums. The following matrix applies across Emply, Jobylon, and Salesforce.

Selection Lab canonical outcomeScore conditionRecommended ATS actionNotes
knockout_rejectKnockout criteria met during SmartChat intakeImmediate rejection status plus reject messageNo assessment sent; candidate rejected at screening layer
completed_passmatch_score >= role thresholdAdvance to next stageRecruiter review optional or bypassed
completed_failmatch_score < role thresholdRejection status (assessment-stage)Rejection message sent via configured channel
declinedCandidate refused inviteWithdrawal or "no response" statusNo score available
expiredInvite TTL elapsedRejection or "no show" statusConfigurable; some orgs prefer manual review
errorTechnical failureManual review queueDo not auto-reject; retry or re-invite

The principle behind this matrix is normalize first, then map. Your ATS-specific picklist values should never be hardcoded directly in the integration callback logic. Maintain a mapping table in your integration configuration layer that translates Selection Lab's canonical statuses to your ATS strings. That way, if Emply renames a pipeline status, you update the mapping table once rather than changing the integration logic.

Setup checklist and troubleshooting

Pre-flight checklist

  • Correlation keys confirmed, application_id and candidate_id are present in every invite payload
  • Assessment profile selected and mapped to the correct requisition/job type
  • Webhook endpoint registered and auth credentials active (test with a ping/health check call)
  • Consent workflow confirmed, determine whether pre-collection by Emply is sufficient or whether Selection Lab's post-assessment consent gate applies
  • ATS picklist values exported and verified against Selection Lab's status mapping table
  • Rejection messaging templates reviewed and approved (channel, timing, variables)
  • Fallback channel configured for candidates without a phone number (WhatsApp flow requires E.164 phone)

Invite troubleshooting

SymptomLikely causeFix
Candidate moved to assessment stage but received no inviteWebhook not firing or auth failureCheck connector logs; verify credentials; confirm Pipeline Actions config (Jobylon) or connector mapping (Emply/Salesforce)
Invite delivered but wrong languagelocale field missing or not passedConfirm ATS passes locale; set default locale in Selection Lab assessment profile as fallback
Duplicate invites sentcandidate_id not deduplicating correctlyConfirm dedup logic in Selection Lab tenant; check whether ATS is firing the trigger multiple times on re-entry to a stage
Rate limit error on invite endpointHigh-volume hiring burstReview Selection Lab's API rate limits with your account manager; implement queue-based dispatch if needed

Completion/result troubleshooting

SymptomLikely causeFix
Results not appearing in ATSConsent gate pending or application_id mismatchCheck consent status in Selection Lab admin; verify application_id is echoed correctly in callback
report_url returns 403Insufficient permissions (common in Salesforce Experience Cloud setups)Configure external user/profile permissions for the report object
ATS status not updated after completionPicklist value mismatchExport ATS picklist; update mapping table in integration config
Score fields missing in ATSAssessment profile doesn't include all componentsReview active components in assessment profile; confirm return schema with Selection Lab integration spec

Operational monitoring

Configure logging at three points. (1) The ATS connector/webhook dispatch log to confirm invite events fired, (2) the Selection Lab admin event log to confirm invites were received and delivered, and (3) the ATS update log to confirm completion callbacks were applied. For Salesforce, Apex debug logs or Platform Event logs give the most granular visibility.

Reconciliation. Run a weekly report comparing candidates in the "Assessment Stage" status with candidates who have a completed Selection Lab result. Any gap indicates an invite delivery failure or a consent-blocked result. Most ATS platforms support this as a simple pipeline filter; Selection Lab's reporting panel provides a matching export.

For persistent delivery failures, request an audit trail export from Selection Lab that includes event timestamps, HTTP response codes, and any retry attempts. This is the fastest path to diagnosing whether a failure is on the ATS connector side or within Selection Lab's delivery pipeline. Want to see the integration with your ATS? Book a demo.

Frequently asked questions

What triggers an assessment invitation from the ATS?

A pipeline stage change. Emply, Jobylon and Salesforce each send an invite event to Selection Lab when a candidate enters the configured assessment stage. In Jobylon this is set up through Pipeline Actions, in Emply through the connector settings, in Salesforce through a Flow, an Apex trigger or the Selection Lab connector.

What does Selection Lab return to the ATS after a candidate completes an assessment?

A completion status (completed, declined, expired, partial or error), a match score from 0 to 100, per-component scores, a report URL, a report-available flag, a UTC timestamp, and the application_id and candidate_id echoed back so the ATS updates the right record.

Why are assessment results missing from the ATS after completion?

Most often because post-assessment consent is still pending, the application_id doesn't match, or the status value doesn't match an ATS picklist entry exactly. Check the consent status in the Selection Lab admin first, then the correlation key, then the picklist mapping.

How should rejections be mapped across different ATS platforms?

Normalize first, then map. Translate Selection Lab's canonical outcomes (completed_pass, completed_fail, declined, expired, error, knockout_reject) into your ATS statuses through a mapping table, never by hardcoding picklist strings in the callback logic. Send error outcomes to manual review, never to automatic rejection.

Do candidates without a phone number still receive an invite?

Only if a fallback channel is configured. WhatsApp delivery needs an E.164 phone number. Without it, the invite falls back to email where fallback is enabled and fails silently where it isn't, so check your fallback setting before going live.