Connect Gusto to Microsoft Entra ID

Connect Gusto to Microsoft Entra ID

Connect Gusto to Microsoft Entra ID

When someone joins, moves or leaves in Gusto, you want that change reflected in Microsoft Entra ID without anyone touching it by hand. To connect Gusto to Microsoft Entra ID, Joinly reads each HR change at the source — through the Gusto REST API — and applies it automatically to the right account. Gusto stays your source of truth; Joinly is the engine that keeps every action accurate and traceable.

Key takeaways

  • Gusto stays your source of truth; Joinly applies every joiner, mover and leaver to Entra ID automatically.

  • Joinly maps Gusto departments, jobs and locations to the right Entra ID groups and licences — there is no native Microsoft provisioning app for Gusto to do this for you.

  • Joinly reads the Gusto REST API over OAuth 2.0 and refreshes its own tokens, so the connection keeps running without manual re-authentication every two hours.

  • An employee can hold more than one job in Gusto; Joinly resolves the active job so the correct title and role drive access, not a stale or secondary job.

  • Every action is logged for a complete audit trail, aligned with NIS2 and ISO 27001.

Gusto

Joiner

Mover

Leaver

Microsoft Entra ID (formerly Azure AD)

Quick facts

Source system

Gusto (employee records)

Target system

Microsoft Entra ID (formerly Azure AD)

Connection method

Gusto REST API → Entra ID

Supported events

Joiner, mover, leaver (incl. rehire, department and job changes)

Synced attributes

Name, email / UPN, department, job title, manager, work location, start and end date

Authentication

OAuth 2.0 (authorization code, refreshed automatically)

Real-time or batch

Frequent sync, multiple times per day

Compliance

ISO 27001, NIS2-ready, GDPR (EU data centre)

How does Joinly sync Gusto to Microsoft Entra ID?

Joinly reads each HR change in Gusto through the REST API and applies it to the matching Entra ID account automatically. Gusto holds the authoritative employee record, so it is the starting point for each identity action.

  1. Joiner. HR adds the new hire in Gusto with their department, job and work location. Joinly reads the employee, job and department records, determines the role, then creates the account in Entra ID, assigns the right licences and maps the person into the correct groups — timed to the hire date.

  2. Mover. When someone changes department, job or location in Gusto, Joinly updates their group membership, permissions and licences to match. Access that no longer fits the new role is revoked, so permissions stay aligned with the actual job.

  3. Leaver. When an employee is terminated in Gusto, Joinly disables the Entra ID account automatically. There are no orphaned accounts left active after someone has left, and the change is applied on the termination date recorded in Gusto.

Example: A software startup hires a customer-success rep in Gusto with a start date next Monday, in its Support department at the Austin location. Joinly reads the record, waits until the hire date, creates the Entra ID account, assigns an Office E3 licence and adds the rep to the Support-Team group. When that rep later moves into a team-lead job, Joinly reads the new active job, swaps the group membership the same day and leaves the old access behind.

What manual user management costs

Without automation, every account starts as a Gusto notification or a line in a spreadsheet that IT works through by hand. Gusto has no native Microsoft Entra provisioning app, so unless you build against the API yourself, the part that actually decides access still falls to people.

  • Onboarding delays. New joiners wait for accounts, licences and group access while a request sits in a queue, losing productive days in their first week.

  • Permissions that don’t keep up (privilege creep). When movers change department or job, old access often stays attached, so people accumulate rights they no longer need.

  • Forgotten offboarding. Accounts that aren’t disabled on time are both a security and audit risk, and unused licences keep costing money long after someone has left.

Joinly vs. building on the Gusto API yourself

Gusto has no first-party Entra provisioning app, so the realistic alternatives are JIT SSO provisioning or a script you build against the Gusto API. Here’s how that compares with Joinly for a Gusto-driven setup.


Joinly

DIY Gusto API / JIT SSO

Source

Reads the Gusto REST API directly

You maintain the API integration yourself

Role-to-group mapping

Built in, rule-based on department, job and location

Hand-coded logic you own and maintain

Future / dated hires

Times account creation to the hire date

You build the scheduling logic

Multiple jobs

Resolves the active job for title and role

