HR · n8n

Auto-Provision Google Workspace Accounts for Every New BambooHR Hire

When a new employee is added in BambooHR, this workflow automatically creates their Google Workspace account so they are ready to work on day one. HR managers save hours of manual setup and eliminate provisioning delays.

difficulty Intermediatesetup 45 minresult A fully provisioned Google Workspace user account is created the moment a new hire appears in BambooHR, with name, email, and department pre-filled.
  1. 1

    Poll BambooHR for New Employees

    Add an HTTP Request node set to GET against the BambooHR API endpoint https://<your-subdomain>.bamboohr.com/api/gateway.php/<your-subdomain>/v1/employees/changed/?since={{$now.minus(1,'hour').toISO()}}. In the Authentication field choose Header Auth and add your BambooHR API key as Authorization: Basic <base64(apikey:x)>. Set the node to run on a schedule trigger every hour using n8n's built-in cron. This node detects employees added or updated in the last hour.

  2. 2

    Fetch Full Employee Details

    Add a second HTTP Request node that calls https://<your-subdomain>.bamboohr.com/api/gateway.php/<your-subdomain>/v1/employees/{{$json["employeeId"]}}?fields=firstName,lastName,workEmail,department,jobTitle. Use the same Header Auth credential. This pulls the complete profile needed to build the Google Workspace account.

  3. 3

    Check if a Work Email Already Exists

    Add an IF node with the condition {{$json["workEmail"]}} is not empty. Route the true branch to the next step and leave the false branch empty. This prevents creating accounts for employees who were updated rather than newly hired and who already have an email assigned.

  4. 4

    Create the Google Workspace User

    Add a Google Workspace node (type n8n-nodes-base.googleWorkspace), set Resource to User and Operation to Create. Map Primary Email to {{$json["workEmail"]}}, First Name to {{$json["firstName"]}}, Last Name to {{$json["lastName"]}}, and Password to a temporary default such as Welcome2024! (employees will be forced to reset on first login). Connect your Google Workspace OAuth2 credential in the Credential field. In node notes, add a reminder to enable the Change Password at Next Login toggle.

  5. 5

    Log the Provisioned Account to Google Sheets

    Add a Google Sheets node with Operation set to Append Row. Point it to a sheet named Provisioned Accounts with columns Date, Full Name, Email, Department, and Job Title. Map {{$now.toISO()}}, {{$json["firstName"]}} {{$json["lastName"]}}, {{$json["workEmail"]}}, {{$json["department"]}}, and {{$json["jobTitle"]}} to the respective columns. This gives HR a live audit log of every account created.

Frequently asked questions

What if the new employee does not have a work email set in BambooHR yet?

The IF node in step 3 filters out any employee record where the workEmail field is empty, so no account creation is attempted. Once HR adds the work email in BambooHR, the next hourly poll will pick it up and trigger provisioning.

Can I assign the new user to a specific Google Workspace organizational unit automatically?

Yes. In the Google Workspace Create User node, expand the Additional Fields section and set the `Org Unit Path` field. You can use an expression like `/{{$json["department"]}}` to route employees into department-named OUs, as long as those OUs already exist in your Google Admin console.

How do I make the temporary password more secure?

Replace the hardcoded password with a `Set` node placed before the Google Workspace node that generates a random string using the expression `{{$randomString(12)}}`. Pass that value into the Password field and also log it temporarily to Google Sheets so HR can share it securely with the new hire before they log in for the first time.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.