Directory Sync

Automatic user and group provisioning

Quickly enable SCIM provisioning from all major corporate directory providers with a single integration.

Integrates with

Streamline user activation, deactivation, and groups

Directory Sync

Your app’s gateway into enterprise HR

Real-time updates

with webhook events

12+

Directory services supported

Integrate into the systems that enterprises are already using

WorkOS integrates corporate directories and HRIS systems to power the user lifecycle management of your app. With a single integration, automatically provision and deprovision users, groups, and access controls.

Effortlessly integrate with directory users + groups

Seamless user lifecycle management for both you and your customers by keeping your app in sync with their employee directory.


// Get a list of all users
// from an existing Directory

import WorkOS from '@workos-inc/node';

const workos = new WorkOS('sk_example_123456');

const users = await workos.directorySync.listUsers({
  directory: 'directory_01ECAZ',
});



# Get a list of all users
# from an existing Directory

require 'workos'

WorkOS.key = 'sk_example_123456'

users = WorkOS::DirectorySync.list_users(
  directory: 'directory_01ECAZ',
)



# Get a list of all users
# from an existing Directory

import workos
from workos import client

workos.api_key = 'sk_example_123456'
workos.client_id = 'client_123456789'

users = client.directory_sync.list_users(group='directory_01ECAZ')



// Get a list of all users
// from an existing Directory

import "github.com/workos/workos-go/pkg/directorysync"

directorysync.SetAPIKey("sk_example_123456")

response, err := directorysync.ListUsers(context.Background(), directorysync.ListUsersOpts{
  Directory: "directory_01ECAZ",
})



// Get a list of all users
// from an existing Directory

$this->ds = new DirectorySync();

list($before, $after, $users) = $this->ds->listUsers();







// Get a list of all users
// from an existing Directory

import com.workos.WorkOS;

WorkOS workos = new WorkOS("sk_example_123456");

DirectoryUserList userList = workos.directorySync.listDirectoryUsers(
  ListDirectoryUserOptions.builder()
    .directory("directory_01ECAZ")
    .build()
);

// Get a list of all users
// from an existing Directory

WorkOS.SetApiKey("sk_example_123456");

var service = new DirectorySyncService();
var options = new ListUsersOptions
{
    Directory = "directory_01ECAZ",
}

var users = await service.ListUsers(options);

curl --request GET \
  --url "https://api.workos.com/directory_users?directory=directory_01ECAZ" \
  --header "Authorization: Bearer sk_example_123456"
  
  
  
  
  
  
  
  
  
  • Normalized data

    Access attributes in a standardized format from dozens of HRIS and directory providers.
  • Attribute mapping

    Map the required custom attributes you want to pull in from various directory providers.
  • Advanced use cases

    Fetch and manipulate data from different entities such as directories, groups, and users.

Real-time updates with webhooks

Receive events to stay up-to-date any time a change is made to a directory sync connection.

dsync.group.user_added
A user was added to a directory group
dsync.user.created
A new user was created
dsync.user.updated
A user’s properties were updated
dsync.deleted
A directory sync connection was deleted
dsync.activated
A directory sync connection was activated
dsync.group.updated
A directory group’s properties were updated
dsync.group.user_added
A user was added to a directory group
dsync.user.created
A new user was created
dsync.user.updated
A user’s properties were updated
dsync.deleted
A directory sync connection was deleted
dsync.activated
A directory sync connection was activated
dsync.group.updated
A directory group’s properties were updated
dsync.user.created
A new user was created
dsync.group.created
A group was added to a directory.
dsync.user.deleted
A user was removed from the directory
dsync.group.user_removed
A user was removed to a directory group
dsync.deactivated
A directory sync connection was deactivated