Background checks
Accurate Background integration setup, ordering checks, and webhook status updates.
InsightHire integrates with Accurate Background to order background checks from the candidate profile and receive status updates via webhook. Credentials can be per-organization or fall back to platform-level env vars for sandbox testing.
Settings path
| Step | Location |
|---|---|
| Connect Accurate | /dashboard/settings/integrations/accurate/setup |
| Connection status | /dashboard/settings/integrations (Accurate card) |
| Order a check | Candidate profile → Background check card |
| Platform smoke test | Platform admin only (backgroundChecks.platformTestAccurate) |
Prerequisites
- Accurate Background account with API Client ID and Client Secret (Accurate API docs).
- Org Admin role to save credentials.
- Webhook URL registered in Accurate Developer Portal.
Setup steps
1. Connect credentials
On the Accurate setup page, enter:
| Field | Required | Purpose |
|---|---|---|
| Client ID | Yes | Accurate API Basic auth username |
| Client Secret | Yes | Accurate API Basic auth password |
| Webhook secret | No | Optional shared secret for inbound webhook verification |
Submit via backgroundChecks.connectAccurate. InsightHire calls testAccurateAuth unless skipAuthTest is set.
Credentials stored in ats_integrations with platform ACCURATE.
2. Register webhook
Copy the webhook URL from setup (also returned by backgroundChecks.accurateStatus):
{API_BASE_URL}/api/webhooks/accurateExample: https://api.insighthire.com/api/webhooks/accurate
In Accurate Developer Portal → Webhooks, add this URL.
Optional: configure the same webhook secret in InsightHire and send it as header:
X-Accurate-Webhook-SecretorX-Webhook-Secret
Sandbox environments may not auto-fire webhooks — use Accurate's portal testing module.
3. Test connection
Use Test connection (backgroundChecks.testAccurateConnection) to verify:
alive— Accurate/aliveendpoint reachableauthOk— credentials acceptedpackageCount— packages listablecredentialSource—orgorplatform
Platform vs org credentials
| Source | When used |
|---|---|
| Org | Client ID/Secret saved in Accurate setup (preferred for production) |
| Platform | ACCURATE_CLIENT_ID + ACCURATE_CLIENT_SECRET env on API (sandbox / shared testing) |
backgroundChecks.accurateStatus reports:
connected— active integration with resolvable credentialshasOrgCredentials— tenant supplied own keysusingPlatformFallback— org has no keys; platform env usedclientIdMasked— first 8 chars for identification
Ordering a background check
From the candidate profile, recruiters call backgroundChecks.initiateAccurateCheck:
| Input | Default | Purpose |
|---|---|---|
candidateId | — | InsightHire candidate UUID |
packageType | PKG_BASIC | Accurate package code |
workflow | INTERACTIVE | Accurate emails candidate invite |
jobLocation | US/CA/Irvine | Required by Accurate order API |
Candidate requirements: first name, last name, and email must be present.
Order flow
- Create Accurate candidate via API
- Create local
background_check_ordersrow (statusPENDING) - Create Accurate order with reference codes
[orderId, organizationId] - Update candidate
backgroundCheckStatus - Log activity
accurate.order.created
Workflows:
INTERACTIVE— candidate receives Accurate invitation email (default)EXPRESS— expedited flow per Accurate package rules
Package selection
backgroundChecks.listAccuratePackages returns available packages. Sandbox accounts may return empty on /package — UI falls back to PKG_BASIC.
Webhook status updates
Accurate POSTs to /api/webhooks/accurate with payload shape:
{
"id": "...",
"eventType": "ORDER_STATUS_CHANGE",
"eventInfo": {
"orderId": "...",
"orderStatus": "IN_PROGRESS",
"orderResult": null,
"percentageComplete": 50
}
}InsightHire:
- Logs event in
webhook_events - Matches
orderIdtobackground_check_orders.externalId - Updates order status, result,
percentageComplete,lastWebhookAt - Maps Accurate status → candidate
backgroundCheckStatus
Status mapping handled by mapAccurateStatusToBackgroundCheckStatus.
Monitoring orders
backgroundChecks.listOrders returns recent orders with:
- External Accurate order ID
- Status, result, package type, workflow
percentageComplete,lastWebhookAt
View on candidate profile background check card.
Disconnect
backgroundChecks.disconnectAccurate sets integration isActive: false. Existing orders remain; new orders require reconnect.
Troubleshooting
| Issue | Resolution |
|---|---|
| Credentials rejected | Verify sandbox vs production keys; check Client ID/Secret pair |
| No packages listed | Normal in sandbox; use PKG_BASIC |
| Webhook not updating | Confirm URL in Accurate portal; test with portal tool |
| Order failed | Candidate missing email or name; check order rawPayload.error |
| Using platform creds unexpectedly | Save org credentials in setup to override env fallback |
API reference
| Procedure | Purpose |
|---|---|
backgroundChecks.accurateStatus | Connection + webhook URL |
backgroundChecks.connectAccurate | Save credentials |
backgroundChecks.disconnectAccurate | Deactivate |
backgroundChecks.testAccurateConnection | Ping + auth test |
backgroundChecks.listAccuratePackages | Package catalog |
backgroundChecks.initiateAccurateCheck | Place order |
backgroundChecks.listOrders | Order history |
Related
- Integrations overview
- Compliance settings — who can order checks

