Background Checks App Overview
Order background checks from leading providers, track results in real time, adjudicate findings with a structured workflow, and stay FCRA-compliant β all without leaving MangoApps Workforce.
What is Background Checks?
Background Checks is the integrated pre-employment screening module inside MangoApps Workforce. It connects your recruiting pipeline to external background check providers β Checkr, Sterling, and HireRight β so HR teams can request checks, receive results via webhook, and make adjudication decisions from a single dashboard. The module is built into the Job Board app and operates as a sub-feature of the recruiting suite.
Every check flows through a structured lifecycle: request, candidate authorization, provider processing, result delivery, and adjudication. FCRA compliance is baked in β disclosure notices, authorization tracking, adverse-action waiting periods, and audit logging happen automatically based on your configuration.
Core Value Proposition:
- π Multi-Provider Integration β Connect to Checkr, Sterling, or HireRight with API-key configuration and sandbox/production modes
- π FCRA Compliance Built-In β Automatic disclosure delivery, authorization tracking, configurable waiting periods, and adverse action workflows
- βοΈ Structured Adjudication β Review adverse items, make approve/reject/conditional decisions, and record audit-logged notes
- π‘ Real-Time Webhook Updates β Provider status changes flow into the platform instantly via secure, signature-verified webhooks
At a Glance
| π Provider Integrations | π FCRA Compliance | βοΈ Adjudication Workflow | π‘ Webhook Updates |
|---|---|---|---|
| Checkr, Sterling, HireRight | Disclosure, authorization, waiting periods | Approve, reject, conditional, needs review | Signature-verified, real-time status sync |
| π¦ Screening Packages | π Dashboard & Stats | π§ Email Notifications | π± Mobile Access |
|---|---|---|---|
| Basic, Pro, Comprehensive, Executive | Total, pending, clear, needs-review counts | Candidate and recruiter alerts at every stage | Manager view of checks and pending items |
Perfect For:
- π’ HR / Admins β Configure providers, choose default packages, set FCRA waiting periods, enable auto-adjudication
- π₯ Recruiters β Request checks for candidates, monitor progress, adjudicate results
- π€ Hiring Managers β Review adjudication decisions, view candidate background status
How It Works
Background Check Lifecycle
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BACKGROUND CHECK LIFECYCLE β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββ βββββββββββββ βββββββββββββ ββββββββββββββββ β
β β REQUEST βββββΆβ INVITE βββββΆβ PROCESSINGβββββΆβ RESULTS β β
β β Check β β Candidate β β by Providerβ β Received β β
β ββββββββββββ βββββββββββββ βββββββββββββ ββββββββββββββββ β
β β β β β β
β Recruiter picks FCRA disclosure Provider runs Webhook β
β candidate and and authorization criminal, employ- delivers β
β selects package sent via email ment, education clear/consider β
β checks /suspended β
β β
β ββββββββββββ βββββββββββββ βββββββββββββ ββββββββββββββββ β
β βADJUDICATEβββββΆβ DECIDE βββββΆβ NOTIFY βββββΆβ COMPLETE β β
β β Review β β Outcome β β Parties β β & Audit β β
β ββββββββββββ βββββββββββββ βββββββββββββ ββββββββββββββββ β
β β β β β β
β Manager reviews Approve, reject, Email recruiter, Decision and β
β adverse items conditional, or hiring manager, all status β
β and notes needs-review and candidate changes logged β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Status Flow
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STATUS TRANSITIONS β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β pending ββββΆ invited ββββΆ pending_completion ββββ¬βββΆ clear β
β β β
β ββββΆ consider βββ β
β β β β
β ββββΆ suspended ββ€ β
β β β
β ββββββββββββββββββββββββββββββββββββββββββ β
β βΌ β
β ADJUDICATION β
β βββββββββββββββββββββββ β
β β pending β β
β β βββ approved β (auto or manual) β
β β βββ needs_review β β
β β βββ conditional β β
β β βββ rejected β (triggers adverse action) β
β βββββββββββββββββββββββ β
β β
β Any status ββββΆ canceled (manual cancellation by manager) β
β Any status ββββΆ error (provider or system failure) β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Features
π Multi-Provider Integration
Connect to one or more background check providers through the SystemIntegration framework. Each provider connector supports sandbox and production environments, connection testing, and custom package mappings.
| Provider | Status | Capabilities |
|---|---|---|
| Checkr | Fully implemented | Create candidates, send invitations, create reports, get status, cancel reports, list packages, webhook processing |
| Sterling | Implemented | Initiate checks, get report status, cancel reports, get candidate reports |
| HireRight | Implemented | Initiate screenings, get screening status, cancel screenings, get applicant history |
Each connector handles:
- API Authentication β Base64-encoded API key (Checkr, Sterling) or Bearer token (HireRight)
- Environment Switching β Toggle between sandbox (testing) and production with a single setting
- Connection Testing β Verify credentials and connectivity before going live
- Error Handling β Timeouts, JSON parse errors, and HTTP failures are caught and returned as structured results
Use Case β Setting Up Checkr:
An admin navigates to the system integrations page, creates a new Background Check integration for Checkr, enters the API key from their Checkr dashboard, selects the sandbox environment for initial testing, and runs a connection test. Once verified, they switch to production and set this integration as the preferred provider in Job Board configuration.
π¦ Screening Packages
Choose from four standard screening packages or configure custom packages through the provider integration settings.
| Package | Slug | Whatβs Included |
|---|---|---|
| Basic Criminal Check | basic_criminal |
SSN verification, National Criminal Database search, Sex Offender Registry check |
| Pro Criminal Check | pro_criminal |
Everything in Basic plus County Criminal searches, Federal Criminal search |
| Comprehensive | comprehensive |
Everything in Pro plus Employment Verification, Education Verification, Professional Reference checks |
| Executive | executive |
Full comprehensive check plus Credit Report, Civil Court searches, Media searches, Extended employment history |
The configuration service supports custom package definitions stored in the provider integrationβs JSON configuration. When custom packages are defined, they override the defaults β allowing organizations to match their providerβs specific package catalog.
Pro Tip: Set a default package in the app configuration so recruiters donβt have to pick one every time. The default is applied automatically when requesting checks through the API or auto-request workflows.
π FCRA Compliance
The Fair Credit Reporting Act (FCRA) governs how employers use consumer reports in hiring decisions. Background Checks automates the key compliance steps.
| Compliance Step | How It Works |
|---|---|
| Pre-Adverse Action Disclosure | Tracked via fcra_disclosure_sent_at β the system records when the disclosure was sent to the candidate |
| Candidate Authorization | Tracked via fcra_authorization_received_at β checks are not processed until authorization is confirmed |
| Waiting Period | Configurable 5β10 day waiting period (minimum 5 per FCRA) before adverse action can be taken |
| Adverse Action Process | Triggered automatically when a check is rejected β pre-adverse notice, waiting period, then final notice |
| Compliance Verification | The fcra_compliant? method validates both disclosure sent and authorization received before proceeding |
Configuration options:
auto_send_fcra_disclosureβ Automatically send the pre-adverse action notice when required (default: on)fcra_waiting_period_daysβ Number of days to wait before adverse action (default: 5, range: 5β10)
βοΈ Adjudication Workflow
When a background check returns βconsiderβ or βsuspendedβ results, managers must review and make an adjudication decision.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ADJUDICATION WORKFLOW β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Results arrive with consider/suspended status β
β β β
β βΌ β
β ββββββββββββββββ β
β β ADVERSE ITEMS β List of flagged records with type, β
β β REVIEW β description, disposition, date β
β ββββββββ¬ββββββββ β
β β β
β βΌ β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β APPROVED β β CONDITIONAL β β REJECTED β β
β β Clear for β β Hire with β β Do not β β
β β hire β β conditions β β hire β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β Candidate status Candidate status FCRA adverse β
β set to "clear" set to action process β
β "conditional" triggered β
β β
β βββ All decisions recorded with notes, user, and timestamp βββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Decision | Candidate Status | Next Steps |
|---|---|---|
| Approved | clear |
Candidate proceeds in hiring pipeline |
| Needs Review | Unchanged | Escalated for additional investigation |
| Conditional | conditional |
Hire with documented conditions or restrictions |
| Rejected | rejected |
FCRA adverse action process is triggered |
Auto-Adjudication: When auto_adjudicate_clear is enabled, checks that return with a βclearβ status are automatically adjudicated as βapprovedβ without manual intervention. This is configurable per integration.
Authorization: Only managers and above (manager_or_above?) can adjudicate or cancel background checks. Recruiters can view checks for their own candidates but cannot make adjudication decisions.
π Dashboard & Statistics
The background checks dashboard provides a centralized view of all screening activity with real-time statistics, filtering, and pagination.
Statistics Cards:
| Metric | Description |
|---|---|
| Total Checks | All background checks across all statuses |
| Pending | Checks in pending, invited, or pending_completion status |
| Needs Review | Completed checks awaiting adjudication (consider/suspended with pending adjudication) |
| Clear | Checks that returned with a clear result |
Filtering & Search:
- Filter by status: Pending, Invited, In Progress, Clear, Consider, Suspended, Canceled
- Filter by adjudication: Pending, Approved, Needs Review, Rejected, Conditional
- Search by candidate name or email (via the shared queries concern)
- Pagination at 25 results per page on desktop, 20 on mobile
Table Columns: Candidate (name, email, job), Package, Status (badge), Adjudication (badge), Requested date, Actions (view, adjudicate)
π‘ Webhook Processing
Provider status updates arrive via secure webhook endpoints. Each provider has a dedicated endpoint with signature verification.
| Webhook Event | Status Update | Auto-Action |
|---|---|---|
report.created |
pending_completion |
Log event |
report.completed |
Mapped from provider result | Notify recruiter, trigger auto-adjudication if clear |
report.clear |
clear |
Auto-adjudicate if enabled, notify recruiter |
report.consider |
consider |
Notify adjudication required |
report.suspended |
suspended |
Notify adjudication required |
Security measures:
- HMAC Signature Verification β Checkr webhooks are verified using SHA-256 HMAC with the integrationβs webhook secret
- Business-Scoped URLs β Optional
/background_check_webhooks/:business_id/checkrendpoint for multi-tenant isolation - Active Integration Check β Webhooks are rejected if the associated integration is inactive
- Idempotency β Duplicate webhooks for already-completed checks are detected and skipped
Adverse Item Extraction: When a report contains records with a βconsiderβ result, the webhook handler automatically extracts adverse items (type, description, disposition, date) and stores them on the background check record.
π§ Email Notifications
The BackgroundCheckMailer sends targeted notifications at each stage of the background check process.
Candidate Notifications:
| When Itβs Sent | Key Content | |
|---|---|---|
| Authorization Requested | Check is initiated | FCRA disclosure, authorization link to candidate portal, package details |
| Check In Progress | Provider begins processing | Status update with estimated completion date |
| Check Completed (Clear) | Clear result received | Confirmation that the check is complete |
Recruiter / Hiring Manager Notifications:
| When Itβs Sent | Key Content | |
|---|---|---|
| Request Submitted | Check is created | Candidate name, package, provider, link to candidate profile |
| Request Failed | Provider error | Error message, link to retry |
| Report Completed | Check finishes | Result status (clear/consider/suspended), link to view results |
| Adjudication Required | Adverse items found | Adverse item count, status, link to adjudicate |
| Adjudication Completed | Decision is made | Decision (approved/rejected/conditional), adjudicator name, notes |
Recipients are resolved intelligently: the person who requested the check, the jobβs recruiter, the hiring manager, and the job creator all receive relevant notifications (deduplicated).
π± Mobile Access
Managers and admins can view background check status and details from the mobile web interface.
| Mobile View | Features |
|---|---|
| Check List | Status filter pills, stats summary, paginated card list with infinite scroll |
| Check Detail | Status overview, candidate info, check details, timeline |
| Pending Review | Filtered view of checks awaiting adjudication |
Mobile access requires manager_or_above? permissions. The mobile controller shares query logic with the desktop controller through the BackgroundCheckQueries concern, ensuring consistent filtering, statistics, and pagination.
π Audit Trail
Every significant action is recorded in the recruiting audit log via RecruitingAuditLog.log.
| Event | Logged Data |
|---|---|
| Check Created | Candidate name, package, provider |
| Status Changed | Old and new status, candidate name, provider |
| Adjudicated | Candidate name, decision, notes |
| Canceled | Candidate name, cancellation reason |
| Webhook Events | Event type, status, provider, candidate name |
Configuration Reference
App Configuration Schema
The marketplace app configuration is organized into five categories:
General Settings:
| Setting | Type | Default | Description |
|---|---|---|---|
enabled |
Boolean | false |
Master switch β allow recruiting apps to request background checks |
auto_request_on_offer |
Boolean | false |
Automatically initiate a background check when a candidate accepts an offer |
default_package |
Select | pro_criminal |
Default screening package for new requests |
Provider Settings:
| Setting | Type | Description |
|---|---|---|
checkr_enabled |
Boolean | Enable the Checkr provider |
checkr_api_key |
String | Your Checkr API key |
checkr_environment |
Select | Sandbox (testing) or Production (live checks) |
FCRA Compliance:
| Setting | Type | Default | Description |
|---|---|---|---|
auto_send_fcra_disclosure |
Boolean | true |
Auto-send pre-adverse action notice when required |
fcra_waiting_period_days |
Slider (5β10) | 5 |
Days to wait before adverse action (minimum 5 per FCRA) |
Adjudication:
| Setting | Type | Default | Description |
|---|---|---|---|
auto_adjudicate_clear |
Boolean | true |
Automatically approve candidates with clear results |
require_manual_review_consider |
Boolean | true |
Require manual adjudication for consider results |
Notifications:
| Setting | Type | Default | Description |
|---|---|---|---|
notify_recruiter_on_complete |
Boolean | true |
Email recruiter when a background check completes |
notify_on_adverse_items |
Boolean | true |
Immediate notification when adverse items are found |
Permissions & Access Control
| Role | Capabilities |
|---|---|
| Admin / Super Admin | Full access β configure providers, request checks, adjudicate, cancel, view all checks |
| Manager | Request checks, adjudicate results, cancel checks, view all checks |
| Recruiter | Request checks for their candidates, view checks for their candidates/jobs |
| Employee | No access to background checks dashboard |
Background check access is additionally gated by the check_background_checks_enabled filter β if no active background check integration exists for the business, all routes redirect to the dashboard with an explanatory message.
Integration Architecture
Background Checks uses the SystemIntegration framework rather than standalone configuration. This means:
- Provider integrations are created as
SystemIntegrationrecords withcategory: 'background_check' - Configuration (API keys, environment, packages, webhook secrets) is stored as JSON in the integrationβs
configurationfield - Job Board preference β the preferred integration ID is stored in the Job Board appβs configuration, allowing administrators to switch providers without reconfiguration
- Multiple providers β organizations can configure multiple providers simultaneously and select which one the Job Board uses
The BackgroundCheckConfigurationService acts as the central configuration resolver, reading settings from both the SystemIntegration and the Job Board app configuration.
Getting Started
Step 1: Configure a Provider Integration
Navigate to system integrations and create a new Background Check integration. Enter your providerβs API key and select the environment (start with sandbox for testing).
Step 2: Test the Connection
Use the built-in connection test to verify your API credentials are valid and the provider is reachable.
Step 3: Set Job Board Preferences
In the Job Board app configuration, select your preferred background check integration. Set the default screening package and enable auto-request on offer acceptance if desired.
Step 4: Configure Compliance Settings
Set FCRA waiting period days, enable auto-send disclosures, and configure adjudication rules (auto-adjudicate clear results or require manual review for all).
Step 5: Configure Webhook Endpoint
Register your webhook URL with your provider. The endpoint follows the pattern:
- Checkr:
POST /background_check_webhooks/checkr(or/background_check_webhooks/:business_id/checkrfor multi-tenant isolation) - Sterling:
POST /background_check_webhooks/sterling - HireRight:
POST /background_check_webhooks/hireright
Step 6: Request Your First Check
Navigate to a candidateβs profile in the Job Board, click βRequest Background Check,β select a screening package, and submit. The candidate will receive an authorization email, and youβll be notified when results are available.
Tips & Best Practices
Use auto-adjudication for clear results. Most background checks come back clear. Enabling
auto_adjudicate_cleareliminates manual work for straightforward cases while still requiring human review for anything flagged.
Start with sandbox mode. Configure your provider in sandbox/testing mode first. Run test checks to verify webhook delivery, email notifications, and the adjudication workflow before switching to production.
Set up business-scoped webhook URLs. For organizations with multiple tenants, use the
/background_check_webhooks/:business_id/checkrendpoint format for proper tenant isolation rather than the generic endpoint.
Review pending adjudications regularly. Use the βNeeds Reviewβ count on the dashboard and the pending adjudication view to ensure flagged checks donβt sit unreviewed. Enable
notify_on_adverse_itemsso reviewers are alerted immediately.
Document adjudication decisions thoroughly. Notes are required when adjudicating β use them to record the reasoning behind approve, reject, or conditional decisions. These notes are preserved in the audit trail for compliance purposes.
Frequently Asked Questions
Q: Which background check providers are supported?
A: Checkr (fully implemented with webhook processing), Sterling, and HireRight. All three support initiating checks, getting status, and canceling reports through their respective APIs.
Q: Can I use multiple providers at the same time?
A: Yes. You can configure integrations for multiple providers. The Job Board app configuration lets you select which provider to use as the preferred/default, but all active integrations remain available.
Q: How does FCRA compliance work?
A: The system tracks FCRA disclosure sent and authorization received timestamps. Checks cannot proceed without authorization. When adverse results require rejection, a configurable waiting period (minimum 5 days) is enforced before adverse action can be taken.
Q: What happens when a check returns βconsiderβ?
A: The check enters the adjudication queue. Recruiters and hiring managers are notified. A manager must review the adverse items and make a decision: approve, reject, conditional approval, or escalate for further review.
Q: Can background checks be auto-requested?
A: Yes. Enable auto_request_on_offer in the app configuration to automatically initiate a background check when a candidate accepts an offer.
Q: Is there mobile access?
A: Yes. Managers and admins can view background check status, details, and pending adjudication items from the mobile web interface. Adjudication actions are available on the desktop interface.