---
title: "Directory Sync"
description: "Implement Enterprise Ready SCIM provisioning with WorkOS Directory Sync. Seamlessly connect with all major corporate directory providers like Okta, Microsoft Entra ID, and more through a single API."
url: https://workos.com/directory-sync
---

# Directory Sync

## Automatic user and group provisioning

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

[Add Directory Sync to your app](https://workos.com/signup)

[Read the docs](https://workos.com/docs/directory-sync)

Integrates with

## Streamline user activation, deactivation, and groups

[Read the Developer’s Guide to SCIM](https://workos.com/blog/the-developers-guide-to-directory-sync-scim)

### 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.

[Read the docs](https://workos.com/docs/directory-sync)

[Get your API key](https://workos.com/signup)

Node.jsRubyPythonGoPHPJava.NETcURL

```js
// 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',
});
```

```ruby
# 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',
)
```

```python
# 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')
```

```go
// 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",
})
```

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

$this->ds = new DirectorySync();

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

```java
// 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()
);
```

```cpp
// 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);
```

```bash
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

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

> “WorkOS’ SCIM API has been a game-changer, enabling us to meet the user lifecycle management needs of our largest enterprise customers.”

Dana Lawson

SVP, Engineering

[Read more](https://workos.com/customers/netlify)

> “Integrating was straightforward, pleasant, and fun. The team answered my questions quickly, and went above and beyond to help when I ran into issues.”

Bryant Chou

Co-Founder & CTO

[Read more](https://workos.com/customers/webflow)

## Transparent pricing

Integrate corporate directories and HRIS systems to power the user lifecycle management of your app.

0

0

×

$125

$0 / month

vs $100 to build it yourself

Need a plan that fits your scale?

Unlock annual discounts, expert guidance, and migration support.

[Schedule a call](https://workos.com/contact-sales)

### Number of connections

- 1-15
  $125 / ea
- 16-30
  20% off
  $100 / ea
- 31-50
  36% off
  $80 / ea
- 51-100
  48% off
  $65 / ea

[Need additional scale? Talk to us](https://workos.com/contact-sales)

## Built for the most demanding apps

### 99.99% uptime

Guaranteed uptime SLAs for enterprise customers

[View uptime SLAs](https://workos.com/legal/sla)

### Premium support

Expert guided integration support and response time SLAs

[View support plans](https://workos.com/support-plans)

### Custom enterprise plans

Contract-based plans tailored to your business requirements

[Contact sales](mailto:sales@workos.com?subject=Custom%20enterprise%20plans)

[Directory Sync Quick StartJump into the docs and get up and start building in minutes.](https://workos.com/docs/directory-sync/guide)[Custom Attribute Mapping
See how to map custom attributes from various directory providers.](https://youtu.be/Wt5nbV6i9Qs)[Developer’s guide to SCIMNew to integrating with SCIM ? This guide covers it all.](https://workos.com/blog/the-developers-guide-to-directory-sync-scim)
