Human Resources jobs in Canada

Whether you’re just beginning your career in human resources, or you’re an experienced people leader wanting that next leadership role, we’re here to help. Find out how our expert consultants can help progress your HR career.

Search for a Job

Our recruitment experience in human resources jobs

Our experienced HR recruitment team has over 20 years’ experience in placing professionals with leading employers across the country. From shaping and stewarding a positive employee experience, staff benefits, recruitment and retention strategies, learning and development opportunities and diverse and inclusive cultures, we know that HR professionals like you have a wealth of knowledge and experience – which is why we’re here to help you take your career to the next level.  

Our team recruit across a wide range of HR jobs from generalist roles to reward, talent acquisition, learning and development, DE&I, HR technology and change roles, plus many more positions in HR. 

We’re more than your average HR recruitment business; we're here as a lifelong partner to talented HR professionals like you, helping you deliver your professional responsibilities and achieve your personal ambitions.
 

Our HR recruitment process
 

Meet dedicated experts you can trust 

Your application goes directly to your very own dedicated, HR recruitment consultant. Get the knowledge, insights and honesty you deserve. Your consultant will review your experience for optimum industry traction and reach out directly to discuss your application, career history, and future ambitions.  

Check out resume advice  

Flexible interview process 

We are committed to meeting the needs of the customers we serve and, as such, your dedicated consultant will meet you virtually or in one of our many offices nearest to you.

Share your career ambitions 

We listen and provide impartial career advice to best place you in the right HR role in the right organization.  

Your specialist recruiter will leverage their employer relationships to make sure your profile gets priority. They’ll share company insights to help you prepare for your interview and be there for any feedback or questions throughout the process. 

Secure lifelong partners 

As your lifelong career partner, we will stay in touch and continue to share HR opportunities that fit your long-term career ambitions.  

Whether you’re signing a temporary contract for one week or making a permanent career move – we’re here for every step of your journey. 

*For temporary and contractor job applications - your dedicated consultant will take you through the process and advise you on the necessary requirements around compliance and reference checks. 

