How to use User Provisioning and Verification with Unified
October 11, 2025
User Provisioning and Verification with Unified
With Unified's SCIM API devs can build use provisioning features that work with any HRIS integration like BambooHR, Workday and any other ATS integration that Unified connects to. You can create, update, list and delete users in your customers employee directories.
In this guide, I will show you how to provision users using the SDK, with BambooHR as an example. The same approach works for all Unified HR integrations.
Prerequisites
- Node.js (v18+)
- Unified account with at least one HR integration enabled (e.g. for this example we are using BambooHR)
- Unified API key
- Your customer's HR connection ID
Supported Integrations
Unified's API works with 170+ HR integrations (BambooHR, Workday, HiBob, Gusto, etc.) and 5+ verification providers (Certn, Checkr, First Advantage, Verifiable, Yardstik).
See all verification integrations
Step 1: Setting up your project
mkdir user-verification-demo
cd user-verification-demo
npm init -y
npm install @unified-api/typescript-sdk dotenv
Add your credentials to .env
:
UNIFIED_API_KEY=your_unified_api_key
CONNECTION_BAMBOOHR=your_customer_bamboohr_connection_id
CONNECTION_VERIFICATION=your_customer_verification_connection_id
Step 2: Initialize the SDK
import 'dotenv/config';
import { UnifiedTo } from '@unified-api/typescript-sdk';
const { UNIFIED_API_KEY, CONNECTION_BAMBOOHR, CONNECTION_VERIFICATION } = process.env;
const sdk = new UnifiedTo({
security: { jwt: UNIFIED_API_KEY! },
});
Step 3: How to Get Your Customer's Connection ID
Before you get started, your end customer must authorize your app to access their HRIs integration via Unified's auth flow.
Once authorized, you will receive a connection ID for that customer's integration. Store this carefully and use it in all API calls for that specific customer.
Step 4: Creating a User (Provisioning)
export async function createUser(connectionId: string, email: string, firstName: string, lastName: string) {
const employee = await sdk.hris.createHrisEmployee({
connectionId,
hrisEmployee: {
name: `${firstName} ${lastName}`,
emails: [{ email }],
firstName,
lastName,
employmentStatus: "ACTIVE",
},
});
return employee; // HrisEmployee
}
Step 5: Listing Users
export async function listUsers(connectionId: string) {
const employees = await sdk.hris.listHrisEmployees({
connectionId,
limit: 10,
});
return employees; // HrisEmployee[]
}
Step 6: Updating a User
export async function updateUserStatus(connectionId: string, userId: string, status: "ACTIVE" | "INACTIVE") {
const updated = await sdk.hris.updateHrisEmployee({
connectionId,
id: userId,
hrisEmployee: { employmentStatus: status },
});
return updated; // HrisEmployee
}
Step 7: Deactivating a User (Recommended)
export async function deactivateUser(connectionId: string, userId: string) {
// Some providers (e.g., BambooHR) do not support delete; set status to INACTIVE instead
const updated = await sdk.hris.updateHrisEmployee({
connectionId,
id: userId,
hrisEmployee: { employmentStatus: "INACTIVE" },
});
return updated;
}
Step 8: Verifying a User (Background Check, License, etc.)
Unified's new Verification API lets you trigger background checks, license verifications, and more, using providers like Certn, Checkr, and others.
export async function listVerificationRequests(connectionId: string) {
// Listing requests is supported across providers; creation may vary by provider/package
const requests = await sdk.verification.listVerificationRequests({
connectionId,
limit: 10,
});
return requests;
}
Step 9: Example Usage
async function main() {
// 1. Create a user
const user = await createUser(CONNECTION_BAMBOOHR!, "jane.doe@example.com", "Jane", "Doe");
// 2. List users
const users = await listUsers(CONNECTION_BAMBOOHR!);
// 3. Update (deactivate) user
if (user?.id) {
const updated = await updateUserStatus(CONNECTION_BAMBOOHR!, user.id, "INACTIVE");
console.log("Updated user:", updated);
}
// 4. List verification requests (optional)
if (CONNECTION_VERIFICATION) {
const requests = await listVerificationRequests(CONNECTION_VERIFICATION!);
console.log("Verification requests:", requests.length);
}
console.log("Users:", users.length);
}
main();
And that's it - **Happy Building ** 🎉