Easy to read a stale or secondary job

Licence assignment

Driven by role / attributes

Manual or group-based only

On-premise AD

Yes, own agent plus the native Microsoft agent

Not covered by JIT SSO at all

Audit trail

Per-action logging tied to the HR source

Whatever you log yourself

Watch-outs when connecting Gusto to Microsoft Entra ID

A few Gusto-specific details decide whether this connection stays reliable at scale.

  • No native SCIM or Entra provisioning app. Gusto exposes a REST API but no inbound SCIM endpoint and no Microsoft-published Entra provisioning connector. Joinly reads the Gusto API directly and handles OAuth 2.0 token refresh, so you don’t have to build or babysit the integration.

  • One employee, multiple jobs. In Gusto an employee can hold more than one job, each with its own title and compensation. A naive read can pick the wrong one. Joinly resolves the active job so the correct title and role drive access.

  • Mapping departments and locations to Entra groups. Gusto departments, jobs and work locations don’t translate one-to-one to Entra ID groups. Joinly builds explicit mapping rules from those structures to the correct groups and licences, so role drives access rather than manual assignment.

  • Onboarding not yet complete. A newly created Gusto employee may not have a work email or manager until self-onboarding finishes. Joinly applies rules so the account is created cleanly and enriched as Gusto fills the record in, rather than provisioning on incomplete data.

  • UPN format with duplicate names. When two employees share a name, a naive UPN rule produces collisions. Joinly applies custom transformation rules — a suffix, location code or controlled tiebreaker — so every UPN is unique and predictable from day one.

Joinly handles each of these by default with custom mapping and transformation.

Always audit-ready

Every account action Joinly performs is logged: who was affected, when it happened, which access changed and which Gusto change triggered it. For NIS2 that matters directly: access can be traced back to an authorised HR source rather than an ad-hoc request. Joinly is ISO 27001 certified, runs in an EU data centre in Amsterdam, applies least-privilege by default, and is built to meet NIS2 and ISO 27001.

Example case

Picture a fast-growing software startup with around 180 employees, running Gusto for payroll and HR while its IT team keeps up with account creation by hand. Every new engineer, sales rep or support hire starts as a Slack message or a Gusto notification, and someone in IT creates the Entra ID account, assigns an Office licence and adds the groups from memory. As hiring accelerates the queue grows, new joiners wait until their second day for access, and nobody is quite sure which accounts belong to people who have already left.

Connect Gusto to Microsoft Entra ID with Joinly and that work disappears. Joinly reads each HR change in Gusto at the source and acts on it automatically: new hires have their account, Office licence and group access ready on their hire date, a move into a new department or job swaps the right groups the same day, and leavers are disabled on their termination date with a 30-day soft-delete grace window.

“We were creating accounts by hand from Slack pings. Now an account is simply ready on the start date, a role change just updates access, and we can show exactly which Gusto change created every bit of access.” — Head of IT, software startup

The outcome this setup is designed for: onboarding drops from days to zero touch, privilege creep from old roles is eliminated, and the team has a complete, source-backed audit trail without building anything on the Gusto API itself.

More than a connector

A standalone Gusto to Entra ID connection is a good start, but identity rarely stops at one target. Joinly manages the complete chain from joiner to leaver across all your systems, with logging and governance built in. You review the exceptions; Joinly maintains the chain.

Schedule a demo

Installation manual

Installation manual

Connect Gusto to Microsoft Entra ID

Connect Gusto to Microsoft Entra ID

Installation guide

Follow these steps to connect Gusto to Microsoft Entra ID with Joinly. The entire cloud setup happens in the platform, with no scripts or local software required.

1. Create your account

Go to platform.joinly.app and create your account.

Note: charges may apply for using the platform after the trial period ends.


Joinly account creation screen at platform.joinly.app


Sign up at platform.joinly.app to get started.

2. Connect your Microsoft account

Open platform.joinly.app/settings/provisioning/idp-setup and connect your Microsoft tenant. Select the scopes you need. For provisioning you don’t need any additional scopes.


Joinly identity provider setup screen for connecting a Microsoft Entra tenant


Connect your Microsoft tenant and pick your scopes.

3. Import your existing accounts from Entra ID

