Automatically provision, update and deprovision users in JumpCloud from Rippling using the Identity Management integration. Leverage this integration to centralize user lifecycle and identity management in JumpCloud based on user data coming from Rippling. Save time and avoid mistakes, as well as potential security risks, related to manually creating and updating users.
Add options to use existing connector or create new one.
Configuring the Identity Management Integration
To generate a Rippling API Token
- Log in to Rippling as an admin for your organization.
- Select Tools >Developer.
- Navigate to API Tokens.
- Click Create API Token.
- Enter a clear, descriptive name (e.g., JumpCloud Integration)
- Click Continue.
- Specify the specific permissions (scopes) you want to give based on the data you want to import from Rippling to JumpCloud:
These are the suggested scopes based on our suggested API endpoint and mappings. See the Scopes Details section of the Rippling API documentation for more information about the available scopes to determine which are most appropriate for your integration.
- companies.read
- departments.read
- employment-types.read
- job-codes.read
- job-dimensions.read
- legal-entities.read
- levels.read
- teams.read
- users.read
- work-locations.read
- workers.read
- workers.sensitive.personal.read
- Click Save.
- Copy the API Token and store it securely.
The Client ID and Secret (token) may only be shown once. Copy them to a secure location, like the JumpCloud Password Manager, for future reference.
To create a new custom application in JumpCloud
- Log in to the JumpCloud Admin Portal.
If your data is stored outside of the US, check which login URL you should be using depending on your region, see JumpCloud Data Centers to learn more.
- Go to User Management > HR Directories.
- Select Create Custom Application
- Click Next
- Select Import users from this app (Identity Management) if you don’t want users to log in to Rippling with their JumpCloud credentials or
- Click Next
- Enter the name for your integration in the Display Label field
- Optionally, if you don’t want the integration to show for your users, you can uncheck the Show this application in User Portal option.
- Click Save Application
- Click Configure Application
To configure the custom API import integration
Reference the Rippling REST API documentation.
- Expand Configuration settings
- Select Custom API Import for API Type
- Select or enter the following:
- Use mTLS: Leave unchecked
- Authentication method: Select Bearer Token
- Base URL: Enter https://rest.ripplingapis.com
- Enter the API Token generated in the previous section
- Endpoint configuration:
- Resource location: results
- Endpoint path: /workers
- Pagination:
- Pagination Type: Cursor-based
- Cursor Count Parameter: limit
- Cursor Field Parameter: cursor
- Cursor Field JSON Path: next_link
- Check the box for Cursor field is a link
- Click Test Connection to verify credentials and the configuration.
- If the connection test was successful, the Attribute Mapping section will be displayed.
- Update Endpoint path to /workers?expand=user,manager,employment_type,department,legal_entity,custom_fields to have more complete user information included in the sync.
The expand query parameters listed here are suggestions based on our recommended attribute mappings. Always refer to the official Rippling API documentation (specifically the Query Parameters > Expand section) to make a final decision on which to include. Your choice of expand parameters should only include the ones needed based on the final attribute mappings you define to ensure only the necessary data is retrieved for your JumpCloud integration.
User Schema Attribute Mapping
These API mappings are provided as examples and reflect common use cases. We recommend reviewing and customizing the mapping logic to ensure it aligns with your specific business workflows, data environment, and security standards.
- Expand the Attribute Mapping section
- Update the first section of the User Schema Attribute Mapping section:
- Unique id: id
- User Status status
- Inactive Status Values: INIT, HIRED, TERMINATED
Mapping Table
Use the example response from the List Workers endpoint in the Rippling API documentation to determine which attributes you want to map. Some suggestions are provided in the table below.
Required Mappings
| JumpCloud Attribute | Service Provider Attribute | Notes |
| Company Email | work_email | |
| Username | work_email | There is logic that automatically extracts everything before the ‘@’ in the email address and sets that as the username |
Optional Mappings
| JumpCloud Attribute | Service Provider Attribute | Notes |
| Display Name | {{ or .user.name.preferred_given_name .user.name.given_name }} {{ or .user.name.preferred_family_name .user.name.family_name }} | |
| First Name (suggested) | {{ or .user.name.preferred_given_name .user.name.given_name }} | Expression that will store the person’s preferred given (first) name if populated. Otherwise, it will store the person’s legal first name. To use an expression, click the more option at the end of the field (the stacked ellipses) and select “Add Expression” |
| Last Name (suggested) | {{ or .user.name.preferred_family_name .user.name.family_name }} | Expression that will store the person’s preferred family (last) name if it is populated. Otherwise, it will store the person’s legal family (last) name. To use an expression, click the more option at the end of the field (the stacked ellipses) and select “Add Expression” |
| Middle Name | user.name.middle_name | |
| Alternate Email (suggested) | personal_email | |
| Location (suggested) | location.type | |
| Manager Email (suggested) | manager.work_email | |
| Employee Identifier (suggested) | number | |
| Employee Type (suggested) | employment_type.label | |
| Job Title (suggested) | title | |
| Work Phone | {{range .user.phone_numbers}}{{if (eq .type “WORK”)}}{{ .value}}{{end}}{{end}} | Expression that searches the phone_numbers array in the user object for the work phone number and stores it if populated. |
| Company (suggested) | {{ or .legal_entity.company.doing_business_as_name .legal_entity.company.legal_name}} | Add Expression OR type the name of your company |
| Department (suggested) | department.name | |
| Work Cell Phone | {{range .user.phone_numbers}}{{if (eq .type “MOBILE”)}}{{ .value}}{{end}}{{end}} | Expression that searches the phone_numbers array in the user object for the mobile phone number and stores it if populated. |
| Work Country | country | |
| Home State | {{range .user.addresses}}{{if (eq .type “HOME”)}}{{ .region}}{{end}}{{end}} | Expression that searches the addresses array in the user object for the region value of user’s home address and stores it if populated. |
| Home City | {{range .user.addresses}}{{if (eq .type “HOME”)}}{{ .locality}}{{end}}{{end}} | Expression that searches the addresses array in the user object for the locality value of user’s home address and stores it if populated. |
| Home Country | {{range .user.addresses}}{{if (eq .type “HOME”)}}{{ .country}}{{end}}{{end}} | Expression that searches the addresses array in the user object for the country value of user’s home address and stores it if populated. |
| Home Street Address | {{range .user.addresses}}{{if (eq .type “HOME”)}}{{ .street_address}}{{end}}{{end}} | Expression that searches the addresses array in the user object for the street address value of user’s home address and stores it if populated. |
| Home Postal Code | {{range .user.addresses}}{{if (eq .type “HOME”)}}{{ .postal_code}}{{end}}{{end}} | Expression that searches the addresses array in the user object for the postal code value of user’s home address and stores it if populated. |
Expressions
You can use expressions to manipulate the information before storing it in JumpCloud. Read Use Expressions in Custom API Import Integrations to learn more about expressions.
To preview Mappings
Use this option to see the values being returned from Rippling and what values will be set in JumpCloud.
- Click Preview Mappings
- Add query parameters supported by Rippling to return certain records and click Update Preview.
- For example, enter filter=work_email+eq+'your.name@company.com' to do the preview for a specific user
- Click Close
- Edit the mappings as needed
- Repeat these steps until the results meet your requirements
To activate the Integration
Once you are satisfied with the attribute mappings, click Activate.
Importing Users
To verify the Integration
Before you import more than a few test user, you will need to provide your integration app id to your Customer Success Manager or open a case with Customer Support and ask them to have engineering enable the Rippling integration bulk import functionality. The app id will be found at the end of the URL when you have the integration configuration page open.
Perform a filtered manual import
- Expand the Import Users section
- Check the box for Apply advanced filters on import (optional)
- If you want to test by importing a specific users, append the following to the value in the Import Filter field: filter=work_email+eq+'your.name@company.com'
- Replacing the example email address with the actual email address of the user you want to import.
- Reference the List Workers API documentation for a complete list of filters you can use.
- If you want to test by importing a specific users, append the following to the value in the Import Filter field: filter=work_email+eq+'your.name@company.com'
- Click Start Manual Import
- Select the last option View and select specific new users to import (updates not supported)
- Click Continue
- Select a new user to import
- Click Import
- Verify the user was imported and had all the attributes you mapped
- Follow the steps above and choose the other import options to do manual bulk imports
Perform a filtered scheduled import
Once you are comfortable with how the integration is working, you can enable the scheduled sync.
- Expand the Import Users section
- If you haven’t already, add the import filters
- If you want to test by importing a specific users, append the following to the value in the Import Filter field: filter=work_email+eq+'your.name@company.com' to bring in a specific user
- Replacing the example email address with the actual email address of the user you want to import
- Reference the List Workers API documentation for a complete list of filters you can use
- If you want to test by importing a specific users, append the following to the value in the Import Filter field: filter=work_email+eq+'your.name@company.com' to bring in a specific user
- Toggle the Schedule hourly imports of users and user updates from SAML2.0 (disabled) to enable hourly imports.
- If you want to receive an email every time the import runs, check the box for Receive summary email after each scheduled import:
- If you prefer not to get so many emails, the import results can be accessed by clicking the Import Results link, from the Scheduled User Import Errors (past 24 hours) widget on the Home Page, or in Directory Insights
Importing New Users and Updates
To import users with the JumpCloud Admin Portal
- Create a new application or select it from the Configured Applications list.
- Select the Identity Management tab and expand the Import Users section.
- There are several settings available for importing users from your custom application to JumpCloud.
Selected import options will apply to both manual and scheduled imports.
Configuring User Import Settings
- Allow reactivation of users on update for manual and scheduled imports - results in the user state changing from Suspended to Active in JumpCloud when a user is terminated in the SP.
- Apply Advanced Filters on import (optional) - see your SP's API documentation for available filters.
- Start Manual Import - kicks off the process flow for doing an immediate and one-time import of users from the SP to JumpCloud.
- Import Results - takes you to Directory Insights for User Imports.
- Scheduled Imports (hourly) - disabled by default for all new connectors. The first scheduled import will start within an hour after the new connector is saved. Scheduled imports will then run at the same time every hour as the initial scheduled import.
It's recommended to enable this for the first few scheduled imports to ensure the imports are running correctly.
- Receive summary email after each scheduled import -results in user import complete emails being sent after each hourly import.
Starting a manual user import
- Expand the Import Users section and click Start Manual Import.
- Select one of the following options:
- Import new users and user updates
- Only import new users
- Only import user updates
- View and select specific new users to import (updates not supported)
If the option selected includes user updates, the following will occur:
- Any and all changes made to the mapped user attributes in the source application will be made in JumpCloud.
- Users whose statuses change to one of the defined inactive status will be automatically suspended in JumpCloud.
- If Allow reactivation of users on update is checked, suspended users in JumpCloud, whose status change from the defined inactive statuses to ones that are not defined as inactive, will have their user state changed back to Active in JumpCloud.
- Click Continue.
- If you selected the View and select specific new users to import (updates not supported).
- Select the users you want to import.
Free accounts can import unlimited users, but will be prompted to upgrade to a paid subscription after 30 days. Similarly, accounts managed by an MSP, that have a license limit, are only allowed to import users up to their license limit and will be prompted to contact their provider once that limit is reached.
- The count of users to be imported will show at the bottom left hand of the list. If this is correct, click Import.
- Review the information in the results modal.
- Click one of the tiles to navigate to the Users page, User Groups page, or Device Groups page or close the modal.
If you close this modal, you will return to the Identity Management configuration panel.
- You will receive a User Import Complete email with a summary of the import results and a link for downloading a copy of the import results.
- You can now connect users to all their JumpCloud resources. Learn more in the Authorize Users to an SSO App and Connect New Users to Resources articles.
Imported users must be members of a user group bound to an application for JumpCloud to manage their identity in and access to the application.
To import users with the JumpCloud API
The import flow using this new API endpoint will only create new users who have an active status in your custom application. By default, Leave and Inactive are considered inactive statuses and Onboarding and Active are considered active statuses. See Documentation for this API endpoint.
- Get the application ID for your integration. There are 2 ways:
- Retrieve the application ID from the JumpCloud Admin Portal:
- Log in to JumpCloud Admin Portal.
- Go to USER AUTHENTICATION > SSO Applications.
- Open your custom application by clicking on it.
- Note the ID from the URL which is just before “/details”: https://console.jumpcloud.com/#/sso/{222220da1f777fbe7502cde}/details
- Retrieve the application ID by making a GET /applications request:
- Retrieve the application ID from the JumpCloud Admin Portal:
curl command example:
curl --request GET \
--url 'https://console.jumpcloud.com/api/applications?fields=id&filter=displayLabel:$eq:Personio' \
--header 'x-api-key: REPLACE_KEY_VALUE' \
--header 'x-org-id: REPLACE_ORG_ID_VALUE'
- To do a manual import, make a POST /applications/{application_id}/import/jobs request using the application ID from the preceding steps.
curl command example for importing new users and user updates with reactivation of users allowed:
curl --request POST \
--url 'https://console.jumpcloud.com/api/v2/applications/{application_id}/import/jobs' \
--header 'accept: application/json' \
--header 'Content-Type: application/json'\
--header 'x-api-key: REPLACE_KEY_VALUE' \
--header 'x-org-id: REPLACE_ORG_ID_VALUE'\
--data '{
"allowUserReactivation": true,
"operations": [
"users.create",
"users.update"
]
}'
curl command example for importing only user updates:
curl --request POST \
--url 'https://console.jumpcloud.com/api/v2/applications/{application_id}/import/jobs'
--header 'accept: application/json' \
--header 'Content-Type: application/json'\
--header 'x-api-key: REPLACE_KEY_VALUE' \
--header 'x-org-id: REPLACE_ORG_ID_VALUE'\
--data '{
"allowUserReactivation": true,
"operations": [
"users.update"
]
}'
- To run scheduled hourly imports:
curl command that allows reactivation, sends an advanced import filter, and sends the user import complete email after the hourly sync occurs:
curl --request POST \
--url https://console.jumpcloud.com/api/v2/applications/{applicationObjectId}/import/schedules \
--header 'content-type: application/json' \
--data '{"allowUserReactivation":true,"operations":{"userCreate":true,"userUpdate":true},"query":"string","sendEmail":true}'
Updating the Custom API Connector
- Log in to the JumpCloud Admin Portal.
If your data is stored outside of the US, check which login URL you should be using depending on your region, see JumpCloud Data Centers to learn more.
- Go to Access > SSO Applications and open the Rippling application by clicking on it from the list.
- Select the Identity Management tab.
- Make the desired changes in the Configuration Settings section.
- Click Update.
Removing the Integration
These are steps for removing the integration in JumpCloud. Consult your SP's documentation for any additional steps needed to remove the integration in the SP. Failure to remove the integration successfully for both the SP and JumpCloud may result in users losing access to the application.
To deactivate the IdM Integration
- Log in to the JumpCloud Admin Portal.
If your data is stored outside of the US, check which login URL you should be using depending on your region, see JumpCloud Data Centers to learn more.
- Go to Access > SSO Applications.
- Search for the application that you’d like to deactivate and click to open the configuration window.
- Click Actions, Deactivate IdM and then click confirm.
To deactivate the SSO Integration or Bookmark
- Log in to the JumpCloud Admin Portal.
If your data is stored outside of the US, check which login URL you should be using depending on your region, see JumpCloud Data Centers to learn more.
- Go to Access > SSO Applications.
- Search for the application that you’d like to deactivate and click to open its details panel.
- Select the SSO or Bookmark tab.
- Scroll to the bottom of the configuration.
- Click Deactivate SSO or Deactivate Bookmark.
- Click save.
- If successful, you will receive a confirmation message.
To delete the application
- Log in to the JumpCloud Admin Portal.
If your data is stored outside of the US, check which login URL you should be using depending on your region, see JumpCloud Data Centers to learn more.
- Go to Access > SSO Applications.
- Search for the application that you’d like to delete.
- Check the box next to the application to select it.
- Click Delete.
- Enter the number of the applications you are deleting
- Click Delete Application.
- If successful, you will see an application deletion confirmation notification.
Troubleshooting
A user has a duplicate record and their user state is constantly changing
Ensure you have:
- A valid JumpCloud Admin API Key
- The Rippling Application ID (see Step 1)
- The modified email address of the terminated user in Rippling:
- When the user import job is not running, update the work email of the terminated user in Rippling to indicate that the user is terminated. For example, user.rippling@domain.com could be updated to terminated.user.rippling@domain.com
- The correct and operational email address for the user in JumpCloud
- The correct and unique email address of the user in Rippling
- Any other user records that have the same email should be modified or deleted
Get the Rippling Provision (Client) ID
- Log in to the JumpCloud Admin Portal.
- Go to Access > SSO Applications. Search and select the Rippling application from the list.
- Copy the <app_id> from the URL. (https://console.jumpcloud.com/#/applications/<app_id>/details/generalInfo)

- Run the following command to get the clientObjectId (provision ID):
- Replace <application_id> with the app ID obtained in the previous step
curl https://console.jumpcloud.com/api/v2/applications/<application_id>/provision \
-H "x-api-key: <YOUR_API_KEY>"
- The id field in the response is your clientObjectId.
Get the JumpCloud User ID (userObjectId)
- Use the correct and operational JumpCloud user’s email to retrieve their JumpCloud User ID.
- Copy the value of "id" from the response - this is the userObjectId.
curl -X GET \
"https://console.jumpcloud.com/api/systemusers?filter=email:eq:<user_email>" \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json"
Check if the user is mapped to Rippling
- Check if the user is currently synced to the Rippling app:
- If the user is mapped, the response will include their externalId
- If the user is not mapped, you’ll see: {"message" : "Not Found"}
curl -X GET \
"https://console.jumpcloud.com/api/v2/idms/<clientObjectId>/users/<userObjectId>" \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json"
Delete the Mapping
- Remove the mapping
- A successful deletion returns no output and HTTP status 204 No Content.
curl -X DELETE \
"https://console.jumpcloud.com/api/v2/idms/<clientObjectId>/users/<userObjectId>" \
-H "x-api-key: <YOUR_API_KEY>"
Confirm the User is Removed
- Re-run the GET call to confirm the mapping was removed:
- If the user was successfully removed, you’ll see: {"message" : "Not Found"}.
curl -X GET \
"https://console.jumpcloud.com/api/v2/idms/<clientObjectId>/users/<userObjectId>" \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json"
Detailed API Documentation
JumpCloud Application User Management API Documentation
Overview
JumpCloud's Application User Management API allows administrators to retrieve and delete user mapping records for applications. These endpoints are useful for managing the relationships between users and applications in your JumpCloud organization.
Prerequisites
- Application ID and User ID information
- A JumpCloud Administrator API key
- Access to the JumpCloud applications scope
Authentication
All API requests require a JumpCloud API key passed in the x-api-key header:
x-api-key: YOUR_API_KEY_HERE
Endpoints
Get Application’s Provision ID
Retrieves the client user mapping record for a specific application and user.
HTTP Request
GET /api/v2/applications/{application_object_id}/provision
Parameters
| Parameter | Type | Description |
| application_object_id | string | The hexadecimal ID of the application |
| user_object_id | string | The hexadecimal ID of the user |
Example Request
curl -X GET \
https://console.jumpcloud.com/api/v2/idms/6813c37d46be622467719c3c/users/6647dffe1b5810905c9d7fca \
-H "x-api-key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json"
Example Response
{
"id": "6813c37d46be622467719c3c",
"disabled": false,
"groups_enabled": true,
"groups_supported": true,
...
}
Get Application User Mapping
Deletes the client user mapping record for a specific application and user.
HTTP Request
GET /api/v2/idms/{client_object_id}/users/{user_object_id}
Parameters
| Parameter | Type | Description |
| client_object_id | string | The hexadecimal provision ID of the application |
| user_object_id | string | The hexadecimal ID of the user |
Example Request
curl -X DELETE \
"https://console.jumpcloud.com/api/v2/applications/6851cc6c4df1c08f0610b756/users/6851cc7d52c55ddc4155a96f" \
-H "x-api-key: YOUR_API_KEY_HERE"
Example Response
{
"userObjectId": "6647dffe1b5810905c9d7fca",
"clientObjectId": "6813c37d46be622467719c3c",
"externalId": "9ed70077-ff73-4be0-9306-f50a37d8f5fd" <--- this is the Rippling ID
}
Delete Application User Mapping
Deletes the client user mapping record for a specific application and user.
HTTP Request
DELETE /api/v2/idms/{client_object_id}/users/{user_object_id}
Parameters
| Parameter | Type | Description |
| client_object_id | string | The hexadecimal provision ID of the application |
| user_object_id | string | The hexadecimal ID of the user |
Example Request
curl -X DELETE \
"https://console.jumpcloud.com/api/v2/applications/6851cc6c4df1c08f0610b756/users/6851cc7d52c55ddc4155a96f" \
-H "x-api-key: YOUR_API_KEY_HERE"
Response
A successful delete operation returns HTTP status code 204 No Content with an empty response body.
Common Use Cases
Checking User-Application Relationships
Use the GET endpoint to verify if a user is properly mapped to an application and to retrieve their external identifier within that application.
Removing User Access
Use the DELETE endpoint when you need to remove a user's access to a specific application without affecting their other application mappings or their JumpCloud account status.
Error Codes
| Status Code | Description |
| 401 |