An error occurred while processing the template.
The following has evaluated to null or missing:
==> haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)  [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 36]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign jobsResults = haysJobsLocalSe...  [in template "20115#20151#T-HAYS-JOBS-BY-KEYWORD-WEB2" at line 26, column 13]
----
1<div class="py-16"> 
2 
3<#assign haysJobsLocalService = serviceLocator.findService("com.hays.jobs.service.HaysJobsService")> 
4<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
5<#assign mobileUrlKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_Mobile_Hostname"> 
6<#assign jobURLKey = themeDisplay.getLocale()+"."+siteType+"."+"WEB2_JobSearch"> 
7<#assign jobSearchUrl = propsUtil.get(jobURLKey)!""> 
8<#assign ucmLocale = propsUtil.get(ucmLocaleKey)!""> 
9<#assign mobilePortalUrl = propsUtil.get(mobileUrlKey) !""> 
10<#assign langId = themeDisplay.getLanguageId() /> 
11<#assign currency = staticUtil["java.util.Currency"]> 
12<#assign textFormatter = staticUtil["java.net.URLEncoder"]> 
13 
14<#assign index = 3 /> 
15<#assign jobCardTitle = ""/> 
16<#assign portalSearchURL = "" /> 
17<#assign jobFriendlyUrl = "" /> 
18<#assign jobCardSalaryDescription = ""/> 
19<#assign jobCardLocationDescription = ""/> 
20 
21<#if JobsByKewords.getSiblings()?has_content> 
22	<#list JobsByKewords.getSiblings() as cur_JobsByKeword> 
23        <#assign keyword = cur_JobsByKeword.Keyword.getData()> 
24        <#assign encodedKeyword = textFormatter.encode(keyword, "UTF-8")> 
25        <#if keyword?? && keyword?has_content> 
26            <#assign jobsResults = haysJobsLocalService.getjobs(keyword, null, null,"3", ucmLocale)> 
27            <#assign portalSearchURL = mobilePortalUrl + "/" + jobSearchUrl + "?q=${encodedKeyword}" /> 
28 
29            <#if !jobsResults.getJSONObject("result").isNull("jobs")> 
30                <div> 
31 
32                        <div class="d-flex justify-content-between align-items-end container-content flex-wrap mb-9"> 
33                            <#if cur_JobsByKeword.Title.getData()?has_content> 
34                                <h2 class="text-brand-blue font-weight-light mb-0 fs-700 fs-lg-800 mb-0 section-heading"> 
35                                    ${cur_JobsByKeword.Title.getData()?keep_before(" ")} 
36                                    <span class="font-weight-semibold">${cur_JobsByKeword.Title.getData()?keep_after(" ")}</span> 
37                                </h2> 
38                            </#if> 
39                            <#if cur_JobsByKeword.CTA.getData()?has_content> 
40                                <a class="button button--arrow button--no-style-teal-dark" href=${portalSearchURL}>${cur_JobsByKeword.CTA.getData()}</a> 
41                            </#if> 
42                        </div> 
43 
44                    <#assign resultJobs = jobsResults.getJSONObject("result").getJSONArray("jobs")> 
45                    <#assign jobsResultsLength = resultJobs.length() /> 
46                    <#assign index = (jobsResultsLength > 3)?then(3, jobsResultsLength) /> 
47 
48                    <div class="carousel"> 
49                        <ul class="container-content grid grid-3 grid-gap-16 grid-gap-lg-32 grid-lg-3"> 
50                            <#list 0..index-1 as i> 
51                                <#if jobsResultsLength != 0> 
52                                    <#if resultJobs.getJSONObject(i).has("nonFilterableCustomFields")> 
53                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("JobTitle")> 
54                                            <#assign jobCardTitle = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("JobTitle").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
55                                            <#assign jobCardTitle = jobCardTitle?replace("\\\\u(....)", "&#x$1;", "r")/> 
56                                        </#if> 
57                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocationDescription")> 
58                                            <#assign jobCardLocationDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocationDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
59                                            <#assign jobCardLocationDescription = jobCardLocationDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
60                                        </#if> 
61                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xSalaryDescription")> 
62                                            <#assign jobCardSalaryDescription = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xSalaryDescription").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
63                                            <#assign jobCardSalaryDescription = jobCardSalaryDescription?replace("\\\\u(....)", "&#x$1;", "r")/> 
64                                        </#if> 
65                                        <#if resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").has("xLocaleRecordID")> 
66                                            <#assign url = resultJobs.getJSONObject(i).getJSONObject("nonFilterableCustomFields").getJSONObject("xLocaleRecordID").getJSONArray("values")?replace("\"", "")?replace("]", "")?replace("[", "")/> 
67                                            <#assign jobUrl = url?keep_after("//")?keep_after("/") /> 
68                                          <#assign jobFriendlyUrl = mobilePortalUrl + "/" + jobUrl + "?jobSource=HaysGCJ" /> 
69                                        </#if> 
70                                    </#if> 
71                                </#if> 
72 
73                                <li class="carousel-slide"> 
74                                    <a href="${jobFriendlyUrl}" class="job-card job-card--grid-teal is-active d-block rounded-lg border border-borders py-7 pb-lg-6 pt-lg-5 px-6 d-flex"> 
75                                        <h4 class="text-black lh-title fs-500 fs-lg-600 font-weight-bold mb-4"> 
76                                            ${jobCardTitle} 
77                                        </h4> 
78                                        <ul class="font-weight-light mb-4 mb-lg-4 fs-400 fs-lg-400"> 
79                                            <li class="d-flex mb-3"> 
80                                                <svg class="feather-icon mr-3 mr-lg-5"> 
81                                                    <path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path> 
82                                                    <circle cx="12" cy="10" r="3"></circle> 
83                                                </svg> 
84                                                <span class="job-card-label font-weight-normal">${jobCardLocationDescription}</span> 
85                                            </li> 
86                                            <li class="d-flex align-items-start"> 
87                                                <div class="group-center mr-3 mr-lg-5"> 
88                                                    <svg class="feather-icon"> 
89                                                        <circle cx="12" cy="12" r="10"></circle> 
90                                                    </svg> 
91                                                     <span> 
92                                                        <#if langId == "en_AE" || langId == "en_CZ" || langId == "en_PL"> 
93                                                            <svg class="feather-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" style="width:13px;height:13px"> 
94                                                                <path d="M13 5C13 6.10457 10.5376 7 7.5 7C4.46243 7 2 6.10457 2 5M13 5C13 3.89543 10.5376 3 7.5 3C4.46243 3 2 3.89543 2 5M13 5V9.45715C11.7785 9.82398 11 10.3789 11 11M2 5V17C2 18.1046 4.46243 19 7.5 19C8.82963 19 10.0491 18.8284 11 18.5429V11M2 9C2 10.1046 4.46243 11 7.5 11C8.82963 11 10.0491 10.8284 11 10.5429M2 13C2 14.1046 4.46243 15 7.5 15C8.82963 15 10.0491 14.8284 11 14.5429M22 11C22 12.1046 19.5376 13 16.5 13C13.4624 13 11 12.1046 11 11M22 11C22 9.89543 19.5376 9 16.5 9C13.4624 9 11 9.89543 11 11M22 11V19C22 20.1046 19.5376 21 16.5 21C13.4624 21 11 20.1046 11 19V11M22 15C22 16.1046 19.5376 17 16.5 17C13.4624 17 11 16.1046 11 15" stroke="" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
95                                                            </svg> 
96                                                        <#else> 
97                                                            ${currency.getInstance(themeDisplay.getLocale()).getSymbol(themeDisplay.getLocale())} 
98                                                        </#if> 
99                                                    </span> 
100                                                </div> 
101                                                <span class="job-card-label font-weight-normal">${jobCardSalaryDescription}</span> 
102                                            </li> 
103                                        </ul> 
104 
105                                        <div class="job-card__action"> 
106                                            <#if (JobDetailText.getData())??> 
107                                                <button onClick="location.href='${jobFriendlyUrl}'" class="button button--small button--teal-dark button--arrow"> 
108                                                    ${JobDetailText.getData()} 
109                                                </button> 
110                                            </#if> 
111                                        </div> 
112 
113                                    </a> 
114                                </li> 
115                            </#list> 
116                        </ul> 
117                    </div> 
118                </div> 
119                <br/> 
120            </#if> 
121        </#if> 
122    </#list> 
123</#if> 
124</div> 
Man standing up and wearing a white t-shirt

I recently secured an HR position through Taylor. She maintained consistent contact with me. Would highly recommend her as someone who can deliver for a candidate.

-Jeff

Human resources jobs FAQs

Soft skills that employers are looking for include communication and interpersonal skills, the ability to implement change, flexibility and adaptability, problem-solving and critical thinking.

Technical skills that are desired include experience working with talent management systems and databases, interviewing, onboarding and offboarding, organization and multitasking.

Salaries can vary depending on experience and sector. A Compensation Manager can earn $130,000 across the country while an HR Business Partner can expect a salary ranging in $100,000 up to $120,000. The Generalist can earn $85,000 and a Director would earn between $140,000 and $190,000.

Explore the different HR roles we have available.

Our recruitment process