Onboard a new hire
This guide automates the routine part of onboarding. When HR submits a form for a new hire, the workflow opens an onboarding issue in Jira with a task each for IT, facilities, and the hiring manager, and emails the manager a link to it. On the new hire’s start date, a second workflow invites them to the company and team channels in Slack and sends them a welcome message.
The two workflows run weeks apart, and a single run can wait for 24 hours at most. So the form workflow saves the new hire under their start date in Storage, and the daily workflow reads the list for today.
| Workflow | Trigger | What it does |
|---|---|---|
| Start onboarding for a new hire | Form submission | Opens the Jira issue and its tasks, emails the manager, and adds the new hire to the list for their start date. |
| Welcome new hires on their start date | Schedule, daily at 09:00 | Invites the people who start today to Slack channels, and welcomes them. |
Before you start
Section titled “Before you start”- You need the Developer role in a KloudMate workspace whose plan includes workflows.
- You need a Jira Cloud connection and a Slack connection, both with the Workflows capability.
- Pick a Jira project for onboarding issues, such as your IT or HR project. The project needs an issue type for the onboarding issue, such as Task, and a subtask type, usually called Sub-task or Subtask.
- Invite the KloudMate bot to the Slack channels that new hires join: one for the whole company, and one for each team.
- The people who submit the form need to be members of your KloudMate workspace, because the form has Sign-in required turned on.
Step 1: Save your Jira address as a variable
Section titled “Step 1: Save your Jira address as a variable”The email to the manager links to the onboarding issue. Open Workflows → Variables and create a Constant named jira_url, with your Jira site’s address as its value, such as https://acme.atlassian.net. If you followed another guide that uses it, it’s already there.
Step 2: Import the form workflow
Section titled “Step 2: Import the form workflow”- Copy the YAML below. To use your own teams, change the
optionsof theteaminput. - Open Workflows, click Import, paste the YAML, and click Import.
- Click Open workflow, and on every Jira step, pick your Jira connection and the Site. Then set the project and the issue type:
- On Open the onboarding issue, pick the project and an issue type such as Task.
- On the three task steps, pick the same project and its subtask type.
Step 3: Import the daily workflow
Section titled “Step 3: Import the daily workflow”- Copy the YAML below. If you changed the teams in the form, change the Route paths in Which team? to match.
- Import it the same way.
- On every Slack step, pick your Slack connection. On each Invite to … step, pick the channel it names.
- On the trigger, set Timezone to your office’s timezone, such as
Europe/London.
How the form workflow works
Section titled “How the form workflow works”The form
Section titled “The form”The Form submission trigger asks for the new hire’s name, email, and team, their manager_email, and their start_date. A Choice input lists the teams, so the value always matches one of the Route paths in the daily workflow.
There’s no date input type, so start_date is Text. A Branch checks that it matches regex ^[0-9]{4}-[0-9]{2}-[0-9]{2}$, the form 2026-11-02, because the daily workflow looks the new hire up by a date in exactly that form. If the date doesn’t match, the Else block emails the person who submitted the form, at {{ trigger.submitted_by.email }}, and nothing is created.
Open the onboarding issue
Section titled “Open the onboarding issue”A Jira Create Issue step opens one issue for the whole onboarding, with the details in its description. Jira reads *text* in a description as bold:
Create the onboarding tasks
Section titled “Create the onboarding tasks”A Parallel step creates the three tasks at the same time, one in each branch. Each task is a Jira Create Issue step with the subtask issue type, and its Extra fields set the onboarding issue as its parent:
The manager’s branch looks the manager up with Jira Find User first, and assigns them the task by adding "assignee": { "accountId": "{{ steps.find_manager.output.users.0.accountId }}" } to Extra fields. The tasks for IT and facilities stay unassigned, for those teams to pick up from the project.
Schedule the Slack welcome
Section titled “Schedule the Slack welcome”A Storage: Add to List step adds the new hire to a list under their start date, with Scope set to This workspace so the daily workflow can read it. The key is onboarding:{{ trigger.inputs.start_date }}, so everyone who starts on the same day ends up in the same list. The Item is an object:
Skip if already there is on, so a form submitted twice by mistake doesn’t welcome someone twice. Expires after is 90d, which removes a list that nothing reads, for example after a start date moved. That also limits how far ahead the form works: a start date more than 90 days away expires before the day comes.
Email the manager
Section titled “Email the manager”A Send Email step sends the manager a link to the onboarding issue. Values from the form go through escape, so the email shows them as plain text. See Escape values in an email.
How the daily workflow works
Section titled “How the daily workflow works”Who starts today?
Section titled “Who starts today?”A Storage: Get step reads onboarding:{{ trigger.schedule.date }}. trigger.schedule.date is the run’s date in the trigger’s timezone, in the same 2026-11-02 form as the key, so the step finds the list for today. Run on weekends stays on, for anyone who starts on a weekend.
A Branch stops there when the list is empty, which is most days.
For each new hire
Section titled “For each new hire”A Loop runs once for each new hire on today’s list, with Items set to {{ steps.today.output.value }}. Inside it, item is one new hire, so item.email is their address and item.team their team.
A Slack Find User by Email step looks the new hire up in Slack. IT might not have created their account yet, so under Settings, On failure is Go to the next step, and a Branch checks whether a user came back.
For a new hire who has an account:
- A Slack Invite to Channel step invites them to the company channel.
- A Route invites them to their team’s channel. Each path runs when
item.teamequals its team’s name. - A Slack Send Direct Message step welcomes them.
Slack refuses to invite someone who is already in a channel, and returns an error. The invite steps have On failure set to Go to the next step, so someone who joined a channel early still gets the rest of their welcome.
For a new hire without an account, a Send Email step tells their manager, so someone can invite them by hand.
Clear today’s list
Section titled “Clear today’s list”After the loop, a Storage: Remove step deletes today’s list, since nothing needs it again.
Step 4: Test and publish
Section titled “Step 4: Test and publish”The daily workflow finds a new hire only on their start date, so test it with a start date that matches its trigger sample:
- In the daily workflow, open the trigger’s Test tab and click Test trigger. The sample’s
dateis the next day the workflow runs. - Publish the form workflow. The first publish also switches it on, and the form goes live.
- Open the form workflow’s trigger, copy the Public form URL, and submit the form for a test hire. Use your own email address as the new hire’s and the manager’s, and the
datefrom step 1 as the start date. - Check that the onboarding issue and its three tasks are in Jira, and that you got the manager’s email.
- In the daily workflow, click Test run. It reads the list for that date, and invites and welcomes you as the test hire.
- Publish the daily workflow.
Delete the test issues in Jira afterwards. The test run already removed the test hire’s list from Storage.
Adapt the workflow
Section titled “Adapt the workflow”- Add a task. Add a branch to Create the onboarding tasks with another Jira Create Issue step, such as a task for payroll.
- Let HR submit without a KloudMate account. Turn off Sign-in required on the form trigger, and keep the form’s address private. Then change To on Ask for the date again to your HR team’s address, because an open form doesn’t know who submitted it.
- Send a welcome email as well. Add a Send Email step to the daily workflow’s loop, to
{{ item.email }}, with links to your handbook and the tools the team uses. - Invite people to more channels. Add an Invite to Channel step to a team’s path in Which team?, with On failure set to Go to the next step, like the others.