Import all existing accounts from Entra ID at platform.joinly.app/settings/provisioning/entra-import. This gives Joinly a baseline of every account that already exists, so it can match people to their current account instead of creating duplicates.

4. Find the Gusto integration in the Joinly marketplace

Open the Joinly marketplace and search for the Gusto integration.

Don’t see your system listed? Get in touch at support@koppelhet.nl and we’ll help you out.


Joinly marketplace showing available HR integrations


Search the marketplace for the Gusto integration.

5. Follow the installation wizard

You may be redirected to integrations.joinly.app. Create an account there and authorise Gusto: you’ll be sent to Gusto to sign in and grant access, and Gusto returns an OAuth 2.0 token that Joinly stores and refreshes automatically. We only ask for the information needed to establish a successful connection with Gusto. All data is encrypted and stored securely.


Joinly installation wizard for authorising the Gusto connection


Authorise Gusto with OAuth 2.0 in the wizard.

6. Configure your field mapping

Set up all your field mappings here. Templates support Liquid, so you can build your display name, UPN and other attributes dynamically from Gusto fields.

Frequently asked questions

  • How do I map the manager? Reference the employee’s manager_id in the mapping and Joinly resolves the link to the right manager automatically.

  • How do I handle an employee with multiple jobs? Joinly exposes the active job, so you can drive the title and role from the current job rather than a secondary or stale one.

  • How do I prevent duplicate usernames? Use the generateUniqueUsername helper, which falls back to the next pattern when the first one is already taken:
    {{ generateUniqueUsername: “{firstName}.{prefix}.{lastName}”, “{initials}.{prefix}.{lastName}” }}


Joinly field mapping screen for Gusto attributes using Liquid templates


Map Gusto fields to Entra ID attributes with Liquid templates.

7. Configure the scheduled import

At platform.joinly.app/settings/import-configs, configure how often the import from Gusto should run.

8. Configure your workflows

Workflows are where Joinly turns each HR change into the right action in Entra ID. Create an onboarding (joiner) and offboarding (leaver) workflow with trigger-based execution, then an Identity updated workflow with a Create/update employee in Entra action so every change in Gusto flows straight through to Entra ID. Finally, add a threshold workflow with the Entra soft delete action that runs a set period after the termination date (for example 30 days) to retire accounts safely.


Joinly workflow editor creating an employee onboarding workflow


Create a trigger-based onboarding workflow.


Adding the create or update employee in Entra action to a workflow


Add the create/update action, then set your matching strategy and field mapping.


Adding the Entra soft delete action to remove accounts on employee leave


Add the Entra soft delete action to retire accounts safely.

## AD on-premise support

Need to provision to an on-premise Active Directory as well? See our dedicated guide on connecting Gusto to Active Directory, or contact support at support@koppelhet.nl to request setup of the Joinly AD Agent.

Frequently asked questions

Does the Gusto to Microsoft Entra ID connection work in real time?
It runs as a frequent sync that updates multiple times per day, so changes in Gusto reach Entra ID quickly without waiting for a nightly batch.

Is there a native Microsoft provisioning app for Gusto?
No. Unlike some larger HR systems, Gusto has no first-party Entra provisioning gallery app, so provisioning is otherwise a JIT SSO setup or a script you build yourself. Joinly reads the Gusto REST API directly and maintains the connection for you.

How does Joinly handle an employee with more than one job in Gusto?
Gusto lets an employee hold multiple jobs. Joinly reads the active job and drives the title, role and group membership from it, so a secondary or stale job doesn’t decide access.

Which attributes sync from Gusto to Entra ID?
Name, email / UPN, department, job title, manager, work location, and start and end date. Additional Gusto fields can be mapped via Liquid templates.

How does Joinly authenticate to Gusto?
Through Gusto’s OAuth 2.0 flow. You authorise the connection once; Joinly stores and refreshes the tokens automatically, so the sync keeps running without manual re-authentication.

Does Joinly also support AD on-premise or hybrid provisioning?
Yes. Joinly has its own AD on-premise agent and also supports the native Microsoft Entra provisioning agent, so you can provision users to your on-premise AD environment as well. See the Gusto to Active Directory guide.

Request installation support