CINXE.COM
Career, Hiring & Employer Advice | Robert Half
<!DOCTYPE HTML> <html lang="en-CA"> <head> <meta charset="UTF-8"/> <script defer="defer" type="text/javascript" src="/.rum/@adobe/helix-rum-js@%5E2/dist/rum-standalone.js"></script> <link rel="icon" type="image/x-icon" href="/content/dam/roberthalf/favicon.png"/> <meta name="template" content="full-width-page-content"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="robots" content="index, follow"/> <link rel="canonical" href="https://www.roberthalf.com/ca/en/insights"/> <script> var salaryGuideGatingProperties = '{ enabled: false, redirectLocation: "null", key: "null" }'; if (salaryGuideGatingProperties.redirectLocation && !salaryGuideGatingProperties.redirectLocation.endsWith(".html")) { salaryGuideGatingProperties.redirectLocation += ".html"; } window.salaryGuideGatingProperties = salaryGuideGatingProperties; window.passesSalaryGuideGating = function() { if ( salaryGuideGatingProperties.enabled != undefined && salaryGuideGatingProperties.enabled.toString().toLowerCase() === "true" && window.localStorage.getItem("salaryGuideGatingKey") != salaryGuideGatingProperties.key && window.location.pathname != salaryGuideGatingProperties.redirectLocation ) { return false; } return true; } </script> <link media="print" rel="stylesheet" href="/etc.clientlibs/roberthalf/clientlibs/clientlib-base.lc-aadab028fda76fa101c57a36121a8a16-lc.min.css" type="text/css"> <script> let css = document.querySelector('link[media="print"]'); if(css) { css.media = "all"; } </script> <script> // window function to fetch UPO function getUPO() { let upoString = localStorage.getItem("unifiedProfileObject"); if (upoString === null || upoString === undefined) { return {}; } let parsedObject = decodeURIComponent(atob(upoString)); return JSON.parse(parsedObject); } // window function to update UPO async function setUPO(unifiedProfileObject) { const encodedString = btoa(encodeURIComponent(JSON.stringify(unifiedProfileObject))); localStorage.setItem("unifiedProfileObject", encodedString); await window.yieldToMain?.(); } </script> <script> window.addEventListener("rhcl-initialized", () => { window.setTimeout(handleClLoaded, 250); }); // Backup in case events do not sync up window.setTimeout(handleClLoaded, 5000); function handleClLoaded() { document.querySelector('style[data-source="rh-slot-style"]')?.remove(); } </script> <link rel="preload stylesheet" as="style" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/libraries/fontawesome6/css/all.css"/> <link rel="preload stylesheet" as="style" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/css/rhcl.css"/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-display-light-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-display-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-italic-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-light-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-lightitalic-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-medium-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-regular-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/NotoSans/notosans-semibold-webfont.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/fontawesome6/fa-regular-400.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/fontawesome6/fa-solid-900.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/fontawesome6/fa-light-300.woff2" as="font" crossorigin/> <link rel="preload" href="https://resources.roberthalfonline.com/rhcl/v25.3.0/assets/Fonts/fontawesome6/fa-brands-400.woff2" as="font" crossorigin/> <script type="module" src="https://resources.roberthalfonline.com/rhcl/v25.3.0/lib/rhcl.esm.js" async></script> <style data-source="rh-slot-style"> [slot], rhcl-typography, rhcl-heading, rhcl-typeahead, .rhcl-typography, .rhcl-focused-search-block, .rhcl-block-paginated-feature, rhcl-modal, rhcl-block-stacking-cards, rhcl-block-focused-search, rhcl-search-bar, rhcl-button-group, rhcl-block-paired-content, .cmp-rhcl-focused-block-wrapper .cmp-rhcl-stacking-cards-block-wrapper, .cmp-container { visibility: hidden; } [slot]{font-family: "Noto Sans Regular";} h1[slot],h2[slot],h3[slot],h4[slot],h5[slot],h6[slot],p[slot]{ font-family: "Noto Sans Display";} </style> <script type="text/javascript"> window.pageObj = {}; izCountries = 'gb,de,fr,ch,cn,jp,cl,at,ae,be,nl,nz,hk,br,sg,au,lu'.split(","); naCountries = 'us,ca'.split(","); luxCountries = 'us,ca,de,be,gb'.split(","); euCountries = 'gb,de,fr,ch,at,ae,be,nl'.split(","); aemSettings ={ "rh_account_creation": { accountCheckEndpoint: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Daccount\/search?candidate_email=', accountCreateResendEmailEndpoint: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/salesforce\u002Dapi\/resend\u002Demail', accountRoutingMap: { "email": '\/ca\/en\/find\u002Dyour\u002Dsolution\/email\u002Dverification\/app', "resume": '\/ca\/en\/find\u002Djobs\/upload\u002Dresume\/app', "candidate-email": '\/ca\/en\/find\u002Djobs\/upload\u002Dresume\/email\u002Dverification\/app', "msjo": '\/ca\/en\/find\u002Dyour\u002Dsolution\/app', "login": 'https:\/\/online.roberthalf.com\/s\/login?', "pendingAccount": '\/ca\/en\/find\u002Dyour\u002Dsolution\/email\u002Dverification\/app', "expiredVerification": '\/ca\/en\/find\u002Dyour\u002Dsolution\/email\u002Dverification\/app', "hasWebAccountClientOnly": 'https:\/\/online.roberthalf.com\/s\/login?', "hasWebAccount": 'https:\/\/online.roberthalf.com\/s\/login?', } }, "rh_candidate_apply": { aiConsentEndpoint: 'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/update\u002Dai\u002Dconsent', accountCheckEndpoint:'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Daccount\/search?candidate_email=', accountCreateEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/create\u002Daccount', directAccountCreateEndpoint: '', applyEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/job\u002Dapply', resendEmailEndpoint: '', submitResumeEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/submit\u002Dresume', resumeParseEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/parse\u002Dresume\/parse', xingUploadResumeEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/xing\u002Dresume', linkedInUploadResumeEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/job\u002Dapply\/linkedin\u002Dresume', geolocationEndpoint:'https:\/\/gen.api.roberthalfonline.com\/geocode\/getGeoByRegion?country_code=', googleGeoCodeEndpoint:'https:\/\/gen.api.roberthalfonline.com\/googlegeo\/getGeocode?address=', timezoneEndpoint:'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/timezone\/getTimezone', fetchSkills:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/fetch\u002Dskills', patchSkills:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/patch\u002Dskills', fetchResume:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/job\u002Dapply\/fetch\u002Dresume', jobTypeValuesEndpoint:'https:\/\/gen.api.roberthalfonline.com\/iz\u002Dbranch\u002Dservice\/findJobTypeList', specializationValuesEndpoint:'https:\/\/gen.api.roberthalfonline.com\/iz\u002Dbranch\u002Dservice\/findSpecializationList', nearestOfficeValuesEndpoint:'https:\/\/gen.api.roberthalfonline.com\/iz\u002Dbranch\u002Dservice\/findOfficeList', xingPluginScript:'https:\/\/www.xing\u002Dshare.com\/plugins\/login_plugin.js', xingId:'82ac2657946cd0af3fa4' }, "rh_client_payment" :{ profileId:'EB9BBCE6\u002D70F7\u002D41BB\u002DB03B\u002DA8C27BB01D8E', accessKey: '5a4ab6d640e03d4dba86c1f9da33cf0b', maintenanceMode: 'false', cybersourceEndpoint:'https:\/\/secureacceptance.cybersource.com\/embedded\/pay', invoiceEndpoint:'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/cpp', }, "rh_job_search": { getAndSetSavedJobsEndpoint:'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/get\u002Dand\u002Dset\u002Djob\/query', jobAlertsEndpoint:'https:\/\/prd\u002Ddr.ma.api.roberthalfonline.com\/job\u002Dalerts\/subscribe', jobInterestEndpoint:'https:\/\/prd\u002Ddr.jps.api.roberthalfonline.com\/presented\u002Djob\/jobinterest', jobSearchEndpoint:'https:\/\/prd\u002Ddr.jps.api.roberthalfonline.com\/search', quickApplyEndpoint:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/quick\u002Dapply', signInLink:'https:\/\/www.roberthalf.com\/login.rhlogin', jobSearchLocationTypeaheadEndpoint:'https:\/\/gen.api.roberthalfonline.com\/auto\u002Dcomplete\u002Daem\/search', feedbackDestinationEditAvailability:'avail', feedbackDestinationEditLocation:'loc', feedbackDestinationEditPayPreference:'pref', feedbackDestinationEditSkills:'skills', jobInterestFeedback:'https:\/\/prd\u002Ddr.rf.api.roberthalfonline.com\/candidate\u002Dapply\/feedback' }, "rh_multistep_job_order" :{ leadsProcessingEndpoint:'https:\/\/prd\u002Ddr.lp.api.roberthalfonline.com\/proxy\u002Dlead\u002Dprocessing\/send', jobFunctionTypeahead:'https:\/\/gen.api.roberthalfonline.com\/auto\u002Dcomplete\u002Daem\/job\u002Dfunction', skillSearch: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Dskills\/skillSearch', skillsRecommendation: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Dskills\/skillRecommendation', sfccRedirectUrl: 'https:\/\/online.roberthalf.com', accountCheckEndpoint: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Daccount\/search?candidate_email=', }, "rh_candidate_discovery": { accountCheckEndpoint:'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/sf\u002Daccount\/search?candidate_email=', candidateJobTitleTypeaheadEndpoint: 'https:\/\/gen.api.roberthalfonline.com\/auto\u002Dcomplete\u002Daem\/job\u002Dfunction', candidateLocationTypeaheadEndpoint: 'https:\/\/gen.api.roberthalfonline.com\/auto\u002Dcomplete\u002Daem\/search' }, "rh_common": { geolocationEndpoint: 'https:\/\/gen.api.roberthalfonline.com\/googlegeo\/getReverseGeocode', personDetailsEndpoint: '\/bin\/personDetails', recaptchaEndpoint: 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/recaptcha\/verify\u002Dtoken', page_section: 'Blog', page_user_type: 'Client and Candidate', page_type: '', isLuxCountry: 'true' } }; var articleDataLayer = { blog_type:'', industry_name :'', country_code :'', language :'', entityid :'', author_name :'', thumbnail_url :'', title :'', description :'', employment_type :'', published_date :'', page_url :'', categories :'', Article_tag :'' }; pageObj.__extrasettings__ = { language: 'en', country: 'ca' }; </script> <script type="text/javascript"> aemSettings.rh_common.recaptchaEndpoint = 'https:\/\/prd\u002Ddr.gen.api.roberthalfonline.com\/recaptcha\/verify\u002Dtoken'; </script> <title>Career, Hiring & Employer Advice | Robert Half </title> <meta property="page-type" content="Other"/> <meta property="global-content-type" content="Blog"/> <meta property="global-content-user-focus" content="Client and Candidate"/> <meta property="og:locale" content="en_CA"/> <meta property="og:updated_time" content="2024-06-26T21:18:29+0000"/> <meta property="og:type" content="website"/> <meta property="og:site_name" content="Robert Half Canada"/> <meta property="og:image" content="https://www.roberthalf.com/content/dam/roberthalf/rh.png"/> <meta property="og:image:type" content="image/png"/> <meta property="og:image:width" content="500"/> <meta property="og:image:height" content="500"/> <meta property="og:image:alt" content="rh-logo"/> <meta property="og:url" content="https://www.roberthalf.com/ca/en/insights"/> <meta property="og:title" content="Career, Hiring & Employer Advice"/> <meta property="og:description" content="Explore our exclusive research and actionable insights from industry-leading specialists to help transform your business or guide your career. "/> <meta name="title" content="Career, Hiring & Employer Advice | Robert Half "/> <meta name="description" content="Explore our exclusive research and actionable insights from industry-leading specialists to help transform your business or guide your career. "/> <meta property="og:publication_time" content="2023-06-14T08:59:46+0000"/> <script> (function() { window.SM_SPLITSIGNAL = window.SM_SPLITSIGNAL || {ready: false} window.addEventListener( 'splitsignal.initialized', function() { if (!aemSettings.isReactApp) { window.SM_SPLITSIGNAL.ready = true } } ) var script = document.createElement('script') script.id = 'a4a03573-e3f5-4f01-8963-395af304b0b2' script.src = 'https://seoab.io/react/' script.type = 'module' script.defer = true document.head.appendChild(script) })() </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebPage", "name" : "Career, Hiring & Employer Advice | Robert Half ", "url": "https://www.roberthalf.com/ca/en/insights", "isPartOf": { "@type": "WebSite", "name": "Robert Half", "url": "https://www.roberthalf.com/ca/en", "publisher": { "type": "Organization", "name": "Robert Half", "legalName": "Robert Half Inc.", "url": "https://www.roberthalf.com/ca/en", "@id": "https://www.roberthalf.com/ca/en" } }, "mainEntity": [""], "mainEntityOfPage": "https://www.roberthalf.com/ca/en/insights" } </script> <script async defer src="/etc.clientlibs/roberthalf/clientlibs/clientlib-clientId.lc-816e4fe05c72b7567d3214430c031c84-lc.min.js"></script> <script type="text/javascript"> function ready(a){if("function"!==typeof a)throw Error("Argument passed to ready should be a function");"loading"!=document.readyState?a():document.addEventListener?document.addEventListener("DOMContentLoaded",a,{once:!0}):document.attachEvent("onreadystatechange",function(){"loading"!=document.readyState&&a()})}; </script> <script async defer src="/etc.clientlibs/roberthalf/clientlibs/clientlib-base.lc-cd1db14a92651d76445b7ea2ff43a080-lc.min.js"></script> <!-- Language And Country en-ca Country ca--> <!-- OptanonConsentNoticeStart --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-language="en-ca" type="text/javascript" charset="UTF-8" data-domain-script="018f54c3-a48a-7cfd-9399-07bc2d5352b5" async defer></script> <script type="text/javascript"> function OptanonWrapper() { checkConsentValues(); } </script> <!-- OptanonConsentNoticeEnd --> <!-- Check Cookie Value Start--> <script type="text/javascript"> var isPerformanceCookiesChecked = false; function checkConsentValues() { var consentRatio = getOptanonConsentRatio(); if (consentRatio != null && consentRatio.includes("2:1")) { isPerformanceCookiesChecked = true; var oneTrustEvent = new CustomEvent("rh-onetrust-accepted", { "detail": "vanilla js version of one trust event" }); var oneTrustJSEvent = new CustomEvent("rh-onetrust-accepted-js", { "detail": "vanilla js version of one trust event" }); document.dispatchEvent(oneTrustJSEvent); document.dispatchEvent(oneTrustEvent); } } window.setTimeout(checkConsentValues, 2000); function getCookie(cname) { var name = cname + '='; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return false; } function getOptanonConsentRatio() { const queryParams = new URLSearchParams(getCookie("OptanonConsent")); return queryParams.get('groups'); } </script> <!-- Check Cookie Value End--> <!-- TealiumStart --> <script type="text/javascript"> var utag_data = {"pageType":null,"pageSection":"section","pageName":"English","countryCode":"ca","currencyCode":"USD"}; // This script is provided, don't change without consulting the analytics team (function (a, b, c, d) { a = 'https://tags.roberthalf.com/canada2/prod/utag.js'; b = document; c = 'script'; d = b.createElement(c); d.src = a; d.type = 'text/java' + c; d.async = true; a = b.getElementsByTagName(c)[0]; a.parentNode.insertBefore(d, a); })(); </script> <script async defer src="/etc.clientlibs/roberthalf/clientlibs/clientlib-tealium.lc-1343a64b313c1ba8ca2cb65523ffa1e1-lc.min.js"></script> <!-- TealiumEnd --> <!-- InvocaStart --> <script> window.setTimeout(loadInvoca, 2000); function loadInvoca() { if (isPerformanceCookiesChecked) { // This script is provided, don't change without consulting the analytics team (function (i, n, v, o, c, a) { i.InvocaTagId = o; var s = n.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = ('https:' === n.location.protocol ? 'https://' : 'http://') + v; var fs = n.getElementsByTagName('script')[0]; fs.parentNode.insertBefore(s, fs); })(window, document, 'solutions.invocacdn.com/js/invoca-latest.min.js', '479/3627146293'); } else { document.addEventListener("rh-onetrust-accepted", loadInvoca); } } </script> <!-- InvocaEnd --> <!-- UtagStart --> <script> window.setTimeout(loadUtagSync, 2000); //Adding this function to prevent flicker happening because of utag.sync.js function makeBodyVisible() { let style = document.createElement("style"); style.textContent = "body { display: block !important; opacity: 1 !important; }"; if (document.body) { document.body.appendChild(style); } else { window.ready(function () { document.body.appendChild(style); }); } } function loadUtagSync() { if (isPerformanceCookiesChecked) { (function (document, scriptUrl) { makeBodyVisible(); var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = scriptUrl; var fs = document.getElementsByTagName('script')[0]; fs.parentNode.insertBefore(s, fs); })(document, 'https://tags.roberthalf.com/canada2/prod/utag.sync.js'); } else { document.addEventListener("rh-onetrust-accepted", loadUtagSync); } } </script> <!-- UtagEnd --> <script async src="/etc.clientlibs/core/wcm/components/commons/datalayer/v2/clientlibs/core.wcm.components.commons.datalayer.v2.lc-1e0136bad0acfb78be509234578e44f9-lc.min.js"></script> <script async src="/etc.clientlibs/core/wcm/components/commons/datalayer/acdl/core.wcm.components.commons.datalayer.acdl.lc-bf921af342fd2c40139671dbf0920a1f-lc.min.js"></script> </head> <body class="page basicpage" id="page-90e52b4c35" data-cmp-link-accessibility-enabled data-cmp-link-accessibility-text="opens in a new tab" data-cmp-data-layer-enabled data-cmp-data-layer-name="adobeDataLayer"> <script> var dataLayerName = 'adobeDataLayer' || 'adobeDataLayer'; window[dataLayerName] = window[dataLayerName] || []; window[dataLayerName].push({ page: JSON.parse("{\x22page\u002D90e52b4c35\x22:{\x22@type\x22:\x22roberthalf\/components\/structure\/page\/page\x22,\x22repo:modifyDate\x22:\x222024\u002D06\u002D26T21:18:29Z\x22,\x22dc:title\x22:\x22INSIGHTS\u002D01 | Discover Insights\x22,\x22dc:description\x22:\x22Explore our exclusive research and actionable insights from industry\u002Dleading specialists to help transform your business or guide your career. \x22,\x22xdm:template\x22:\x22\/conf\/roberthalf\/settings\/wcm\/templates\/full\u002Dwidth\u002Dpage\u002Dcontent\x22,\x22xdm:language\x22:\x22en\u002DCA\x22,\x22xdm:tags\x22:[],\x22repo:path\x22:\x22\/content\/roberthalf\/ca\/en\/insights.html\x22}}"), event:'cmp:show', eventInfo: { path: 'page.page\u002D90e52b4c35' } }); </script> <rhcl-base path="https://resources.roberthalfonline.com/rhcl/v25.3.0" locale="en-CA"></rhcl-base> <div class="root container-fluid cmp-container"> <div id="container-da5f14ae6e" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="experiencefragment aem-GridColumn aem-GridColumn--default--12"> <div id="experiencefragment-ca4ead7c74" class="cmp-experiencefragment cmp-experiencefragment--header"> <div id="container-051b1a157e" class="cmp-container"> <div class="root container-fluid cmp-container"> <div class="cq-placeholder" data-emptytext="Navigation: Header"> </div> <div id="header-4c67c45366" class="cmp-container"> <div id="skipToMainContent"></div> <script> // needs to run once on any page with a nav header function identifyFirstComponent() { try { const excludedTags = ["RHCL-BLOCK-NAVIGATION", "RHCL-BLOCK-COOKIE-BAR"]; const rhclContentBlocks = Array.from(document.querySelectorAll("body *")) .filter( (elem) => elem.tagName.startsWith("RHCL-BLOCK") || elem.classList.contains("rh-homepage-hero") || elem.classList.contains("rh-first-component") ) .filter((elem) => !excludedTags.includes(elem.tagName)); const maxTries = 10; let tries = 1; const nav = document.querySelector("rhcl-block-navigation"); if (nav && nav.getAttribute("background") == "transparent") { // find first component if (rhclContentBlocks.length > 0) { rhclContentBlocks[0].setAttribute( "data-first-component-padded", "true" ); } else { tries++; if (tries <= maxTries) { setTimeout(identifyFirstComponent, 500); } } } else { const hero = document.querySelector(".rh-homepage-hero"); if (hero) { hero.removeAttribute("data-first-component-padded"); } } } catch (error) { console.log(error); } } window.ready(() => { window.dispatchEvent(new Event("scroll")); identifyFirstComponent(); }); </script> <rhcl-block-navigation branding-destination="/ca/en" account-menu-label="My Account" branding-external="false" branding-title="Robert Half" sign-in-label="Sign in" sign-in-destination="/login.rhlogin?language=en&country=ca" background="white" theme="light"> <rhcl-navigation-item slot="navigation-item" destination="/ca/en/find-jobs" label="Find Jobs" cta-heading-label="Control your career. Find the right role for you - remote, hybrid or on-site." cta-label="Find your next job" cta-destination="/ca/en/find-jobs" cta-external="false" cta-variant="primary"> <!-- using dynamic media template --> <img slot="accent-image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 307px,(min-width: 768px) 230px,(min-width: 0px) 288px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-findjobs?$Squircle1-Large-1x$&fmt=webp-alpha 307w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-findjobs?$Squircle1-Medium-1x$&fmt=webp-alpha 230w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-findjobs?$Squircle1-Small-1x$&fmt=webp-alpha 288w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-findjobs?$Squircle1-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> <rhcl-list-base slot="secondary-nav-content"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/jobs">Browse jobs</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/find-jobs/upload-resume">Find the right job type for you</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/find-jobs/partner">Explore how we help job seekers</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="gradient-content" headline="Areas of expertise" layout="column"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/accounting-finance">Finance and Accounting</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/tech-it">Technology</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/marketing-creative">Marketing and Creative</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/administrative">Administrative and Customer Support</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/legal">Legal</a> </rhcl-menu-link> </rhcl-list-base> </rhcl-navigation-item> <rhcl-navigation-item slot="navigation-item" destination="/ca/en/hire-talent" label="Hire Talent" cta-heading-label="We're ready to help you hire talent at every level, from office support roles to C-suite." cta-label="Hire talent" cta-destination="/ca/en/hire-talent" cta-external="false" cta-variant="primary"> <!-- using dynamic media template --> <img slot="accent-image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 307px,(min-width: 768px) 230px,(min-width: 0px) 288px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-hiretalent?$Squircle1-Large-1x$&fmt=webp-alpha 307w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-hiretalent?$Squircle1-Medium-1x$&fmt=webp-alpha 230w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-hiretalent?$Squircle1-Small-1x$&fmt=webp-alpha 288w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-hiretalent?$Squircle1-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> <rhcl-list-base slot="secondary-nav-content" headline="Staffing"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/hire-talent/find-candidates">Preview candidates (NEW!)</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/hire-talent/flexible-staffing">Contract talent</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/hire-talent/full-time-staffing">Permanent talent</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/hire-talent/partner">Learn how we work with you</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="secondary-nav-content" headline="Retained services"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/hire-talent/executive-search">Executive search</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="gradient-content" headline="Areas of expertise" layout="column"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/accounting-finance">Finance and Accounting</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/tech-it">Technology</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/marketing-creative">Marketing and Creative</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/administrative">Administrative and Customer Support</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/legal">Legal</a> </rhcl-menu-link> </rhcl-list-base> </rhcl-navigation-item> <rhcl-navigation-item slot="navigation-item" destination="/ca/en/consulting" label="Explore Consulting Solutions" cta-heading-label="See how our consulting capabilities can help transform your business." cta-label="Explore consulting solutions" cta-destination="/ca/en/consulting" cta-external="false" cta-variant="primary"> <!-- using dynamic media template --> <img slot="accent-image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 307px,(min-width: 768px) 230px,(min-width: 0px) 288px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-exploreconsultingsolutions?$Squircle1-Large-1x$&fmt=webp-alpha 307w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-exploreconsultingsolutions?$Squircle1-Medium-1x$&fmt=webp-alpha 230w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-exploreconsultingsolutions?$Squircle1-Small-1x$&fmt=webp-alpha 288w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-exploreconsultingsolutions?$Squircle1-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> <rhcl-list-base slot="gradient-content" headline="AREAS OF EXPERTISE" layout="column-two"> <rhcl-menu-link slot="item" description="Cloud • Cybersecurity • Data & Analytics • Data Privacy • Intelligent Automation • IT Service Desk"> <a slot="item" href="/ca/en/consulting/tech">Technology</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="Internal Audit • Regulatory Compliance • Financial Crimes Compliance • Risk Management • Sarbanes-Oxley"> <a slot="item" href="/ca/en/consulting/risk-compliance-audit">Risk, Audit and Compliance</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="Finance Transformation • Process Optimization • Finance Technology & Data • Reporting & Compliance • Cost & Performance Management"> <a slot="item" href="/ca/en/consulting/finance">Finance and Accounting</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="Digital Transformation • Marketing Services • Marketing Technology • Creative and Design"> <a slot="item" href="/ca/en/consulting/digital">Digital, Marketing and Customer Experience</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="Data Privacy • Legal Consulting • Transaction Services"> <a slot="item" href="/ca/en/consulting/legal">Legal</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="Contact Centres • Sustainability • Operational Effectiveness • Supply Chain • Sourcing & Procurement"> <a slot="item" href="/ca/en/consulting/administrative">Operations</a> </rhcl-menu-link> <rhcl-menu-link slot="item" description="HR Transformation • Employee Experience • Managed Talent • Future of Work • Organizational Transformation"> <a slot="item" href="/ca/en/consulting/human-resources">Human Resources</a> </rhcl-menu-link> </rhcl-list-base> </rhcl-navigation-item> <rhcl-navigation-item slot="navigation-item" destination="/ca/en/insights" label="Discover Insights" cta-heading-label="Make smarter decisions with the latest hiring trends and career insights." cta-label="Discover Insights" cta-destination="/ca/en/insights" cta-external="false" cta-variant="primary"> <!-- using dynamic media template --> <img slot="accent-image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 307px,(min-width: 768px) 230px,(min-width: 0px) 288px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-discoverinsights?$Squircle1-Large-1x$&fmt=webp-alpha 307w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-discoverinsights?$Squircle1-Medium-1x$&fmt=webp-alpha 230w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-discoverinsights?$Squircle1-Small-1x$&fmt=webp-alpha 288w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-nav-discoverinsights?$Squircle1-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> <rhcl-list-base slot="secondary-nav-content"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/salary-guide">2025 Salary Guide</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/salary-hiring-trends/demand-for-skilled-talent">Demand for Skilled Talent Report</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/building-tech-teams">Building Future-Forward Tech Teams</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/job-market-outlook">Job Market Outlook</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="https://press.roberthalf.ca/">Press Room</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="gradient-content" headline="Trending topics" layout="column"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/salary-hiring-trends">Salary and hiring trends</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/flexible-working">Adaptive working</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/competitive-advantage">Competitive advantage</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/work-life-balance">Work/life balance</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/insights/diversity-equity-inclusion">Diversity and inclusion</a> </rhcl-menu-link> </rhcl-list-base> </rhcl-navigation-item> <rhcl-site-search slot="site-search" search-destination="/ca/en/search?param=:1" max-results="3" theme="light"> <a slot="quick-link" href="/ca/en/jobs"><rhcl-typography variant="body2">Browse jobs</rhcl-typography></a> <a slot="quick-link" href="/ca/en/find-your-solution"><rhcl-typography variant="body2">Find your next hire</rhcl-typography></a> <a slot="quick-link" href="/ca/en/locations"><rhcl-typography variant="body2">Our locations</rhcl-typography></a> </rhcl-site-search> <rhcl-list slot="account-menu" data-header-menu-endpoint="/graphql/execute.json/roberthalf/headerMenuItems" data-folder-path="/content/dam/roberthalf/content-fragments/en_ca/account-menu-links" data-account-menu-config="{"[lux-tokens:lightning-page]":"https://online.roberthalf.com/s","[lux-tokens:visualforce-page]":"https://online.roberthalf.com","[lux-tokens:rhdirect-page]":"https://online.roberthalf.com/mpredirect","[site:url]":"https://www.roberthalf.com/"}" headline=""/> </rhcl-block-navigation> </div> <script type="text/javascript"> function initializeAccountMenu() { var accountMenu = document.querySelector('rhcl-list[slot="account-menu"]'); var userId = getCookie("apex__userid"); var userPermissions = getCookie("apex__psa"); if (!userId || !userPermissions) { if (accountMenu) { accountMenu.remove(); } return; } var userFirstName = getCookie("apex__firstname"); var userLastName = getCookie("apex__lastname"); accountMenu.setAttribute("headline", userFirstName + " " + userLastName); var userPermissionsArray = userPermissions.split(","); var accountMenuLinks = []; var accountMenuLinksAPI = accountMenu.getAttribute("data-header-menu-endpoint"); var accountMenuLinkCFFolderPath = accountMenu.getAttribute("data-folder-path"); var accountMenuConfig = accountMenu.getAttribute("data-account-menu-config"); if (!accountMenuLinkCFFolderPath) { accountMenuLinkCFFolderPath = ""; } var completeAPI = accountMenuLinksAPI + ";cfFolderPath=" + accountMenuLinkCFFolderPath; fetch(completeAPI) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { accountMenuLinks = data.data.headerMenuItemList.items; accountMenuLinks.sort(function (a, b) { return a.displayWeight - b.displayWeight }); for (var i = 0; i < accountMenuLinks.length; i++) { var accountMenuLink = accountMenuLinks[i]; if ((accountMenuLink.showToAllLoggedInUsers != null && accountMenuLink.showToAllLoggedInUsers == true) || doPermissionsMatch(accountMenuLink.permissions, userPermissionsArray)) { var menuItemElement = document.createElement("rhcl-menu-link"); var link, mobileLink; menuItemElement.setAttribute("slot", "item"); menuItemElement.setAttribute("label", accountMenuLink.linkDisplayText); menuItemElement.setAttribute("external", accountMenuLink.linkTarget); if(accountMenuLink.linkUrl){ link = modifyLink(accountMenuLink.linkUrl, accountMenuConfig); }else{ link=""; } if(accountMenuLink.mobileUrlOverride){ mobileLink = modifyLink(accountMenuLink.mobileUrlOverride, accountMenuConfig); }else{ mobileLink=""; } menuItemElement.setAttribute("destination", link); menuItemElement.setAttribute("mobile-destination", mobileLink); accountMenu.append(menuItemElement); } } }) .catch(error => { console.error('There was a problem with the fetching the account menu items:', error); }); } function getCookie(cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function doPermissionsMatch(array1, array2) { if (!array1 || !array2) { return false; } for (let i = 0; i < array2.length; i++) { if (array1.includes(array2[i].trim())) { return true; } } return false; } function modifyLink(link, accountMenuConfig) { if (accountMenuConfig) { var accountMenuConfigJSON = JSON.parse(accountMenuConfig); for (var key in accountMenuConfigJSON) { if (accountMenuConfigJSON.hasOwnProperty(key)) { link = link.replace(key, accountMenuConfigJSON[key]); } } } return link; } initializeAccountMenu(); </script> </div> </div> </div> </div> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <div id="container-c3deeff606" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <style> .model-content,.model-content form{display:flex;flex-direction:column;align-items:center} .model-content form{margin-top:52px;padding:0} .model-content rhcl-typography,.model-content rhcl-heading{text-align:center !important} .form-footer{padding:0 40px} @media screen and (max-width:767px){.form-footer{padding:0} } .form-footer .form-btn{margin-bottom:32px} .subscribe-modal-image{height:72px;width:72px;object-fit:cover;margin-bottom:32px} </style> <rhcl-block-centered-content variant="accents" quaternary-cta-external="false" tertiary-cta-external="false"> <h1 slot="headline">Own the future of your work</h1> <span slot="copy">Explore our exclusive research and actionable insights from industry-leading specialists to help transform your business or guide your career.</span> <!-- using dynamic media template --> <img slot="accent-image" loading="eager" fetchpriority="high" sizes="(min-width: 1024px) 307px,(min-width: 768px) 230px,(min-width: 0px) 288px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-361884875?$Squircle1-Large-1x$&fmt=webp-alpha 307w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-361884875?$Squircle1-Medium-1x$&fmt=webp-alpha 230w,https://s7d9.scene7.com/is/image/roberthalfintl/sq1-361884875?$Squircle1-Small-1x$&fmt=webp-alpha 288w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq1-361884875?$Squircle1-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> <!-- using dynamic media template --> <img slot="accent-image" loading="eager" fetchpriority="high" sizes="(min-width: 1024px) 480px,(min-width: 768px) 336px,(min-width: 0px) 317px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/sq2-352315130?$Squircle2-Large-1x$&fmt=webp-alpha 480w,https://s7d9.scene7.com/is/image/roberthalfintl/sq2-352315130?$Squircle2-Medium-1x$&fmt=webp-alpha 336w,https://s7d9.scene7.com/is/image/roberthalfintl/sq2-352315130?$Squircle2-Small-1x$&fmt=webp-alpha 317w" src="https://s7d9.scene7.com/is/image/roberthalfintl/sq2-352315130?$Squircle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true"/> </rhcl-block-centered-content> <script type="text/javascript"> { window.ready(() => { const stackingCardsBlocks = document.querySelectorAll( "rhcl-block-stacking-cards" ); stackingCardsBlocks.forEach((stackingCardsBlock) => { // replace tokens hyperlink = stackingCardsBlock.querySelector(".scb-hyperlink"); let redirectLocation = stackingCardsBlock.dataset.hyperlinkRedirectLocation; const cta = stackingCardsBlock.dataset.hyperlinkCta; const isTel = stackingCardsBlock.dataset.hyperlinkIsTel; if (isTel == "true") { // use the phone number from the cta for phone links redirectLocation = cta; } if (hyperlink) { hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:hyperlink]", "<a href='" + (isTel == "true" ? "tel:" : "") + redirectLocation + "' target='_blank' data-rhcl-listener='true'>" + cta + "</a>" ); } }); }); } window.addEventListener('load', () => { const centeredContentBlock = document.querySelector("rhcl-block-centered-content"); let checkboxCenter; if (centeredContentBlock != null) { checkboxCenter = centeredContentBlock.getAttribute("data-check"); } if (checkboxCenter === "enablePopUp") { centeredContentBlock.addEventListener("rhcl-button-clicked", (e) => showPopupCenteredBlock(e, centeredContentBlock)); } }); function showPopupCenteredBlock(e, centeredContentBlock) { let button = e.composedPath()[0]; if(button.componentParentRef === centeredContentBlock) { e.preventDefault(); const modalPopUp = document.getElementById("email-model") if (modalPopUp != null) { modalPopUp.setAttribute("show-modal", ""); } } } { window.ready(() => { const centeredContentBlocks = document.querySelectorAll( "rhcl-block-centered-content" ); const upo = window.getUPO(); centeredContentBlocks.forEach((centeredContentBlock) => { const email = upo.email; const searchParams = new URLSearchParams(window.location.search); const registrantId = searchParams.get("rid"); // replace tokens const hyperlink = centeredContentBlock.querySelector(".ccb-response-hyperlink") const redirectLocation = centeredContentBlock.dataset.hyperlinkRedirectLocation; const cta = centeredContentBlock.dataset.hyperlinkCta; hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:hyperlink]", "<a href='" + redirectLocation + "' target='_blank' data-rhcl-listener='true'>" + cta + "</a>" ) hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:resendNow]", "<a href='#' id='resendNowA'>" + cta +"</a>" ) // if there is no email we can't resend emails if (!email) return; if (centeredContentBlock.copy) { centeredContentBlock.copy = centeredContentBlock.copy.replaceAll( "[token:email]", email ); } if (centeredContentBlock.subheading) { centeredContentBlock.subheading = centeredContentBlock.subheading.replaceAll("[token:email]", email); } const shouldResendEmail = centeredContentBlock.dataset.resendEmail; if (shouldResendEmail) { // setup resend email logic const anchorEl = hyperlink.querySelector("#resendNowA") anchorEl.addEventListener("click", async (e) => { e.preventDefault(); const resendUrl = window.aemSettings.rh_account_creation .accountCreateResendEmailEndpoint; if (email && resendUrl && registrantId) { fetch(resendUrl, { method: "POST", body: JSON.stringify({ registrantID: registrantId, }), }); } }); } }); }); } </script> </div> <div class="cmp-rhcl-scrolling-cards-collection-block-wrapper aem-GridColumn aem-GridColumn--default--12"> <style> div.featuredcard.container{margin-left:12px !important;margin-right:12px !important} div.featuredcard.container rhcl-content-card{padding-left:12px !important;padding-right:12px !important} </style> <div id="scrollingcardscollectionblock-1dd22ea297" class="cmp-container"> <rhcl-block-scrolling-cards-collection logo="false"> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="2025 Salary Guide" copy="Explore the latest data for hundreds of positions and know what you should earn or pay in local and national markets." icon="users" cta-destination="/ca/en/insights/salary-guide" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-2151833739-sg25?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-2151833739-sg25?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-2151833739-sg25?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-2151833739-sg25?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="What jobs are in demand?" copy="Explore our Demand for Skilled Talent report to see what specializations employers need most." icon="users" cta-destination="/ca/en/insights/salary-hiring-trends/demand-for-skilled-talent" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00007-1233182203?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00007-1233182203?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00007-1233182203?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00007-1233182203?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Build employee engagement " copy="Attract and retain top talent – and boost your bottom line – with our tips for creative employee recognition and rewards. " icon="users" cta-destination="/ca/en/insights/research/employee-recognition" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00008-2036243684?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00008-2036243684?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00008-2036243684?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00008-2036243684?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <h2 slot="headline">Explore exclusive insights</h2> </rhcl-block-scrolling-cards-collection> </div> </script> </template> </div> <div class="root container-fluid cmp-container rhcl__background--secondary rhcl__background-style--curved aem-GridColumn aem-GridColumn--default--12"> <style> .rh-mta__insights-container{text-align:right} .rh-mta__sort-container{--helper-text-min-height:0} .rh-mta__headline{display:block;margin-bottom:var(--rhcl-spacing-16-x)} @media screen and (max-width:767px){#insightModal .modal-dialog{margin:0;height:100%} } @media screen and (max-height:740px){#insightModal .modal-dialog{margin:0;height:-moz-fit-content;height:fit-content} } #insightModal .modal-content{border-radius:32px;padding:32px} @media screen and (max-width:767px){#insightModal .modal-content{border-radius:0;padding:14px 24px;height:100%} } #insightModal .modal-content .modal-header{border-bottom:0} #insightModal .modal-content .modal-body .modal-row{justify-content:center} #insightModal .modal-content .modal-body .modal-row .modal-form{display:flex;flex-direction:column;justify-content:center;align-items:center} #insightModal .modal-content .modal-body .modal-row .modal-form img{margin-top:3px;margin-bottom:32px} #insightModal .modal-content .modal-body .modal-row .modal-form rhcl-heading{width:80%;text-align:center !important} @media screen and (max-width:767px){#insightModal .modal-content .modal-body .modal-row .modal-form rhcl-heading{width:100%} } #insightModal .modal-content .modal-body .modal-row .modal-form form{display:flex;flex-direction:column;align-items:center;margin-top:56px;width:100%} @media screen and (max-width:767px){#insightModal .modal-content .modal-body .modal-row .modal-form form{margin-top:40px} } #insightModal .modal-content .modal-body .modal-row .modal-form form rhcl-text-field{flex:1} #insightModal .modal-content .modal-body .modal-row .modal-form form rhcl-text-field:nth-child(3){margin-bottom:56px} @media screen and (max-width:767px){#insightModal .modal-content .modal-body .modal-row .modal-form form rhcl-text-field:nth-child(3){margin-bottom:40px} } #insightModal .modal-content .modal-body .modal-row .modal-form form rhcl-button{text-align:center !important;margin-bottom:42px} @media screen and (max-width:767px){#insightModal .modal-content .modal-body .modal-row .modal-form form rhcl-button{margin-bottom:24px} } #insightModal .modal-content .modal-body .modal-row .modal-form form .copy-text{text-align:center} </style> <div class="rhcl-content-container"> <rhcl-heading class="rh-mta__headline" modifier="centered" tag="h2" theme="" variant="display1">Refine your focus </rhcl-heading> <div class="xfpage page basicpage"> <!--<sly data-sly-resource="contexthub"/>--> <div id="container-5c31c73f11" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <style> .model-content,.model-content form{display:flex;flex-direction:column;align-items:center} .model-content form{margin-top:52px;padding:0} .model-content rhcl-typography,.model-content rhcl-heading{text-align:center !important} .form-footer{padding:0 40px} @media screen and (max-width:767px){.form-footer{padding:0} } .form-footer .form-btn{margin-bottom:32px;flex-direction:column;align-items:center;display:flex;gap:24px} .subscribe-modal-image{height:72px;width:72px;object-fit:cover;margin-bottom:32px} </style> <rhcl-modal id="thankyou-modal" behavior="close" branding-title="Thanks for signing up <>. Your insights are on the way" branding-external="false" variant="popup"> <div class="model-content"> <img class="thanku-modal-image" src="/content/dam/roberthalf/rh.png" alt="Roberthalf"/> <rhcl-heading data-attribute-heading="Thanks for signing up <>. Your insights are on the way" modifier="" tag="h2" theme="" variant="display2">Thanks for signing up <>. Your insights are on the way</rhcl-heading> <rhcl-typography data-attribute-disclaimer="An email is sent to <>" modifier="bold" tag="p" theme="" variant="body2"><rhcl-typography slot="copy" variant="legal">An email is sent to &lt;&gt;</rhcl-typography></rhcl-typography> </div> </rhcl-modal> <style> .model-content{display:flex;flex-direction:column;align-items:center} @media screen and (max-width:767px){.model-content{padding:0 10px} } .model-content rhcl-typography,.model-content rhcl-heading{text-align:center !important} .model-content rhcl-heading{margin-bottom:24px} .thanku-modal-image{height:72px;width:72px;object-fit:cover;margin-bottom:32px} </style> <rhcl-modal behavior="close" branding-destination="https://www.roberthalf.com/jobs" branding-external="false" id="email-model" variant="popup"> <div class="model-content"> <img class="subscribe-modal-image" src="/content/dam/roberthalf/rh.png" alt="Roberthalf"/> <rhcl-heading modifier="" tag="h2" theme="" variant="display2">Get tailored insights sent to your inbox</rhcl-heading> <div id="backdrop" class="d-none"> <div class="loader-div"> <rhcl-loading-spinner label="Please Wait"></rhcl-loading-spinner> </div> </div> <script src="https://www.google.com/recaptcha/enterprise.js?render=explicit" async defer> </script> </div> <div class="xfpage page basicpage"> <!--<sly data-sly-resource="contexthub"/>--> <div id="container-af2196984f" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <script src="https://www.google.com/recaptcha/enterprise.js?render=6LejimkkAAAAAFXPuyq9-cY_Tn0LOdrBWZfprr5D"></script> <style> .form-container{padding:40px 24px} .form-container .form-header{text-align:center;margin-bottom:40px;display:flex;justify-content:center;flex-direction:column;align-items:center} .form-container .form-header .header-text{margin-bottom:26px} .form-container .form-field-set .field-set-header{margin-bottom:24px} .form-container .form-field-set .field-element-row{margin-bottom:8px} .form-container .form-footer{gap:24px;margin-top:28px;justify-content:center} .form-container .form-footer .form-submit-btn{display:flex;justify-content:center;flex-direction:column;align-items:center;gap:24px;#showRedirectStatus{display:none} } .form-container .form-footer .form-submit-btn rhcl-button{width:100%} .form-container .form-footer .form-foot-note{text-align:left} .form-container .form-footer .form-foot-note .rhcl-typography{display:flex;flex-direction:column;gap:16px;padding:0;margin:0 !important;rhcl-typography{text-align:center} } .form-container .form-footer .form-foot-note .rhcl-typography--variant-legal{font-size:12px;letter-spacing:normal;line-height:1.5;font-family:"Noto Sans Regular",OpenSansRegular,"Open Sans Regular","Noto Sans",sans-serif !important} .form-container .form-footer .form-foot-note .rhcl-typography--variant-legal a:hover:after{width:100%;opacity:1} .cmp-experiencefragment .form-container{padding:0} .mobile-app-form .form-foot-note .rhcl-typography p{padding:0;white-space:pre-wrap;margin:0 !important} .mobile-app-form .form-foot-note .rhcl-typography--variant-legal p{font-size:12px;letter-spacing:normal;line-height:1.5;font-family:"Noto Sans Regular",OpenSansRegular,"Open Sans Regular","Noto Sans",sans-serif !important} .mobile-app-form .form-foot-note .rhcl-typography--variant-legal a:hover:after{width:100%;opacity:1} .mobile-app-form .form-div{padding:48px 0 21px 0} #backdrop{position:absolute;top:0;left:0;width:100%;height:100%;z-index:20;background-color:rgba(0,0,0,0.05)} .loader-div{display:flex;justify-content:center;align-items:center;height:100%} @media screen and (min-width:768px){.form-container{padding:48px 40px} .form-container .form-footer .form-submit-btn rhcl-button{width:unset} .form-container .form-footer .form-foot-note{text-align:center} .cmp-experiencefragment .form-container{padding:0} } .cmp-experiencefragment--salary-guide .form-footer{margin-top:0} </style> <script type="text/javascript"> function parseQuery(queryString) { var query = {}; var pairs = ( queryString[0] === "?" ? queryString.substr(1) : queryString ).split("&"); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ""); } return query; } function phonePrepopFormatter(phone) { const country = window["pageObj"]?.["__extrasettings__"]?.["country"]; if (phone !== null && phone !== undefined) { try { // Remove any non-digit characters let formattedPhone = phone?.replaceAll(/\D/g, ""); if (country === "us" || country === "ca") { // For NA, remove leading 1's and 0's while (/^[01]/.test(formattedPhone.charAt(0))) { formattedPhone = formattedPhone?.substring(1); } } return formattedPhone; } catch (error) { console.error("Failed to format phone:", error); return phone; } } else { return phone; } } function queryParamPrefill() { const handleElementPrefill = (elements, prefillData) => { Object.keys(elements).forEach((name) => { elements[name].forEach((element) => { //handle element auto fill if (element) { switch (element.nodeName) { case "RHCL-DROPDOWN": { const prefillDropdown = (element) => { if (element && element.children && element.children.length) { Array.from(element.children).forEach((child) => { child.selected = prefillData[name] == child.value; }); element.value = prefillData[name]; return true; } }; // try to fill dropdown if (!prefillDropdown(element)) { // if it's not available yet wait for children to be added function onAttributesChanged(_, observer) { // check if child nodes are available const childNodes = Array.from(element.children); for (const child of childNodes) { if (child.value !== undefined) { const prefilled = prefillDropdown(element); if (prefilled) { observer.disconnect(); // disconnect after prefilling } return; } } } // setup attribute mutation observer to fire event with const observer = new MutationObserver(onAttributesChanged); observer.observe(element, { attributes: true }); } break; } case "RHCL-CHECKBOX": { const prefillCheckbox = () => { if (element.interactionRef) { // interactionRef is available, set checked state element.interactionRef.checked = prefillData[name].toLowerCase() == "true"; return true; } }; // if checkbox wasn't available wait for mutation to make it so if (!prefillCheckbox()) { function onMutation(_, observer) { // try to fill checkbox on mutation if (prefillCheckbox()) { // disconnect after prefilling observer.disconnect(); } } // setup attribute mutation observer to fire event with interactionRef const observer = new MutationObserver(onMutation); observer.observe(element, { childList: true, subtree: true, attributes: true, }); } break; } default: element.value = prefillData[name]; if (element.name == "phoneNumber") { let formattedPhone = phonePrepopFormatter(element.value); element.value = formattedPhone; } } } }); }); }; const search = window.location.search; if (search.length && search[0] === "?") { const params = parseQuery(search); //handle form data query param if (params.fd) { const prefillData = parseQuery(atob(params.fd)); const elements = {}; Object.keys(prefillData).forEach((name) => { elements[name] = document.getElementsByName(name); }); const fd = params.fd; if (fd !== null) { const decodedParams = atob(fd); const baseUrl = window.location.origin; let formValue = baseUrl + window.location.pathname + search.replace(/(fd=)[^&$]*/g, decodedParams); document.querySelector("#formUrl").value = formValue; handleElementPrefill(elements, prefillData); } } else { //if no form data query, use all other params and prefill accordingly const elements = {}; Object.keys(params).forEach((name) => { elements[name] = document.getElementsByName(name); }); handleElementPrefill(elements, params); } } } const setRhInternalTracking = () => { // if medium = "Email" tracking = Email Campaign // if medium = "ppc" tracking = Ad Campaign // else tracking = Not found // fd encoded query param has precedence over other query params const trackingTypeElements = document.getElementsByName( "rhInternalTrackingType" ); const trackingValueElements = document.getElementsByName( "rhInternalTrackingValue" ); if (trackingTypeElements.length && window.location.search.length) { const queryParams = parseQuery(window.location.search); const fdParams = queryParams.fd && parseQuery(atob(queryParams.fd)); const medium = (fdParams && fdParams.utm_medium) || queryParams.utm_medium; const campaignValue = (fdParams && fdParams.utm_campaign) || queryParams.utm_campaign || ""; if (medium) { if (medium.toLowerCase() === "email") { trackingTypeElements.forEach((el) => (el.value = "Email Campaign")); } else if (medium.toLowerCase() === "ppc") { trackingTypeElements.forEach((el) => (el.value = "Ad Campaign")); } else { trackingTypeElements.forEach((el) => (el.value = "Not found")); } } if (campaignValue) { trackingValueElements.forEach((el) => (el.value = campaignValue)); } } }; /***************************Hidden Field Logic*********************************************/ window.ready(function () { document.querySelectorAll("#backdrop").forEach((ele) => { ele.style.display = "none"; }); if (document.querySelectorAll(".hiddenfield").length > 0) { //get country name from url function getCountryName() { var pagePath = new URL(window.location); pagePath = pagePath.pathname.replace("/content/roberthalf", ""); var country = pagePath.split("/")[1]; country = country != undefined ? country.toUpperCase() : ""; var countryArray = [...document.querySelectorAll("#country")]; countryArray.forEach(function (ele) { ele.value = country; }); } //get language name from url function getLanguageName() { var pagePath = new URL(window.location); pagePath = pagePath.pathname.replace("/content/roberthalf", ""); var language = pagePath.split("/")[2]; var country = pagePath.split("/")[1]; var languageArray = [...document.querySelectorAll("#language")]; languageArray.forEach(function (ele) { ele.value = language + "_" + country; }); } window.addEventListener("rh-client-id-set", function () { getGoogleAnalyticsId(); getTealiumId(); }); //get lob function getLob() { var lob = getURLParameter("lob"); lob = lob != undefined ? lob : ""; var lobArray = [...document.querySelectorAll("#lob")]; lobArray.forEach(function (ele) { ele.value = lob; }); } function getFormUrl() { var formUrlArray = [ ...document.querySelectorAll("#formUrl"), ...document.querySelectorAll("#requestUrl"), ...document.querySelectorAll("#formUrlEncoded"), ]; formUrlArray.forEach(function (ele) { ele.value = new URL(window.location).href; }); } //current date and time in format YYYY-MM-DD HH:MM:SS function currentDateTime() { var d = new Date(); d = d.getFullYear() + "-" + (d.getMonth() + 1 < 10 ? "0" + (d.getMonth() + 1) : d.getMonth() + 1) + "-" + (d.getDate() < 10 ? "0" + d.getDate() : d.getDate()) + " " + (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) + ":" + (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) + ":" + (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds()); return d; } function getMiddleInitial() { var middleInitial = currentDateTime(); var middleInitialArray = [...document.querySelectorAll("#middleInitial")]; middleInitialArray.forEach(function (ele) { ele.value = middleInitial; }); } //get ip address function getIpAddress() { fetch("https://jsonip.com/") .then((response) => response.json()) .then((data) => { var ipAddressArray = [ ...document.querySelectorAll("#ipAddress"), ...document.querySelectorAll("#remoteAddrIp"), ]; ipAddressArray.forEach(function (ele) { ele.value = data.ip; }); }) .catch((error) => { console.error("Error fetching IP address:", error); }); } function getGoogleAnalyticsId() { var googleAnalyticsArray = [ ...document.querySelectorAll("#googleAnalyticsId"), ]; googleAnalyticsArray.forEach(function (ele) { ele.value = window.clientId; }); } function getTimeStamp() { var dt = new Date(); var h = dt.getHours(), m = (dt.getMinutes() < 10 ? "0" : "") + dt.getMinutes(); var strDate = dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate(); var currentTime = h > 12 ? h - 12 + ":" + m + " PM" : h + ":" + m + " AM"; var currDate = "'" + strDate + "'"; var currentTimeStamp = Date.parse(currDate + currentTime); return currentTimeStamp; } function getSourceId() { var rhdSourceId = getURLParameter("rhdSourceId"); if (rhdSourceId != undefined) { var currentTimeStamp = getTimeStamp(); var rhdSourceIdArray = [...document.querySelectorAll("#rhdSourceId")]; rhdSourceIdArray.forEach(function (ele) { ele.value = rhdSourceId + "-" + currentTimeStamp; }); } else { var formContainer = document.querySelector(".form-container"); var id = formContainer ? formContainer.id : ""; var rhdSourceIdArray = [...document.querySelectorAll("#rhdSourceId")]; rhdSourceIdArray.forEach(function (ele) { ele.value = id + "-" + currentTimeStamp; }); } } function getUtmSource() { var utmsource = getURLParameter("utm_source"); utmsource = utmsource != undefined ? utmsource : ""; var utmSourceArray = [...document.querySelectorAll("#utmSource")]; utmSourceArray.forEach(function (ele) { ele.value = utmsource; }); } function getUtmCampaign() { var campaign = getURLParameter("utm_campaign"); campaign = campaign != undefined ? campaign : ""; var utmCampaignArray = [...document.querySelectorAll("#utmCampaign")]; utmCampaignArray.forEach(function (ele) { ele.value = campaign; }); } function getSfJoNumber() { var sfJoNumber = getURLParameter("sfJoNumber"); sfJoNumber = sfJoNumber != undefined ? sfJoNumber : ""; var sfJoNumberArray = [...document.querySelectorAll("#sfJoNumber")]; sfJoNumberArray.forEach(function (ele) { ele.value = sfJoNumber; }); } function getTealiumId() { var tealiumIdArray = [...document.querySelectorAll("#tealiumId")]; tealiumIdArray.forEach(function (ele) { ele.value = window?.tealiumId; }); } function getGclid() { var searchParams = parseQuery(window.location.search); var gclidVal = searchParams?.gclid ? searchParams.gclid : "not defined"; var gclidArray = [...document.querySelectorAll("#gclid")]; gclidArray.forEach(function (ele) { ele.value = gclidVal; }); } function getSfContactId() { var sfContactId = getURLParameter("sfContactId"); sfContactId = sfContactId != undefined ? sfContactId : ""; var sfContactIdArray = [...document.querySelectorAll("#sfContactId")]; sfContactIdArray.forEach(function (ele) { ele.value = sfContactId; }); } function getURLParameter(sParam) { var sPageURL = new URL(window.location); sPageURL = sPageURL.search.substring(1); var sURLVariables = sPageURL.split("&"); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split("="); if (sParameterName[0] == sParam) { return sParameterName[1]; } } } function updatePageHeading() { var replaceFields = [ { replace: "{positionTitle}", queryParam: "positionTitle" }, { replace: "{city}", queryParam: "city" }, { replace: "{country}", queryParam: "country" }, { replace: "{location}", queryParam: "location" }, { replace: "{jobtitle}", queryParam: "jobtitle" }, ]; const queryParams = parseQuery(window.location.search); replaceFields.forEach((replacement) => { const value = queryParams[replacement.queryParam] || null; const hfbHeadlineElement = document.querySelector( "rhcl-block-hero-form" ); const hfbHeadline = hfbHeadlineElement ? encodeURIComponent(hfbHeadlineElement.getAttribute("headline")) : ""; if (value !== null && hfbHeadline.indexOf(replacement.replace) > -1) { hfbHeadline.replace(replacement.replace, value); document .querySelector("rhcl-block-hero-form") .setAttribute("headline", sentence.replaceAll("%20", " ")); } }); } getCountryName(); getLanguageName(); getLob(); getFormUrl(); getMiddleInitial(); getIpAddress(); getGoogleAnalyticsId(); getSourceId(); getUtmSource(); getUtmCampaign(); getSfJoNumber(); getTealiumId(); getGclid(); getSfContactId(); } if (document.querySelectorAll("rhcl-block-hero-form").length > 0) { updatePageHeading(); } // use fd prefill after to give precedence to fd querystrings setRhInternalTracking(); }); window.addEventListener("rhcl-initialized", () => { queryParamPrefill(); }); queryParamPrefill(); (function() { var test = document.querySelectorAll("#recaptcha").length; var recaptchaFlag = 0; const firstRhclButton = document.querySelector("rhcl-button"); const recaptchaFailMessage = firstRhclButton && firstRhclButton?.getAttribute("data-recaptcha-message"); const recaptchaEndpoint = aemSettings?.rh_common?.recaptchaEndpoint; const bypassToken = document.getElementById("bypassToken"); let bypassPerimeter = ""; if (bypassToken != null) { bypassPerimeter = bypassToken.getAttribute("value"); } function scrollToTopOfForm() { const formContainer = document.querySelector(".form-container"); if (formContainer) { const topEl = formContainer .closest("rhcl-block-hero-form") ?.shadowRoot?.querySelector(".rhcl-block-hero-form__form"); const topOfForm = topEl?.getBoundingClientRect()?.top; const defaultHeaderHeight = 78; const headerHeight = parseInt( getComputedStyle(formContainer).getPropertyValue( "--rhcl-main-navigation-height" ), 10 ) || defaultHeaderHeight; if (top !== undefined) { setTimeout(() => { window.scrollTo({ top: topOfForm + window.scrollY - headerHeight, behavior: "smooth", }); }, 500); } } } function getURLParameters() { const urlSearchParams = new URLSearchParams(window.location.search); const params = Object.fromEntries(urlSearchParams.entries()); return params; } function getByPassStatus(params) { var arrayLength = params.length; for (var i = 0; i < arrayLength; i++) { if (params[i] === bypassPerimeter) { return 0; } } return 1; } function setKeyValueInUPO(key, unifiedProfileObject, value) { //set a particular key value in UPO unifiedProfileObject[key] = value; return unifiedProfileObject; } function saveGatingPropertyInUPO() { if (localStorage.getItem("unifiedProfileObject") != null) { var unifiedProfileObject = window.getUPO(); const gatingProperties = document.querySelector(".gating-properties"); if (gatingProperties != null) { var gatingProperty = gatingProperties.getAttribute("gatingproperty") != undefined ? gatingProperties.getAttribute("gatingproperty") : "sgGatingFormSubmitted"; unifiedProfileObject = setKeyValueInUPO( gatingProperty, unifiedProfileObject, window.salaryGuideGatingProperties.key ); window.setUPO(unifiedProfileObject); } } window.localStorage.setItem( "salaryGuideGatingKey", window.salaryGuideGatingProperties.key ); } var candidateWorkHistory = { recaptchaEnabled: "", invisibleRecaptchaToken: "", subscriberKey: "", }; let jobAlertRequestObject = { candidateEmailAddress: "", locale: "", keywords: "", keywordsNoSpaces: "", subscriptionSource: "rhWebsite", countryCode: "", searchResultsUrl: "", subscriptionSourceUrl: "", postedWithin: "", jobType: "", empType: "", cityId: "", cityTxt: "", jobAlertsSubscriptionId: "", lobName: "", location: "", locationNoSpaces: "", googleAnalyticsClientId: "", emailFrequency: "W", jobOrderRecommendationsCount: "5", insrtDttmHist: "", subscriptionType: "Manual", status: "A", }; var leadApiRequestObject = { recaptchaEnabled: "", invisibleRecaptchaToken: "", servicePreference: "", startDate: "", languageLocale: "", rhAnalyticsAddInfo: "", routingEmail: "", candidateReference1: "", candidateFunctionalRole1: "", candidateReference2: "", candidateFunctionalRole2: "", candidateReference3: "", candidateFunctionalRole3: "", candidateReference4: "", candidateFunctionalRole4: "", candidateReference5: "", candidateFunctionalRole5: "", additionalAttribute1: "", additionalAttribute2: "", additionalAttribute3: "", additionalAttribute4: "", additionalAttribute5: "", skillsRequested: "", experienceDurationMin: "", experienceDurationMax: "", experiencePeriod: "", educationLevel: "", payRateMin: "", payRateMax: "", payPeriod: "", payRateCurrency: "", additionalInfo: "", actionRequestedOfLp: "SUBMIT", rhInternalTrackingType: "", }; var newsApiObject = { recaptchaEnabled: "", invisibleRecaptchaToken: "", }; var businessUnit = { us: "na", ca: "na", au: "iz_apac_sam", br: "iz_apac_sam", cl: "iz_apac_sam", cn: "iz_apac_sam", hk: "iz_apac_sam", jp: "iz_apac_sam", nz: "iz_apac_sam", sg: "iz_apac_sam", be: "iz_eu", ch: "iz_eu", de: "iz_eu", fr: "iz_eu", nl: "iz_eu", uk: "iz_eu", }; const removeTags = (str) => { if (str === null || str === "") { return false; } else { str = str.toString(); } // Regular expression to identify HTML tags in the input string. Replacing the identified HTML tag with a null string. str = str.replace(/(<([^>]+)>)/gi, ""); // Regular expression to identify enter in the input string. Replacing the identified enter with a null string. return (str = str.replace(/\r?\n|\r/g, "")); }; function ajaxCall(input, thisInstance, form) { let formActionUrl = document.querySelector(".form-btn") ? document.querySelector(".form-btn").closest("form").getAttribute("action") : document .querySelector(".form-submit-btn") .closest("form") .getAttribute("action"); let requestData = createRequestPayload(input, thisInstance); let tryCount = 0; const retryLimit = 3; const makeFetchRequest = () => { fetch(formActionUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: requestData, }) .then((response) => { const jqXHR = { status: response.status, readyState: 4, // api call is complete (equivalent to XMLHttpRequest.DONE) responseText: null, responseJSON: null, }; if (!response.ok) { return response.text().then((text) => { jqXHR.responseText = text; try { jqXHR.responseJSON = JSON.parse(text); } catch (e) { throw jqXHR; } throw jqXHR; }); } return response.text().then((text) => { jqXHR.responseText = text; try { jqXHR.responseJSON = JSON.parse(text); } catch (e) { console.error("Error processing response JSON:", e.message); throw jqXHR; } return jqXHR; }); }) .then((jqXHR) => { const responseJSON = JSON.parse(jqXHR.responseText); let requestMessageKey = responseJSON.request_message_key || responseJSON.request_message_Key; if (typeof requestMessageKey === "string") { requestMessageKey = requestMessageKey.trim(); } if ( jqXHR.readyState == "4" && (jqXHR.status == "202" || jqXHR.status == "200") ) { if (responseJSON.hasOwnProperty("recaptcha_response")) { if ( responseJSON.hasOwnProperty("request_message_key") || responseJSON.hasOwnProperty("request_message_Key") ) { if ( requestMessageKey === "20_validationFailed_invisibleRecaptchaToken" || requestMessageKey === "20_validationFailed_invisibleRecaptchaScore" ) { form.nextElementSibling.style.display = "none"; showInteractiveReCaptcha(); } if ( requestMessageKey === "20_validationFailed_interactiveRecaptchaToken" || requestMessageKey === "20_validationFailed_interativeRecaptchaToken" ) { form.nextElementSibling.style.display = "none"; document .querySelector(".form-container rhcl-alert:first") .setAttribute("copy", responseJSON.request_message); document.querySelector( ".form-container rhcl-alert:first" ).style.display = "block"; setTimeout(() => { const formContainer = document.querySelector(".form-container"); window.scrollTo({ top: formContainer.getBoundingClientRect() + formContainer.ownerDocument.defaultView.scrollY, behavior: "smooth", }); }, 500); } } } // To do success scenario if (!responseJSON.hasOwnProperty("recaptcha_response")) { form.nextElementSibling.style.display = "none"; recaptchaFlag = 0; var recaptchaContainer = document.getElementById( "grecaptcha-interactive" ); if (recaptchaContainer) { recaptchaContainer.remove(); } if ( leadApiRequestObject.hasOwnProperty("interactiveRecaptchaToken") ) { delete leadApiRequestObject.interactiveRecaptchaToken; } if ( candidateWorkHistory.hasOwnProperty("interactiveRecaptchaToken") ) { delete candidateWorkHistory.interactiveRecaptchaToken; } if (newsApiObject.hasOwnProperty("interactiveRecaptchaToken")) { delete newsApiObject.interactiveRecaptchaToken; } } if ( responseJSON.hasOwnProperty("recaptcha_response") && (requestMessageKey === "20_validationFailed_interactiveRecaptchaToken" || requestMessageKey === "20_validationFailed_interativeRecaptchaToken") ) { form.nextElementSibling.style.display = "none"; recaptchaFlag = 0; var recaptchaContainer = document.getElementById( "grecaptcha-interactive" ); if (recaptchaContainer) { recaptchaContainer.remove(); } if ( leadApiRequestObject.hasOwnProperty("interactiveRecaptchaToken") ) { delete leadApiRequestObject.interactiveRecaptchaToken; } if ( candidateWorkHistory.hasOwnProperty("interactiveRecaptchaToken") ) { delete candidateWorkHistory.interactiveRecaptchaToken; } if (newsApiObject.hasOwnProperty("interactiveRecaptchaToken")) { delete newsApiObject.interactiveRecaptchaToken; } } if ( !requestMessageKey === "20_validationFailed_interactiveRecaptchaToken" && !requestMessageKey === "20_validationFailed_interativeRecaptchaToken" ) { document .querySelectorAll(".form-container rhcl-alert") .forEach(function (el) { el.style.display = "none"; }); } var formTypeVal = document.querySelector( ".rhformhiddenfield input[name=formType]" ); var projectTypeVal = document.querySelector( ".rhformhiddenfield input[name=projectType]" ); var analyticObj; //Single step job order form if (formTypeVal && formTypeVal.value == "job-order") { var industry = document.querySelector( "form rhcl-text-field[name=industry]" )?.value; analyticObj = { tealium_event: "job_order_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, form_type: formTypeVal.value, indicator_remote: document .querySelector("rhcl-checkbox") ?.hasAttribute("selected") ? true : false, industry: industry ? industry : "", job_id: document.querySelector("#sfJoNumber") ? document.querySelector("#sfJoNumber").getAttribute("value") : "", job_type: window.getUPO().employmentType, job_title: window.getUPO().positionTitle, lob: document.querySelector("#lob") ? document.querySelector("#lob").getAttribute("value") : "", location: window.getUPO().postalCode, }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } //Executive Search form if (formTypeVal && formTypeVal.value == "executive-search") { analyticObj = { tealium_event: "job_order_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), event_version: "executive search", form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, form_type: formTypeVal.value, job_title: window.getUPO().positionTitle, location: window.getUPO().postalCode, }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } //Newsletter subscription form if (formTypeVal && formTypeVal.value == "newsletter-subscription") { analyticObj = { tealium_event: "newsletter_subscription_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, form_type: formTypeVal.value, }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } //Salary guide form if (formTypeVal && formTypeVal.value == "salary-guide") { let userType = ""; let checkBoxVal = document.querySelector("form rhcl-radio-group") ? document.querySelector("form rhcl-radio-group").value : ""; if (checkBoxVal == "yes") { userType = "client"; } else if (checkBoxVal == "no") { userType = "candidate"; } analyticObj = { tealium_event: "salary_guide_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, form_type: formTypeVal.value, user_type: userType, }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } //webmaster feedback form if (formTypeVal && formTypeVal.value == "webmaster-feedback") { analyticObj = { tealium_event: "feedback_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_type: formTypeVal.value, }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); console.log(analyticObj, "event"); } //client visit form if (formTypeVal && formTypeVal.value == "client-visit") { analyticObj = { tealium_event: "client_visit_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), event_version: projectTypeVal.value, form_type: formTypeVal.value, form_name: formTypeVal.name, form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, page_name: "", page_section: "", user_focus: "", user_state: window.getUPO().isLoggedIn ? "auth" : "unauth", }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } //gated form if (formTypeVal && formTypeVal.value == "gated") { let visitorTypeValue = document.querySelector( "form rhcl-radio-group[name='visitorType']" )?.value || ""; if ( visitorTypeValue === "" && document.getElementsByName("visitorType").length ) { visitorTypeValue = document.getElementsByName("visitorType")[0]?.value; } analyticObj = { tealium_event: "gated_submit", datalayer_version: 2, event_attr_01: visitorTypeValue, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), event_version: projectTypeVal.value, form_type: formTypeVal.value, form_name: formTypeVal.name, form_email: window.getUPO().email ? window.getUPO().email : window.getUPO().candidateEmail, page_name: "", page_section: "", user_focus: "", user_state: window.getUPO().isLoggedIn ? "auth" : "unauth", }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); console.log(analyticObj, "event"); } //job order forms if ( formTypeVal && (formTypeVal.value == "job-order-no-rhd" || formTypeVal.value == "job-order-one-click") ) { analyticObj = { tealium_event: "job_order_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_type: formTypeVal.value, }; var hasEmail = Array.from( document.querySelectorAll("form rhcl-text-field") ).filter((ele) => { return ele.type == "email"; }); if (hasEmail.length) analyticObj["form_email"] = hasEmail[0].value; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } if ( formTypeVal && (formTypeVal.value == "candidate-referral" || formTypeVal.value == "email-us" || formTypeVal.value == "job-order-no-rhd" || formTypeVal.value == "job-order-one-click" || formTypeVal.value == "mobile-app-download" || formTypeVal.value == "candidate-work-history" || formTypeVal.value == "contact-us-aws" || formTypeVal.value == "contact-us") ) { analyticObj = { tealium_event: "form_submit", datalayer_version: 2, event_action: "rhcl-button-clicked", event_text: document .querySelector("form rhcl-button") .getAttribute("component-tracking-label"), form_type: formTypeVal.value, }; var hasEmail = Array.from( document.querySelectorAll("form rhcl-text-field") ).filter((ele) => { return ele.type == "email"; }); if (hasEmail.length) analyticObj["form_email"] = hasEmail[0].value; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } rh_datalayer_add(analyticObj, "event"); } } if ( responseJSON.request_status == "error" || responseJSON.request_status == "ERROR" ) { form.nextElementSibling.style.display = "none"; document .querySelector(".form-container rhcl-alert") .setAttribute("copy", responseJSON.request_message); { const alertEl = document.querySelector( ".form-container rhcl-alert" ); if (alertEl) { alertEl.style.display = "block"; } } { scrollToTopOfForm(); } return; } if ( typeof responseJSON.request_message_Key !== "string" && responseJSON.request_message_Key !== "20_success" ) { if (responseJSON.hasOwnProperty("request_message_Key")) { form.nextElementSibling.style.display = "none"; if (responseJSON.request_message_Key.length > 0) { if ( responseJSON.request_message_Key.includes( "20_validationFailed_postalCode" ) ) { var postalCodeCopy = document .querySelector( '.form-container rhcl-alert[data-status="postalCodeError"]' ) .getAttribute("copy"); if (postalCodeCopy.includes("{postalCode}")) { var errorMessage = postalCodeCopy.replace( "{postalCode}", leadApiRequestObject.postalCode ); document .querySelector( '.form-container rhcl-alert[data-status="postalCodeError"]' ) .setAttribute("copy", errorMessage); { const alertEl = document.querySelector( '.form-container rhcl-alert[data-status="postalCodeError"]' ); if (alertEl) { alertEl.style.display = "block"; } } } } if ( responseJSON.request_message_Key.includes( "20_validationFailed_positionTitle" ) ) { if (positionTitleCopy.includes("{positionTitle}")) { var errorMessage = positionTitleCopy.replace( "{positionTitle}", leadApiRequestObject.positionTitle ); document .querySelector( '.form-container rhcl-alert[data-status="error"]' ) .setAttribute("copy", errorMessage); { const alertEl = document.querySelector( '.form-container rhcl-alert[data-status="error"]' ); if (alertEl) { alert.style.display = "block"; } } } } { scrollToTopOfForm(); } } } } if (document.querySelector(".salary-guide") !== null) { form.nextElementSibling.style.display = "none"; saveGatingPropertyInUPO(); } if ( document.querySelector("#showRedirectStatus") !== null && !responseJSON.hasOwnProperty("recaptcha_response") && requestMessageKey.includes("20_success") ) { form.nextElementSibling.style.display = "none"; var thankyouPage = thisInstance .getAttribute("destination") .replace("/content/roberthalf", "") .replace(".html", ""); const redirectionUrl = window.localStorage.getItem("redirectionUrl"); if ( thankyouPage != undefined && thankyouPage != "" && thankyouPage != null ) { if (redirectionUrl) { if (thankyouPage.includes("html")) { thankyouPage = thankyouPage.split(".")[0]; thankyouPage += redirectionUrl + ".html"; } else { thankyouPage += redirectionUrl; } localStorage.removeItem("redirectionUrl"); } window.location.replace(thankyouPage); } } if ( document.querySelector("#showPopupStatus") !== null && !responseJSON.hasOwnProperty("recaptcha_response") && requestMessageKey.includes("20_success") ) { form.nextElementSibling.style.display = "none"; { const alertEl = document.querySelector( ".form-container rhcl-alert" ); if (alertEl) { alertEl.style.display = "none"; } } var defaultMasg = responseJSON.hasOwnProperty("request_message") ? responseJSON.request_message : "The action was processed successfully."; var errorCopy = document.querySelector("#showPopupStatus") && document.querySelector("#showPopupStatus").getAttribute("data-copy") ? document .querySelector("#showPopupStatus") .getAttribute("data-copy") : defaultMasg; errorCopy = removeTags(errorCopy); { const formContainer = document.querySelector(".form-container"); if (formContainer) { formContainer.style.display = "none"; } } { const formContentEls = document.querySelectorAll( '[slot="form-content"]' ); formContentEls.forEach((el) => { el.style.display = "flex"; el.style.justifyContent = "center"; el.style.flexWrap = "wrap"; }); } document .querySelectorAll('[slot="form-content"]') .forEach(function (element) { element.insertAdjacentHTML( "afterbegin", `<rhcl-typography tag='p' variant='body1'>${errorCopy}</rhcl-typography>` ); }); { scrollToTopOfForm(); } } if (document.querySelector("#email-model") !== null) { form.nextElementSibling.style.display = "none"; document.querySelector("#email-model").removeAttribute("show-modal"); if (document.querySelector("#thankyou-modal") !== null) { document .querySelector("#thankyou-modal") .setAttribute("show-modal", ""); let thankuname, thankuemail; if (localStorage.getItem("unifiedProfileObject") != null) { thankuname = window.getUPO().firstName; thankuemail = window.getUPO().emailAddress ? window.getUPO().emailAddress : window.getUPO().email; } let thankyouHeading = document.querySelector( "#thankyou-modal rhcl-heading" ); let thankyouEmail = document.querySelector( "#thankyou-modal rhcl-typography" ); if (thankyouHeading != null) { let thankyouname = document .querySelector("#thankyou-modal rhcl-heading") .getAttribute("data-attribute-heading"); thankyouname = thankyouname.replace("<>", thankuname); document.querySelector( "#thankyou-modal rhcl-heading" ).textContent = thankyouname; } if (thankyouEmail != null) { let thankyouemail = document .querySelector("#thankyou-modal rhcl-typography") .getAttribute("data-attribute-disclaimer"); thankyouemail = thankyouemail.replace("<>", thankuemail); document.querySelector( "#thankyou-modal rhcl-typography" ).textContent = thankyouemail; } } } }) .catch((jqXHR) => { if ([502, 503, 504].includes(jqXHR.status)) { form.nextElementSibling.style.display = "none"; tryCount++; if (tryCount < retryLimit) { makeFetchRequest(); return; } } if ([500, 502, 503, 504].includes(jqXHR.status)) { form.nextElementSibling.style.display = "none"; const alertEl = document.querySelector( ".form-container rhcl-alert[data-status='" + currentStatus + "']" ); if (alertEl) { alertEl.style.display = "block"; } scrollToTopOfForm(); } if ( jqXHR.status === 400 && (jqXHR.responseJSON.request_status === "error" || jqXHR.status === "ERROR") ) { form.nextElementSibling.style.display = "none"; document .querySelector(".form-container rhcl-alert:first") .setAttribute("copy", responseJSON.request_message); document.querySelector( ".form-container rhcl-alert:first" ).style.display = "block"; scrollToTopOfForm(); } }); }; makeFetchRequest(); } window.ready(function () { document .querySelectorAll(".form-submit-btn rhcl-button") .forEach(function (el) { el.addEventListener("click", function (e) { e.preventDefault(); recaptchaStatus(); getLeadId(); setTimeout(getSubmissionDate, 2000); let thisInstance = this; let form = this.closest("form"); if (!form.closest(".salary-guide")) { localStorage.removeItem("redirectionUrl"); } var inputElements = form.querySelectorAll("[rhcl-input]"); var dateElements = form.querySelectorAll("rhcl-datepicker"); let validateFieldArray = [...inputElements, ...dateElements]; validateForm(validateFieldArray, thisInstance, form); if (document.querySelectorAll(".salary-guide").length > 0) { updateHiddenFields(); } }); }); document.querySelectorAll(".form-btn rhcl-button").forEach(function (el) { el.addEventListener("click", function (e) { e.preventDefault(); const thisInstance = this; var form = document.querySelector(".form-btn") ? document.querySelector(".form-btn").closest("form") : null; var inputElements = form ? form.querySelectorAll("[rhcl-input]") : []; let validateFieldArray = Array.from(inputElements); validateForm(validateFieldArray, thisInstance, form); recaptchaStatus(); }); }); }); function getPostalCodeInForm() { return document.querySelector("rhcl-text-field[name='postalCode']"); } function isCountryUS() { var country = document.getElementById("country"); return country && country.hasAttribute("value") && country.value == "US"; } function isPostalCodeInvalidForUS(value) { return ( value.match(/^(82[0-9]{3}|83[0-3][0-9]{2}|8341[0-4])$/) || value.match( /^(995[0-9]{2}|996[0-9]{2}|997[0-9]{2}|998[0-9]{2}|999[0-4][0-9]|99950)$/ ) || value.match( /^(24[7-9][0-9]{2}|25[0-9]{3}|26[0-7][0-9]{2}|268[0-7][0-9]|2688[0-6])$/ ) ); } function getPostalCodeErrorValidity() { var postalCodeField = getPostalCodeInForm(); var value = postalCodeField.value; if (!postalCode || !isCountryUS()) { return false; } const isInvalid = isPostalCodeInvalidForUS(value); var initialMessage = postalCodeField.getAttribute("custom-error-message"); if (isInvalid) { initialMessage = `Robert Half cannot support staffing needs in ${value} at this time.`; postalCodeField.setAttribute("custom-invalid", ""); postalCodeField.setAttribute("custom-error-message", initialMessage); } else { postalCodeField.removeAttribute("custom-invalid"); postalCodeField.removeAttribute("custom-error-message"); } return isInvalid; } var postalCode = getPostalCodeInForm(); if (postalCode) { postalCode.addEventListener("rhcl-text-field-blur", function (e) { if (isCountryUS()) { let isValid = true; const promises = []; postalCode.removeAttribute("custom-invalid"); postalCode.customInvalid = null; promises.push(postalCode.validate()); Promise.allSettled(promises).then((results) => { results.forEach((result) => { if (result.status === "fulfilled") { if (!result.value) { isValid = false; } } }); if (isValid) { getPostalCodeErrorValidity(); } }); } }); if ( getURLParameter("postalCode") != "" || getURLParameter("postalCode") != null || getURLParameter("postalCode") != undefined ) { var postalCodecount = 0; document .querySelector(".form-container rhcl-text-field[name='postalCode']") .addEventListener("rhcl-text-field-changed", function (e) { var patternId = document.querySelector("#rhFormTextField"); var pattern = ""; var patternMessage = ""; if (patternId) { pattern = patternId.hasAttribute("data-pattern") ? patternId.getAttribute("data-pattern") : ""; patternMessage = patternId.hasAttribute("data-errorMessage") ? patternId.getAttribute("data-errorMessage") : ""; } let isValid = true; const promises = []; document .querySelector("rhcl-text-field[name='postalCode']") .removeAttribute("custom-invalid"); document.querySelector( "rhcl-text-field[name='postalCode']" ).customInvalid = null; promises.push( document .querySelector("rhcl-text-field[name='postalCode']") .validate() ); Promise.allSettled(promises).then((results) => { results.forEach((result) => { if (result.status === "fulfilled") { if (!result.value) { isValid = false; } } }); if (isValid) { postalCodecount += 1; if (postalCodecount < 2 && this.value) { const value = this.value; if (pattern && value.match(pattern) == null) { this.setAttribute("custom-invalid", ""); } else { this.removeAttribute("custom-invalid"); } this.setAttribute("custom-error-message", patternMessage); } } }); }); } } function getEmailField() { return document.querySelector('[id^="rhcl-text-field"][type="email"]'); } if ( document.querySelector("rhcl-datepicker[name='startDate']") && document.querySelector("rhcl-datepicker[name='endDate']") ) { document .querySelector("rhcl-datepicker[name='endDate']") .addEventListener("rhcl-calendar-change", (e) => { let isValid = true; const promises = []; document .querySelector("rhcl-datepicker[name='endDate']") .removeAttribute("custom-invalid"); document.querySelector("rhcl-datepicker[name='endDate']").customInvalid = null; document .querySelector("rhcl-datepicker[name='endDate']") .labelRef.removeAttribute("custom-invalid"); promises.push( document.querySelector("rhcl-datepicker[name='endDate']").validate() ); Promise.allSettled(promises).then((results) => { results.forEach((result) => { if (result.status === "fulfilled") { if (!result.value) { isValid = false; } } }); if (isValid) { const formName = document.querySelector( "input[name='formName']" ).value; if (formName && formName.includes("candidate_work_history")) { const startDate = document.querySelector( "rhcl-datepicker[name='startDate']" ); const endDate = document.querySelector( "rhcl-datepicker[name='endDate']" ); const errorMsg = endDate.hasAttribute("data-custom-error-message") ? endDate.getAttribute("data-custom-error-message") : ""; var initialMessage = endDate.getAttribute("custom-error-message"); endDate.removeAttribute("custom-invalid"); endDate.labelRef.removeAttribute("custom-invalid"); var flag = 0; if (new Date(startDate.value) >= new Date(endDate.value)) { flag = 1; if (errorMsg) { initialMessage = errorMsg; } else { initialMessage = "Start Date can not be greater than End Date"; } } if (flag == 1) { endDate.setAttribute("custom-invalid", ""); endDate.labelRef.setAttribute("custom-invalid", ""); } else { endDate.removeAttribute("custom-invalid"); endDate.labelRef.removeAttribute("custom-invalid"); } endDate.setAttribute("custom-error-message", initialMessage); } } }); }); document .querySelector("rhcl-datepicker[name='startDate']") .addEventListener("rhcl-calendar-change", (e) => { let isValid = true; const promises = []; if (document.querySelector("rhcl-datepicker[name='endDate']").value) { document .querySelector("rhcl-datepicker[name='endDate']") .removeAttribute("custom-invalid"); document.querySelector( "rhcl-datepicker[name='endDate']" ).customInvalid = null; document .querySelector("rhcl-datepicker[name='endDate']") .labelRef.removeAttribute("custom-invalid"); promises.push( document.querySelector("rhcl-datepicker[name='endDate']").validate() ); Promise.allSettled(promises).then((results) => { results.forEach((result) => { if (result.status === "fulfilled") { if (!result.value) { isValid = false; } } }); if (isValid) { var startDate = document.querySelector( "rhcl-datepicker[name='startDate']" ); var endDate = document.querySelector( "rhcl-datepicker[name='endDate']" ); const errorMsg = endDate.hasAttribute("data-custom-error-message") ? endDate.getAttribute("data-custom-error-message") : ""; var initialMessage = endDate.getAttribute("custom-error-message"); endDate.removeAttribute("custome-invalid"); endDate.labelRef.setAttribute("custom-invalid", ""); var flag = 0; if ( endDate.value && new Date(startDate.value) > new Date(endDate.value) ) { flag = 1; if (errorMsg) { initialMessage = errorMsg; } else { initialMessage = "Start Date can not be greater than End Date"; } } if (flag == 1) { endDate.setAttribute("custom-invalid", ""); endDate.labelRef.setAttribute("custom-invalid", ""); } else { endDate.removeAttribute("custom-invalid"); endDate.labelRef.removeAttribute("custom-invalid"); } endDate.setAttribute("custom-error-message", initialMessage); } }); } }); } if (document.querySelector("rhcl-checkbox[name='currentEmployer']")) { document .querySelector("rhcl-checkbox[name='currentEmployer']") .addEventListener("rhcl-checkbox-changed", () => { const formName = document.querySelector("input[name='formName']").value; if (formName && formName.includes("candidate_work_history")) { const currEmp = document.querySelector( "rhcl-checkbox[name='currentEmployer']" ).selected; const endDate = document.querySelector( "rhcl-datepicker[name='endDate']" ); if (currEmp && endDate) { endDate.setAttribute("disabled", ""); endDate.setAttribute("date", ""); endDate.style.pointerEvents = "none"; endDate.style.opacity = 0.6; endDate.hasAttribute("custom-invalid") ? endDate.removeAttribute("custom-invalid") : ""; } else { endDate.removeAttribute("disabled"); endDate.style.pointerEvents = "unset"; endDate.style.opacity = 1; } } }); } function updateHiddenFields() { var pagePath = new URL(window.location); pagePath = pagePath.pathname.replace("/content/roberthalf", ""); var country = pagePath.split("/")[1]; var language = pagePath.split("/")[2]; if ( businessUnit.hasOwnProperty(country) && country != undefined && language != undefined ) { var formName = "form_" + businessUnit[country] + "_" + country + "_" + language + "_salary_guide_gating"; if (document.querySelector("input[name='formName']") != null) { document.querySelector("input[name='formName']").value = formName; } if (document.querySelector("input[name='language']") != null) { document.querySelector("input[name='language']").value = language.toUpperCase(); } if (document.querySelector("input[name='countryCode']") != null) { document.querySelector("input[name='countryCode']").value = country.toUpperCase(); } if (document.querySelector("input[name='salaryGuideYear']") != null) { document.querySelector("input[name='salaryGuideYear']").value = new Date().getFullYear(); } } } function createRequestPayload(input, thisInstance) { let unifiedProfileObject; var hiddenInput = thisInstance .closest("form") .querySelectorAll("input[type=hidden]"); var dates = document.querySelectorAll("form rhcl-datepicker"); if (document.querySelector(".salary-guide") != null) { if ( leadApiRequestObject.hasOwnProperty("recaptchaEnabled") || leadApiRequestObject.hasOwnProperty("invisibleRecaptchaToken") ) { var token = leadApiRequestObject.invisibleRecaptchaToken; var status = leadApiRequestObject.recaptchaEnabled; leadApiRequestObject = { invisibleRecaptchaToken: token, recaptchaEnabled: status, }; } } if (localStorage.getItem("unifiedProfileObject") != null) { unifiedProfileObject = window.getUPO(); } const inputArray = [...input, ...hiddenInput, ...dates]; if ( document .querySelector("form[data-attribute-jobalert]") ?.getAttribute("data-attribute-jobalert") === "true" ) { let inputValues = { searchTerms: "", emailAddress: "", location: "", country: "", language: "", }; for (const element in inputArray) { inputValues = retrieveJobAlertsInputFields( inputArray[element], inputValues ); } updateJobAlertDetails(inputValues); return JSON.stringify(jobAlertRequestObject); } else { for (const element in inputArray) { if ( inputArray[element].tagName.toLocaleLowerCase() != "rhcl-checkbox" && inputArray[element].tagName.toLocaleLowerCase() != "rhcl-radio" && inputArray[element].tagName.toLocaleLowerCase() != "rhcl-datepicker" ) { if (inputArray[element].value != undefined) { var noStringsInput = inputArray[element].value.replace(/["']/g, ""); leadApiRequestObject[inputArray[element].name] = noStringsInput; if ( document.querySelector("[data-attribute-iz]") != null && inputArray[element].tagName.toLocaleLowerCase() === "rhcl-radio-group" ) { if (inputArray[element].value.toLocaleLowerCase() === "client") { newsApiObject["newsClient"] = "True"; newsApiObject["newsCandidate"] = "False"; } else if ( inputArray[element].value.toLocaleLowerCase() === "candidate" ) { newsApiObject["newsClient"] = "False"; newsApiObject["newsCandidate"] = "True"; } } else { newsApiObject[inputArray[element].name] = inputArray[element].value; candidateWorkHistory[inputArray[element].name] = inputArray[element].value; } if (unifiedProfileObject != null) { if (inputArray[element].name in unifiedProfileObject) { if (inputArray[element].name === "email") { unifiedProfileObject["emailAddress"] = inputArray[element].value; } else if (inputArray[element].name === "emailAddress") { unifiedProfileObject["email"] = inputArray[element].value; } unifiedProfileObject[inputArray[element].name] = inputArray[element].value; if ( unifiedProfileObject.peopleNumber != "" && document.querySelector("form[data-attribute-ssjo]") != null ) { leadApiRequestObject["peopleNumber"] = unifiedProfileObject.peopleNumber; } if (unifiedProfileObject.contactSfID != "") { newsApiObject["sfContactID"] = unifiedProfileObject.contactSfID; } } if (unifiedProfileObject.contactSfID != "") { candidateWorkHistory["subscriberKey"] = unifiedProfileObject.contactSfID; } } if ( !leadApiRequestObject.rhInternalTrackingType || leadApiRequestObject.rhInternalTrackingType === "Not found" ) { // if the tracking type isn't already set by an ad campaign url leadApiRequestObject["rhInternalTrackingType"] = unifiedProfileObject.isLoggedIn ? "LUX" : "RH Website Visitor"; } } } if ( inputArray[element].tagName.toLocaleLowerCase() == "rhcl-datepicker" ) { if (inputArray[element].value === "") { candidateWorkHistory[inputArray[element].name] = ""; } else { candidateWorkHistory[inputArray[element].name] = changeDateFormat( inputArray[element].value ); } } } var radioValue = document.querySelectorAll("form rhcl-radio:checked"); if (radioValue != null) { radioValue.forEach(function (element) { leadApiRequestObject[element.name] = element.value; newsApiObject[element.name] = element.value; candidateWorkHistory[element.name] = element.value; if (unifiedProfileObject != null) { if (element.name in unifiedProfileObject) { unifiedProfileObject[element.name] = element.value; } } }); } if ( document.querySelectorAll("[data-attribute-iz]").length > 0 && "radioButton" in newsApiObject ) { delete newsApiObject.radioButton; } if ( document.querySelectorAll("[data-attribute-iz]").length > 0 && "radioButtons" in newsApiObject ) { delete newsApiObject.radioButtons; } if ("formType" in newsApiObject) { delete newsApiObject.formType; } var checkboxValue = document.querySelectorAll("form rhcl-checkbox"); if (checkboxValue.length > 0) { checkboxValue.forEach(function (element) { if (element.selected == true) { if (element.name != null) { leadApiRequestObject[element.name] = element.value || "true"; newsApiObject[element.name] = element.value || "true"; candidateWorkHistory[element.name] = element.value || "true"; if (unifiedProfileObject != null) { if (element.name in unifiedProfileObject) { unifiedProfileObject[element.name] = element.value || "true"; } } } } else { if (leadApiRequestObject.hasOwnProperty(element.name)) { delete leadApiRequestObject[element.name]; } leadApiRequestObject[element.name] = "false"; newsApiObject[element.name] = element.value || "false"; candidateWorkHistory[element.name] = element.value || "false"; } }); } if (unifiedProfileObject != null) { window.setUPO(unifiedProfileObject); } if (document.querySelectorAll(".form-btn").length > 0) { return JSON.stringify(newsApiObject); } if ( document.querySelectorAll("input[name='formName']").length > 0 && document.querySelectorAll("input[name='formName']").value === "form_na_candidate_work_history" ) { return JSON.stringify(candidateWorkHistory); } return JSON.stringify(leadApiRequestObject); } function changeDateFormat(inputDate) { if (inputDate) { var splitDate = inputDate.split("-"); if (splitDate.count == 0) { return null; } var year = splitDate[0]; var month = splitDate[1]; var day = splitDate[2]; return month + "-" + day + "-" + year; } else { return ""; } } function retrieveJobAlertsInputFields(inputElement, inputValues) { if (inputElement.name == null) { return inputValues; } if (inputElement.name.toLocaleLowerCase() === "searchterms") { inputValues.searchTerms = inputElement.value; } if (inputElement.name.toLocaleLowerCase() === "email") { inputValues.emailAddress = inputElement.value; } if (inputElement.name.toLocaleLowerCase() === "location") { inputValues.location = inputElement.value; } return inputValues; } function updateJobAlertDetails(inputValues) { let pagePath = new URL(window.location); pagePath = pagePath.pathname.replace("/content/roberthalf", ""); if (pagePath) { inputValues.country = pagePath.split("/")[1]; inputValues.language = pagePath.split("/")[2]; } jobAlertRequestObject.candidateEmailAddress = inputValues.emailAddress; jobAlertRequestObject.keywords = inputValues.searchTerms; jobAlertRequestObject.keywordsNoSpaces = inputValues.searchTerms.replace( /\s+/g, "" ); jobAlertRequestObject.location = inputValues.location; jobAlertRequestObject.locationNoSpaces = inputValues.location.replace( /\s+/g, "" ); jobAlertRequestObject.locale = inputValues.language.toLowerCase() + "_" + inputValues.country.toUpperCase(); jobAlertRequestObject.countryCode = inputValues.country.toLowerCase(); jobAlertRequestObject.insrtDttmHist = new Date().toISOString(); jobAlertRequestObject.subscriptionSourceUrl = window.location.href; jobAlertRequestObject.searchResultsUrl = window.location.origin + "/" + inputValues.country.toLowerCase() + "/" + inputValues.language.toLowerCase() + "/jobs/" + inputValues.location.replace(/ /g, "-") + "/" + encodeURIComponent(inputValues.searchTerms); const randomString = Math.random().toString(36).slice(2, 12); const timestamp = Date.now().toString().slice(-10); jobAlertRequestObject.jobAlertsSubscriptionId = `${randomString}_${timestamp}`; } } window.verifyCallback = function verifyCallback(response) { recaptchaFlag = 1; leadApiRequestObject["interactiveRecaptchaToken"] = response; candidateWorkHistory["interactiveRecaptchaToken"] = response; newsApiObject["interactiveRecaptchaToken"] = response; if (leadApiRequestObject.hasOwnProperty("invisibleRecaptchaToken")) { delete leadApiRequestObject.invisibleRecaptchaToken; } if (candidateWorkHistory.hasOwnProperty("invisibleRecaptchaToken")) { delete candidateWorkHistory.invisibleRecaptchaToken; } if (newsApiObject.hasOwnProperty("invisibleRecaptchaToken")) { delete newsApiObject.invisibleRecaptchaToken; } }; function showInteractiveReCaptcha() { recaptchaFlag = 1; var key = document.querySelectorAll(".form-btn").length > 0 ? document .querySelector(".form-btn rhcl-button") .getAttribute("interactive-key") : document .querySelector(".form-submit-btn rhcl-button") .getAttribute("interactive-key"); // Create the interactive reCAPTCHA HTML var recaptchaContainer = document.createElement("span"); recaptchaContainer.id = "grecaptcha-interactive"; recaptchaContainer.className = "g-recaptcha"; recaptchaContainer.setAttribute("data-sitekey", key); recaptchaContainer.setAttribute("data-callback", "verifyCallback"); recaptchaContainer.setAttribute("theme", "light"); var formGeneral = document.querySelector(".form-submit-btn"); var formNews = document.querySelector(".form-btn"); if (formGeneral != null) { document .querySelector(".form-submit-btn") .insertBefore( recaptchaContainer, document.querySelector(".form-submit-btn").firstChild ); } if (formNews != null) { document .querySelector(".form-btn") .insertBefore( recaptchaContainer, document.querySelector(".form-btn").firstChild ); } // Render the interactive reCAPTCHA grecaptcha.render(recaptchaContainer, { sitekey: key, }); //ajax call in which we will get the score //passes } function validateRecaptcha(input, thisInstance, form) { var key = document.querySelectorAll(".form-btn").length > 0 ? document .querySelector(".form-btn rhcl-button") .getAttribute("invisible-key") : document .querySelector(".form-submit-btn rhcl-button") .getAttribute("invisible-key"); grecaptcha.enterprise.ready(function () { grecaptcha.enterprise .execute(key, { action: "click", }) .then(function (token) { leadApiRequestObject["invisibleRecaptchaToken"] = token; candidateWorkHistory["invisibleRecaptchaToken"] = token; newsApiObject["invisibleRecaptchaToken"] = token; ajaxCall(input, thisInstance, form); }); }); } async function validateForm(input, thisInstance, form) { let isValid = true; const fieldsToValidate = input; const promises = []; var flag = 1; fieldsToValidate.forEach((elem) => { if ( typeof elem.validate === "function" && !elem.getAttribute("form-submission-hidden") ) { promises.push(elem.validate()); } }); // wait for all promises to be finished await Promise.allSettled(promises).then(async (results) => { results.forEach((result) => { if (result.status === "fulfilled") { if (!result.value) { isValid = false; } } }); const parameters = getURLParameters(); var params = Object.keys(parameters); flag = getByPassStatus(params); var postalCode = getPostalCodeInForm(); if (isValid && postalCode && isCountryUS()) { const isPostalCodeInvalid = getPostalCodeErrorValidity(); if (isPostalCodeInvalid) { isValid = false; } } // getEmailField and email valid functions are written in emailValidation.html file. var emailField = getEmailField(); if ( isValid && emailField && window.shouldCheckEmailValidation && typeof window.shouldCheckEmailValidation === "function" && shouldCheckEmailValidation(emailField.value) ) { var isEmailCustomValid = checkEmailValidityForCustomDomains( emailField.value ); if (!isEmailCustomValid) { isValid = false; } setEmailCustomErrorMessage(); if (isValid) { // check email for candidate restricted emails if (window.ssjoCandidateEmailCheck) { document.querySelector("#backdrop").style.display = "block"; await window.ssjoCandidateEmailCheck(); document.querySelector("#backdrop").style.display = "none"; } if (emailField.customInvalid) { isValid = false; } } } if (isValid) { form.nextElementSibling.style.display = "block"; if (test && flag) { if (recaptchaFlag === 0) { validateRecaptcha(input, thisInstance, form); } else ajaxCall(input, thisInstance, form); } if (!test && !flag) { ajaxCall(input, thisInstance, form); } if (test && !flag) { ajaxCall(input, thisInstance, form); } if (!test && flag) { ajaxCall(input, thisInstance, form); } } }); } function recaptchaStatus() { var flag = 1; const parameters = getURLParameters(); var params = Object.keys(parameters); flag = getByPassStatus(params); if (test) { leadApiRequestObject["recaptchaEnabled"] = "true"; newsApiObject["recaptchaEnabled"] = "true"; candidateWorkHistory["recaptchaEnabled"] = "true"; } else { leadApiRequestObject["recaptchaEnabled"] = "false"; newsApiObject["recaptchaEnabled"] = "false"; candidateWorkHistory["recaptchaEnabled"] = "false"; } if (!flag) { leadApiRequestObject["recaptchaEnabled"] = "false"; leadApiRequestObject[bypassPerimeter] = parameters[bypassPerimeter]; newsApiObject["recaptchaEnabled"] = "false"; newsApiObject[bypassPerimeter] = parameters[bypassPerimeter]; candidateWorkHistory["recaptchaEnabled"] = "false"; candidateWorkHistory[bypassPerimeter] = parameters[bypassPerimeter]; } } function getLeadId() { if (document.querySelector("#leadId") != null) { var leadId = crypto.randomUUID(); var leadIdArray = [...document.querySelectorAll("#leadId")]; leadIdArray.forEach(function (ele) { ele.value = "rhwebsite_" + leadId; }); } } /*************************** Salary Guide Gating Logic*********************************************/ window.ready(function () { if (document.querySelector(".salary-guide") != null) { var currentUrl = new URL(window.location); if (currentUrl.pathname.includes(".html")) { var urlString = currentUrl.pathname.split("."); currentUrl = urlString[0]; } else { currentUrl = currentUrl.pathname; } if ( currentUrl.endsWith("salary-guide") || currentUrl.endsWith("guide-salarial") || currentUrl.endsWith("gehaltsuebersicht") || currentUrl.endsWith("salarisgids") || currentUrl.endsWith("guide-des-salaires") || currentUrl.endsWith("guia-salarial") ) { if (localStorage.getItem("unifiedProfileObject") != null) { var upo = window.getUPO(); var cookie = getCookie("wcmmode"); const gatingPropertyEl = document.querySelector(".gating-properties"); if (gatingPropertyEl != null && cookie != "edit") { var gatingproperty = gatingPropertyEl.getAttribute("gatingproperty") !== undefined ? gatingPropertyEl.getAttribute("gatingproperty") : "sgGatingFormSubmitted"; if (upo.hasOwnProperty(gatingproperty)) { var redirecturl = gatingPropertyEl.getAttribute("gatedredirect") != undefined ? gatingPropertyEl.getAttribute("gatedredirect") : ""; if (redirecturl != "") { window.location.replace(redirecturl); } } } } } } }); function checkQueryString(field) { var url = window.location.href; if (url.indexOf("?" + field + "=") != -1) { return true; } else if (url.indexOf("&" + field + "=") != -1) { return true; } return false; } function getURLParameter(sParam) { var sPageURL = new URL(window.location); sPageURL = sPageURL.search.substring(1); var sURLVariables = sPageURL.split("&"); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split("="); if (sParameterName[0] == sParam) { return sParameterName[1]; } } } //current date and time in format YYYY-MM-DD HH:MM:SS function currentDateTime() { var d = new Date(); d = d.getFullYear() + "-" + (d.getMonth() + 1 < 10 ? "0" + (d.getMonth() + 1) : d.getMonth() + 1) + "-" + (d.getDate() < 10 ? "0" + d.getDate() : d.getDate()) + " " + (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) + ":" + (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) + ":" + (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds()); return d; } function getSubmissionDate() { if (document.querySelector("#submissionDateTime") != null) { document.querySelector("#submissionDateTime").value = currentDateTime(); } if (document.querySelector("#submissionDate") != null) { document.querySelector("#submissionDate").value = currentDateTime(); } } window.ready(function () { /***************************on focus analytics*********************************************/ var refreshCount = 0; document.querySelector(".form-container [rhcl-input][required]") && document .querySelector(".form-container [rhcl-input][required]") .addEventListener("focus", () => { refreshCount += 1; var formTypeVal = document.querySelector( ".rhformhiddenfield input[name=formType]" ); var analyticObj = { tealium_event: "focus_click", datalayer_version: 2, event_action: "focus", event_text: document .querySelector(".form-container [rhcl-input][required]") .getAttribute("name"), form_type: formTypeVal.value ? formTypeVal.value : "", }; if (window.getUPO().isLoggedIn) { analyticObj["user_id_sfc"] = window.getUPO().contactSfID ? window.getUPO().contactSfID : ""; } if (refreshCount < 2) { rh_datalayer_add(analyticObj, "event"); } }); }); }()) </script> <!-- Conditional form routing data --> <form action="https://prd-dr.ma.api.roberthalfonline.com/form-submission/submit" class="form-container"> <span type="hidden" id="bypassToken" name="bypassToken" value="bypassToken"></span> <rhcl-alert hidden data-status="500" copy="Our system temporarily timed out. Please try again in a few minutes or contact us if the issue persists." headline="Error!"></rhcl-alert> <rhcl-alert hidden data-status="502" copy="Our system temporarily timed out. Please try again in a few minutes or contact us if the issue persists." headline="Error!"></rhcl-alert> <rhcl-alert hidden data-status="503" copy="Our system temporarily timed out. Please try again in a few minutes or contact us if the issue persists." headline="Error!"></rhcl-alert> <rhcl-alert hidden data-status="504" copy="Our system temporarily timed out. Please try again in a few minutes or contact us if the issue persists." headline="Error!"></rhcl-alert> <rhcl-alert hidden data-status="error" copy="Sorry, we don’t staff the role of {positionTitle} at this time." headline="Error!"></rhcl-alert> <rhcl-alert hidden data-status="postalCodeError" copy="Robert Half cannot support staffing needs in {postalCode} at this time." headline="Error!"></rhcl-alert> <div class="root container-fluid cmp-container"> <div class="form-field-set row"> <div class="field-set-header"> <rhcl-heading modifier="" tag="h2" theme="" variant="display5"></rhcl-heading> </div> <div class="field-element-row col-md-12"> <div class="row"> <div class="col-md-12 field-element-col"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="rhformtext text aem-GridColumn aem-GridColumn--default--12"> <rhcl-text-field id="rhcl-text-field--551219127" label="First Name" type="text" required min-length="2" min-length-message="First Name must be at least 2 characters." pattern="[a-zA-Z]+(?:(?:\. |[\-' ])[a-zA-Z]+)*" format-message="Please enter a valid First Name" size="small" theme="concrete" name="firstName"> </rhcl-text-field> <script> var element = document.getElementById("rhcl-text-field--551219127"); element.addEventListener("rhcl-text-field-changed", function(){this.value=this.value.trim();}); </script> <script> window.ready(() => { window.addEventListener("rhcl-text-field-blur", e => { const textField = e.target textField.customInvalid = null; textField.customErrorMessage = null; }) }) </script></div> <div class="rhformtext text aem-GridColumn aem-GridColumn--default--12"> <rhcl-text-field id="rhcl-text-field-1000217024" label="Last Name" type="text" required min-length="2" min-length-message="Last Name must be at least 2 characters." pattern="[a-zA-Z]+(?:(?:\. |[\-' ])[a-zA-Z]+)*" format-message="Please enter a valid Last Name" size="small" theme="concrete" name="lastName"> </rhcl-text-field> <script> var element = document.getElementById("rhcl-text-field-1000217024"); element.addEventListener("rhcl-text-field-changed", function(){this.value=this.value.trim();}); </script> <script> window.ready(() => { window.addEventListener("rhcl-text-field-blur", e => { const textField = e.target textField.customInvalid = null; textField.customErrorMessage = null; }) }) </script></div> <div class="rhformtext text aem-GridColumn aem-GridColumn--default--12"> <rhcl-text-field id="rhcl-text-field-1631110618" label="Email" type="email" required pattern="(?!.*\.\.)[\-\w.]+@[\w\-.]+\.[A-Za-z]{2,6}(?:,[\-\w.]+@[\w\-.]+\.[A-Za-z]{2,4}){0,4}" format-message="The field "Email" is in an invalid format." size="small" theme="concrete" name="emailAddress"> </rhcl-text-field> <script> var element = document.getElementById("rhcl-text-field-1631110618"); element.addEventListener("rhcl-text-field-changed", function(){this.value=this.value.trim();}); </script> <script> window.ready(() => { window.addEventListener("rhcl-text-field-blur", e => { const textField = e.target textField.customInvalid = null; textField.customErrorMessage = null; }) }) </script></div> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <rhcl-radio-group headline="Which topic are you interested in?" name="radioButtons" required error-message="This is a required field." size="small" theme="concrete" value="" variant="circle"> <rhcl-radio slot="radio" label="Career and Job service advice" value="career"></rhcl-radio> <rhcl-radio slot="radio" label="Management and hiring trends" value="management"></rhcl-radio> </rhcl-radio-group> </div> <div class="rhformhiddenfield hidden aem-GridColumn aem-GridColumn--default--12"> <input type="hidden" id="form-hidden-761677069" name="countryCode" value="CA"/> </div> <div class="rhformhiddenfield hidden aem-GridColumn aem-GridColumn--default--12"> <input type="hidden" id="form-hidden-83915328" name="formType" value="newsletter-subscription"/> </div> <div class="rhformhiddenfield hidden aem-GridColumn aem-GridColumn--default--12"> <input type="hidden" id="form-hidden-1076501003" name="language" value="EN"/> </div> <div class="rhformhiddenfield hidden aem-GridColumn aem-GridColumn--default--12"> <input type="hidden" id="form-hidden-1173049757" name="formName" value="form_na_ca_en_newsletter"/> </div> </div> </div> <div class="col-md-12 field-element-col"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> </div> </div> <div class="col-md-12 field-element-col"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> </div> </div> </div> </div> </div> </div> <div class="form-footer row"> <div class="form-submit-btn"> <rhcl-button data-recaptcha-message="Failed reCaptcha Validation" id="recaptcha" external="true" full-width="false" full-width-mobile="true" label="Subscribe" size="medium" size-md="" size-sm="medium" theme="light" variant="primary" invisible-key="6LejimkkAAAAAFXPuyq9-cY_Tn0LOdrBWZfprr5D" interactive-key="6LcOU2gkAAAAAADWX4mm0-uWGn4RX-kaZT7UxUQJ"></rhcl-button> </div> <div class="form-foot-note col-md-12 px-0"> <span class="rhcl-typography rhcl-typography--variant-legal"> <rhcl-typography slot="copy" variant="legal">Robert Half Canada Inc.</rhcl-typography> <rhcl-typography slot="copy" variant="legal">181 Bay St, Suite 820 Toronto, ON M5J 2T3</rhcl-typography> <rhcl-typography slot="copy" variant="legal"><a href="https://www.roberthalf.com/ca/en">https://www.roberthalf.com/ca/en</a></rhcl-typography> <rhcl-typography slot="copy" variant="legal">This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.</rhcl-typography> </span> </div> </div> <div id="showPopupStatus" data-copy="<p>Thank you for subscribing.</p> "></div> </form> <div id="backdrop" class="d-none"> <div class="loader-div"> <rhcl-loading-spinner label="Please Wait"></rhcl-loading-spinner> </div> </div> <script src="https://www.google.com/recaptcha/enterprise.js?render=explicit" async defer> </script> <script> { if (!window.common?.getElementByJumpLinkId) { window.common = { ...window.common, /** * this function is to handle getting the element from the jump link id * */ getElementByJumpLinkId: (id) => { let el = document.getElementById(id) if (!el) return const allowedNodeNames = [ 'RHCL-TEXT-FIELD', 'RHCL-TEXTAREA', 'RHCL-DATEPICKER', 'RHCL-TYPEAHEAD', 'RHCL-CHECKBOX', 'RHCL-CHECKBOX-GROUP', 'RHCL-RADIO-GROUP', 'RHCL-DROPDOWN', 'RHCL-SWITCH' ] while (!!el.nextElementSibling && !allowedNodeNames.includes(el.nodeName)) { el = el.nextElementSibling; } if (!allowedNodeNames.includes(el.nodeName)) { // there was no sibling to the element with that id that is a valid input console.error('Could not find a valid input element with this id:', id) // return undefined instead of last found node return } return el } } } const initialEndpoint = 'https:\/\/prd\u002Ddr.ma.api.roberthalfonline.com\/form\u002Dsubmission\/submit' const basicFormEndpoint = 'https:\/\/prd\u002Ddr.ma.api.roberthalfonline.com\/form\u002Dsubmission\/submit' const ssjoEndpoint = 'https:\/\/prd\u002Ddr.lp.api.roberthalfonline.com\/proxy\u002Dlead\u002Dprocessing\/send' const jobAlertsEndpoint = 'https:\/\/prd\u002Ddr.ma.api.roberthalfonline.com\/job\u002Dalerts\/subscribe' const formContainer = document.querySelector('form.form-container'); // get the form routing destinations const destinations = document.querySelectorAll('input[data-form-routing="true"]') let newEndpoint = null; const destinationControls = [] // get array of all destinations controls and required values Array.from(destinations).forEach(destination => { const relatedId = destination.dataset.formRoutingId; const requiredValue = destination.dataset.formRoutingValue; const ssjoEndpointType = destination.dataset.formRoutingSsjoEndpoint; if (!relatedId) return; // skip elements where the dataset has no details // check required value on related id const controlElement = window.common.getElementByJumpLinkId(relatedId); destinationControls.push({controlElement, requiredValue, ssjoEndpointType}) }) // listen on any change of the control elements const mutationobserver = new MutationObserver(mutations => { mutations.forEach(mutation => { updateFormEndpoint() }) }) destinationControls.forEach(({ controlElement }) => { mutationobserver.observe( controlElement, { attributes: true, attributeFilter: ['value', 'selected']} ) }) // update the form action to use the correct endpoint const updateFormEndpoint = () => { newEndpoint = initialEndpoint; destinationControls.some(({ controlElement, requiredValue, ssjoEndpointType }) => { if (controlElement.value === requiredValue) { if (ssjoEndpointType === 'leads') { newEndpoint = ssjoEndpoint; formContainer.dataset.attributeJobalert = 'false'; } else if (ssjoEndpointType === 'nonLeads') { newEndpoint = basicFormEndpoint; formContainer.dataset.attributeJobalert = 'false'; } else if (ssjoEndpointType === 'jobAlerts') { newEndpoint = jobAlertsEndpoint; formContainer.dataset.attributeJobalert = 'true'; } return true; } return false; }); formContainer.action = newEndpoint; formContainer.dataset.attributeSsjo = newEndpoint === ssjoEndpoint; formContainer.dataset.attributeJobalert = newEndpoint === jobAlertsEndpoint; }; // initial form endpoint setup updateFormEndpoint(); } </script> </div> </div> </div> </div> </rhcl-modal> </div> </div> </div> </div> <div class="row"> <div class="col-6 col-md-4 offset-md-3 rh-mta__results-container" data-base-results-text=":count results"> <rhcl-typography variant="body1" modifier="bold">396 results</rhcl-typography> </div> <div class="col-6 col-md-5 rh-mta__insights-container"> <rhcl-button data-bs-toggle="modal" data-bs-target="#insightModal" id="insights" icon="arrow-right" icon-position="right" label="Get insights delivered to your inbox" size="small" variant="text"> </rhcl-button> </div> <div class="row"> <div class="col-6 col-md-3 offset-md-9 rh-mta__sort-container" style="display: none"> <rhcl-dropdown class="rh-mta__sort-dropdown" name="sortBy" required label="Sort by" size="small" theme="white"> <rhcl-dropdown-item slot="item" value="relevance" selected>Relevance</rhcl-dropdown-item> <rhcl-dropdown-item slot="item" value="recent">Most Recent</rhcl-dropdown-item> </rhcl-dropdown> </div> </div> </div> <div class="row"> <div class="col-md-3"> <rhcl-filter-v2 variant="vertical" headline="Filter content by"> <rhcl-filter-item-v2 headline="Areas of Interest" slot="item" name="Areas of Interest"> <rhcl-checkbox-group slot="field" name="Areas of Interest" required label="Areas of Interest" theme="concrete"> <rhcl-checkbox slot="checkbox" label="Career development" value="robert-half:areas-of-interest/career-development"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Hiring help" value="robert-half:areas-of-interest/hiring-help"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Landing a job" value="robert-half:areas-of-interest/landing-a-job"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Management tips" value="robert-half:areas-of-interest/management-tips"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Research and insights" value="robert-half:areas-of-interest/research-and-insights"></rhcl-checkbox> </rhcl-filter-item-v2> <rhcl-filter-item-v2 headline="Content Type" slot="item" name="Content Type" collapsed> <rhcl-checkbox-group slot="field" name="Content Type" required label="Content Type" theme="concrete"> <rhcl-checkbox slot="checkbox" label="Article" value="robert-half:content-type/article"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Infographic" value="robert-half:content-type/infographic"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Report" value="robert-half:content-type/report"></rhcl-checkbox> </rhcl-filter-item-v2> <rhcl-filter-item-v2 headline="Specialization" slot="item" name="Specialization" collapsed> <rhcl-checkbox-group slot="field" name="Specialization" required label="Specialization" theme="concrete"> <rhcl-checkbox slot="checkbox" label="Administrative and customer support" value="robert-half:specialization/administrative-and-customer-support"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Finance and accounting" value="robert-half:specialization/finance-and-accounting"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Financial services" value="robert-half:specialization/financial-services"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Human resources" value="robert-half:specialization/human-resources"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Legal" value="robert-half:specialization/legal"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Marketing and creative" value="robert-half:specialization/marketing-and-creative"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Technology" value="robert-half:specialization/technology"></rhcl-checkbox> </rhcl-filter-item-v2> <rhcl-filter-item-v2 headline="Trending Topics" slot="item" name="Trending Topics" collapsed> <rhcl-checkbox-group slot="field" name="Trending Topics" required label="Trending Topics" theme="concrete"> <rhcl-checkbox slot="checkbox" label="Adaptive working" value="robert-half:trending-topics/adaptive-working"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Competitive advantage" value="robert-half:trending-topics/competitive-advantage"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Diversity Equity and Inclusion" value="robert-half:trending-topics/diversity-equity-and-inclusion"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Inside Robert Half" value="robert-half:trending-topics/inside-robert-half"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Salary and hiring trends" value="robert-half:trending-topics/salary-and-hiring-trends"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Work-Life Balance" value="robert-half:trending-topics/work-life-integration"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Workforce transformation" value="robert-half:trending-topics/workforce-transformation"></rhcl-checkbox> </rhcl-filter-item-v2> <rhcl-filter-item-v2 headline="Tags" slot="item" name="Tags" collapsed> <rhcl-checkbox-group slot="field" name="Tags" required label="Tags" theme="concrete"> <rhcl-checkbox slot="checkbox" label="C-Suite" value="robert-half:rh-tags/c-suite"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Career Tips" value="robert-half:rh-tags/career-tips"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Certifications and Accreditations" value="robert-half:rh-tags/certifications-and-accreditations"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Compensation and Benefits" value="robert-half:rh-tags/compensation-and-benefits"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Consulting" value="robert-half:rh-tags/consulting"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Contract and Temporary Work" value="robert-half:rh-tags/contract-and-temporary-work"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Corporate Culture" value="robert-half:rh-tags/corporate-culture"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Cover Letters" value="robert-half:rh-tags/cover-letters"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Customer Service" value="robert-half:rh-tags/customer-service"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Environmental, Social and Governance" value="robert-half:rh-tags/environmental-social-and-governance"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Evaluating Job Candidates" value="robert-half:rh-tags/evaluating-job-candidates"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Healthcare and Wellness" value="robert-half:rh-tags/healthcare-and-wellness"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="How to Interview Candidates" value="robert-half:rh-tags/how-to-interview-candidates"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Internal Hiring" value="robert-half:rh-tags/internal-hiring"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Job Interview Tips" value="robert-half:rh-tags/job-interview-tips"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Job Market" value="robert-half:rh-tags/job-market"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Management and Leadership" value="robert-half:rh-tags/management-and-leadership"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Mentoring" value="robert-half:rh-tags/mentoring"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Negotiating Offers" value="robert-half:rh-tags/negotiating-offers"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Networking" value="robert-half:rh-tags/networking"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Onboarding" value="robert-half:rh-tags/onboarding"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Remote Working" value="robert-half:rh-tags/remote-working"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Resumania" value="robert-half:rh-tags/resumania"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Retention" value="robert-half:rh-tags/retention"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Salaries and Roles" value="robert-half:rh-tags/salaries-and-roles"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Small Business" value="robert-half:rh-tags/small-business"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="The Future of Work" value="robert-half:rh-tags/the-future-of-work"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Thought Leadership" value="robert-half:rh-tags/thought-leadership"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Working with a Staffing Agency" value="robert-half:rh-tags/working-with-a-staffing-agency"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Workplace Research" value="robert-half:rh-tags/workplace-research"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Workplace Skills" value="robert-half:rh-tags/workplace-skills"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Writing a Resume" value="robert-half:rh-tags/writing-a-resume"></rhcl-checkbox> <rhcl-checkbox slot="checkbox" label="Writing Job Descriptions" value="robert-half:rh-tags/writing-job-descriptions"></rhcl-checkbox> </rhcl-filter-item-v2> </rhcl-filter-v2> </div> <div class="col-md-9" id="mondrianwithfilter"> <rhcl-block-mondrian-tiled-articles variant="embedded" presorted data-endpoint-base="/content/roberthalf/ca/en/insights/jcr:content/root/container/mondriantiles.model.json?pageNo=:pageNum" endpoint="/content/roberthalf/ca/en/insights/jcr:content/root/container/mondriantiles.model.json?pageNo=:pageNum"> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/landing-job/skills-to-include-on-your-resume-with-examples" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/landing-job/skills-to-include-on-your-resume-with-examples" slot="headline">Good Skills to Put on a Resume in Canada (With Examples!)</a> <rhcl-typography variant="body2" slot="description">Are you a Canadian job seeker looking for good skills to put on a resume that will help you stand out from the crowd? Read on for advice that can improve your odds of landing a job across Canada.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="/content/dam/roberthalf/images/blogs/ca/en/rt2/rt2-skills-for-resume.png?$Large-Tile-1x$&fmt=webp-alpha 570w,/content/dam/roberthalf/images/blogs/ca/en/rt2/rt2-skills-for-resume.png?$Medium-Tile-1x$&fmt=webp-alpha 619w,/content/dam/roberthalf/images/blogs/ca/en/rt2/rt2-skills-for-resume.png?$Small-Tile-1x$&fmt=webp-alpha 392w" src="/content/dam/roberthalf/images/blogs/ca/en/rt2/rt2-skills-for-resume.png?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/supporting-communities-with-holiday-giving-at-robert-half" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/supporting-communities-with-holiday-giving-at-robert-half" slot="headline">Supporting communities with Holiday Giving at Robert Half </a> <rhcl-typography variant="body2" slot="description">Robert Half Canada has partnered with non-profits for its annual Holiday Giving program. Learn more about the impact we are making in our communities.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-holiday-giving?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-holiday-giving?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-holiday-giving?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-holiday-giving?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/landing-job/how-to-answer-why-should-we-hire-you-in-canada" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/landing-job/how-to-answer-why-should-we-hire-you-in-canada" slot="headline">How to Answer, “Why Should We Hire You?” in Canada </a> <rhcl-typography variant="body2" slot="description">Learn how to confidently answer the interview question, “Why should we hire you?”. Stand out from other candidates in Canada by showcasing your unique value and professional experience.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-why-should-we-hire-you?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-why-should-we-hire-you?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-why-should-we-hire-you?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-why-should-we-hire-you?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/career-development/how-to-ask-for-feedback-at-work-and-power-your-career-growth" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/career-development/how-to-ask-for-feedback-at-work-and-power-your-career-growth" slot="headline">How to Ask for Feedback at Work – and Power Your Career Growth in Canada</a> <rhcl-typography variant="body2" slot="description">Knowing how to ask for feedback at work can fuel your career growth by improving your skills and strengthening relationships. Learn practical tips for how to request feedback effectively at your job in Canada. </rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-ask-for-feedback?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-ask-for-feedback?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-ask-for-feedback?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-ask-for-feedback?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/why-the-salary-evaluation-is-key-to-your-companys-success" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/why-the-salary-evaluation-is-key-to-your-companys-success" slot="headline">How to determine an employee’s salary in Canada – a guide for employers</a> <rhcl-typography variant="body2" slot="description">Learn how to determine an employee's salary in Canada with our guide for employers. Discover essential salary benchmarking strategies using the Robert Half Salary Guide and Calculator to offer competitive compensation and attract top talent.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-set-salaries?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-set-salaries?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-set-salaries?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-how-to-set-salaries?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/career-development/how-to-negotiate-salary-after-you-get-a-job-offer" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/career-development/how-to-negotiate-salary-after-you-get-a-job-offer" slot="headline">When and How to Negotiate Salary for a New Job in Canada</a> <rhcl-typography variant="body2" slot="description">Wondering how to negotiate salary for a new job? Discover key strategies to confidently discuss pay, benefits, and timing in job offers, plus insider tips for Canadian salary expectations.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-negotiating-salary-for-new-job?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-negotiating-salary-for-new-job?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-negotiating-salary-for-new-job?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-negotiating-salary-for-new-job?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/end-of-year-prepare-your-team-and-career-for-the-new-year" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/end-of-year-prepare-your-team-and-career-for-the-new-year" slot="headline">2024 End of Year Performance Review Tips for Employees and Managers Across Canada</a> <rhcl-typography variant="body2" slot="description">Robert Half Canada offers performance review tips for employees and managers to help both sides optimize the end of the working year, whether it’s discussing performance, position, and salary goals or planning for the new year with promise and purpose.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-end-of-year-performance?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-end-of-year-performance?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-end-of-year-performance?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-end-of-year-performance?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/workplace-trends-of-2024-future-of-work-predictions-for-2025" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/workplace-trends-of-2024-future-of-work-predictions-for-2025" slot="headline">2024 Workplace Trends and 2025 Predictions for Canadian Professionals</a> <rhcl-typography variant="body2" slot="description">Explore the top workplace trends shaping Canadian businesses in 2024 and the key shifts expected in 2025. Discover insights to stay ahead in a dynamic job market.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-trends%20from%202024%20to%202025?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-trends%20from%202024%20to%202025?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-trends%20from%202024%20to%202025?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-trends%20from%202024%20to%202025?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/canada-tech-and-it-salary-trends-what-to-expect-in-2025" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/canada-tech-and-it-salary-trends-what-to-expect-in-2025" slot="headline">Canada Tech and IT Salary Trends: What to Expect in 2025</a> <rhcl-typography variant="body2" slot="description">Prepare for 2025 with insights from the Canada Salary Guide from Robert Half. Discover tech salary trends, in-demand skills, and hiring strategies to tackle talent shortages and secure top talent in AI, ML, and cybersecurity.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Tech?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Tech?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Tech?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Tech?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> <rhcl-mondrian-card slot="card" variant="standard" destination="/ca/en/insights/research/legal-salary-trends-what-to-expect-in-2025" eyebrow="Article" total-posts="0 posts"> <a href="/ca/en/insights/research/legal-salary-trends-what-to-expect-in-2025" slot="headline">Legal Salary Trends: What to Expect in 2025</a> <rhcl-typography variant="body2" slot="description">Stay ahead in Canada’s legal hiring market with insights from the 2025 Robert Half Salary Guide. Discover legal salary trends, succession planning challenges, and the hybrid work shift to attract and retain top talent in a competitive landscape.</rhcl-typography> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 619px,(min-width: 0px) 392px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Legal?$Large-Tile-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Legal?$Medium-Tile-1x$&fmt=webp-alpha 619w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Legal?$Small-Tile-1x$&fmt=webp-alpha 392w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-SG25%20PG%20blog%20-%20Legal?$Large-Tile-1x$&fmt=webp-alpha" alt="" aria-hidden="true"/> </rhcl-mondrian-card> </rhcl-block-mondrian-tiled-articles> </div> </div> </div> <script> window.filterTimeoutMta = 0; window.filterClearTimeoutMta = 0; window.ready(() => { window.addEventListener("rhcl-filters-v2-applied", (e) => { window.clearTimeout(filterTimeoutMta); let filters = e.detail; let allTags = []; filters.forEach((filter) => { let fields = filter.value; let fieldName = Object.keys(fields).pop(); let tags = fields[fieldName]; if (tags) { tags = tags.replace(",", "_"); allTags.push(tags); } }); let qs = allTags.join("_"); let mta = document.querySelector( "rhcl-block-mondrian-tiled-articles[variant='embedded']" ); mta.endpoint = mta.getAttribute("data-endpoint-base") + "&tags=" + qs; filterTimeoutMta = window.setTimeout(() => { console.log(e); mta.getResults(); document.querySelector(".rh-mta__sort-container").style.display = "block"; }, 250); }); document .querySelector('rhcl-dropdown[name="sortBy"]') ?.addEventListener("rhcl-dropdown-changed", (e) => { let mta = document.querySelector( "rhcl-block-mondrian-tiled-articles[variant='embedded']" ); let endpoint = mta.getAttribute("data-endpoint-base"); if (mta.endpoint) { endpoint = mta.endpoint; } let sort = e.detail; if (endpoint.includes("sort=")) { endpoint = endpoint.replace(/&sort=[a-z]+/g, "&sort=" + sort); } else { endpoint = endpoint + "&sort=" + sort; } mta.endpoint = endpoint; window.setTimeout(() => { mta.getResults(); }, 250); }); document .querySelector("rhcl-button#insights") ?.addEventListener("rhcl-button-clicked", () => { document.querySelector("#email-model").setAttribute("show-modal", "true"); }); window.addEventListener("rhcl-mta-tiles-loaded", (e) => { let resultCount = e.detail; document.querySelector( ".rh-mta__results-container rhcl-typography" ).textContent = document .querySelector(".rh-mta__results-container") .getAttribute("data-base-results-text") .replace(":count", resultCount); if (resultCount === 0) { let mta = document.querySelector("rhcl-block-mondrian-tiled-articles"); window.setTimeout(() => { mta.loaded = true; }, 500); } }); window.addEventListener("rhcl-filters-v2-cleared", (e) => { window.clearTimeout(filterClearTimeoutMta); let mta = document.querySelector( "rhcl-block-mondrian-tiled-articles[variant='embedded']" ); mta.endpoint = mta.getAttribute("data-endpoint-base"); filterClearTimeoutMta = window.setTimeout(() => { mta.getResults(); document.querySelector(".rh-mta__sort-container").style.display = "none"; }, 250); }); }); </script></div> <div class="cmp-rhcl-scrolling-cards-collection-block-wrapper rhcl__background--primary rhcl__background-style--curved aem-GridColumn aem-GridColumn--default--12"> <style> div.featuredcard.container{margin-left:12px !important;margin-right:12px !important} div.featuredcard.container rhcl-content-card{padding-left:12px !important;padding-right:12px !important} </style> <div id="scrollingcardscollectionblock-b4d2bff761" class="cmp-container"> <rhcl-block-scrolling-cards-collection logo="false" background="primary" background-style="curved"> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Inside Robert Half" icon="users" cta-destination="/ca/en/insights/robert-half" variant="featured-content" layout="topic-hub" theme="deep-ocean" cta-external="false" num-posts="11"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Workplace Transformation" icon="users" cta-destination="/ca/en/insights/workforce-transformation" variant="featured-content" layout="topic-hub" theme="deep-ocean" cta-external="false" num-posts="11"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Diversity, Equity and Inclusion" icon="users" cta-destination="/ca/en/insights/diversity-equity-inclusion" variant="featured-content" layout="topic-hub" theme="midnight-agave" cta-external="false" num-posts="9"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Work/Life Balance" icon="users" cta-destination="/ca/en/insights/work-life-balance" variant="featured-content" layout="topic-hub" theme="deep-ocean" cta-external="false" num-posts="9"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Competitive Advantage" icon="users" cta-destination="/ca/en/insights/competitive-advantage" variant="featured-content" layout="topic-hub" theme="copper" cta-external="false" num-posts="59"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Adaptive Working" icon="users" cta-destination="/ca/en/insights/flexible-working" variant="featured-content" layout="topic-hub" theme="copper" cta-external="false" num-posts="12"></rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Salary and Hiring Trends" icon="users" cta-destination="/ca/en/insights/salary-hiring-trends" variant="featured-content" layout="topic-hub" theme="blue-slate" cta-external="false" num-posts="68"></rhcl-content-card> </div> <h2 slot="headline">More to explore</h2> </rhcl-block-scrolling-cards-collection> </div> </script> </template> </div> <div class="cmp-rhcl-scrolling-cards-collection-block-wrapper aem-GridColumn aem-GridColumn--default--12"> <style> div.featuredcard.container{margin-left:12px !important;margin-right:12px !important} div.featuredcard.container rhcl-content-card{padding-left:12px !important;padding-right:12px !important} </style> <div id="scrollingcardscollectionblock-fd793a38f3" class="cmp-container"> <rhcl-block-scrolling-cards-collection logo="false"> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Career development" copy="Get up-to-date information on employment trends in your industry, including salaries, skills and changes to the labor market." icon="users" cta-destination="/ca/en/insights/career-development" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00012-1133218592?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00012-1133218592?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00012-1133218592?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00012-1133218592?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Management tips" copy="Increase productivity in your workplace with the latest advice for managing and retaining employees." icon="users" cta-destination="/ca/en/insights/management-tips" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35005-1842862516?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35005-1842862516?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35005-1842862516?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35005-1842862516?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Hiring help" copy="Ensure your firm's benefits, pay and corporate culture exceed the competition’s in order to attract and retain skilled employees." icon="users" cta-destination="/ca/en/insights/hiring-help" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35006-1043390353?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35006-1043390353?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35006-1043390353?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35006-1043390353?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Landing a job" copy="Learn how to write a professional resume, prep for a job interview and make a lasting impression on hiring managers." icon="users" cta-destination="/ca/en/insights/landing-job" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00003?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00003?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00003?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-00003?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <div class="featuredcard container responsivegrid" data-aem-wrapper="true" slot="card"> <rhcl-content-card slot="card" headline="Research & insights" copy="Get exclusive research and resources you can use to make better hires, hone your management skills and advance your career." icon="users" cta-destination="/ca/en/insights/research" variant="featured-content" layout="trending-insights" cta-external="false"> <!-- using dynamic media template --> <img slot="image" loading="lazy" fetchpriority="low" sizes="(min-width: 1024px) 570px,(min-width: 768px) 476px,(min-width: 0px) 335px" srcset="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35007-1870485526?$Rectangle2-Large-1x$&fmt=webp-alpha 570w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35007-1870485526?$Rectangle2-Medium-1x$&fmt=webp-alpha 476w,https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35007-1870485526?$Rectangle2-Small-1x$&fmt=webp-alpha 335w" src="https://s7d9.scene7.com/is/image/roberthalfintl/rt2-35007-1870485526?$Rectangle2-Large-1x$&fmt=webp-alpha" alt aria-hidden="true" width="400" height="240"/> </rhcl-content-card> </div> <h2 slot="headline">Explore Areas of Interest</h2> </rhcl-block-scrolling-cards-collection> </div> </script> </template> </div> <div class="root container-fluid cmp-container rhcl__background--primary rhcl__background-style--flat-solid rhcl__theme--light aem-GridColumn aem-GridColumn--default--12"> <style> .model-content,.model-content form{display:flex;flex-direction:column;align-items:center} .model-content form{margin-top:52px;padding:0} .model-content rhcl-typography,.model-content rhcl-heading{text-align:center !important} .form-footer{padding:0 40px} @media screen and (max-width:767px){.form-footer{padding:0} } .form-footer .form-btn{margin-bottom:32px} .subscribe-modal-image{height:72px;width:72px;object-fit:cover;margin-bottom:32px} </style> <rhcl-block-centered-content variant="wide" quaternary-cta-external="false" tertiary-cta-external="false" theme="light" background="primary" background-style="flat-solid"> <h2 slot="headline">Get insights in your inbox</h2> <a slot="primary-cta" href="/ca/en/insights/subscribe-to-robert-half-newsletter" target="_self">Subscribe for updates</a> </rhcl-block-centered-content> <script type="text/javascript"> { window.ready(() => { const stackingCardsBlocks = document.querySelectorAll( "rhcl-block-stacking-cards" ); stackingCardsBlocks.forEach((stackingCardsBlock) => { // replace tokens hyperlink = stackingCardsBlock.querySelector(".scb-hyperlink"); let redirectLocation = stackingCardsBlock.dataset.hyperlinkRedirectLocation; const cta = stackingCardsBlock.dataset.hyperlinkCta; const isTel = stackingCardsBlock.dataset.hyperlinkIsTel; if (isTel == "true") { // use the phone number from the cta for phone links redirectLocation = cta; } if (hyperlink) { hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:hyperlink]", "<a href='" + (isTel == "true" ? "tel:" : "") + redirectLocation + "' target='_blank' data-rhcl-listener='true'>" + cta + "</a>" ); } }); }); } window.addEventListener('load', () => { const centeredContentBlock = document.querySelector("rhcl-block-centered-content"); let checkboxCenter; if (centeredContentBlock != null) { checkboxCenter = centeredContentBlock.getAttribute("data-check"); } if (checkboxCenter === "enablePopUp") { centeredContentBlock.addEventListener("rhcl-button-clicked", (e) => showPopupCenteredBlock(e, centeredContentBlock)); } }); function showPopupCenteredBlock(e, centeredContentBlock) { let button = e.composedPath()[0]; if(button.componentParentRef === centeredContentBlock) { e.preventDefault(); const modalPopUp = document.getElementById("email-model") if (modalPopUp != null) { modalPopUp.setAttribute("show-modal", ""); } } } { window.ready(() => { const centeredContentBlocks = document.querySelectorAll( "rhcl-block-centered-content" ); const upo = window.getUPO(); centeredContentBlocks.forEach((centeredContentBlock) => { const email = upo.email; const searchParams = new URLSearchParams(window.location.search); const registrantId = searchParams.get("rid"); // replace tokens const hyperlink = centeredContentBlock.querySelector(".ccb-response-hyperlink") const redirectLocation = centeredContentBlock.dataset.hyperlinkRedirectLocation; const cta = centeredContentBlock.dataset.hyperlinkCta; hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:hyperlink]", "<a href='" + redirectLocation + "' target='_blank' data-rhcl-listener='true'>" + cta + "</a>" ) hyperlink.innerHTML = hyperlink.innerHTML.replaceAll( "[token:resendNow]", "<a href='#' id='resendNowA'>" + cta +"</a>" ) // if there is no email we can't resend emails if (!email) return; if (centeredContentBlock.copy) { centeredContentBlock.copy = centeredContentBlock.copy.replaceAll( "[token:email]", email ); } if (centeredContentBlock.subheading) { centeredContentBlock.subheading = centeredContentBlock.subheading.replaceAll("[token:email]", email); } const shouldResendEmail = centeredContentBlock.dataset.resendEmail; if (shouldResendEmail) { // setup resend email logic const anchorEl = hyperlink.querySelector("#resendNowA") anchorEl.addEventListener("click", async (e) => { e.preventDefault(); const resendUrl = window.aemSettings.rh_account_creation .accountCreateResendEmailEndpoint; if (email && resendUrl && registrantId) { fetch(resendUrl, { method: "POST", body: JSON.stringify({ registrantID: registrantId, }), }); } }); } }); }); } </script> </div> </div> </div> </div> <div class="experiencefragment aem-GridColumn aem-GridColumn--default--12"> <div id="experiencefragment-8082353bc2" class="cmp-experiencefragment cmp-experiencefragment--footer"> <div id="container-81a83279e3" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="footer aem-GridColumn aem-GridColumn--default--12"> <div id="linklist_4_modal_5"> <div class="xfpage page basicpage"> <!--<sly data-sly-resource="contexthub"/>--> <div id="container-fa5df07fb8" class="cmp-container"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="root container-fluid cmp-container aem-GridColumn aem-GridColumn--default--12"> <script type="text/javascript"> window.ready(function (e) { if (document.querySelector('rhcl-modal rhcl-button')) { document.querySelector('rhcl-modal rhcl-button').addEventListener('rhcl-button-clicked', () => { document.querySelector('rhcl-modal').setAttribute('show-modal',false); }) } }) </script> <rhcl-modal behavior="close" variant="popup"> <rhcl-typography>You are exiting the Robert Half Canada site and will be redirected to the Robert Half US site. All Investor Centre content will be available in English only. <p style=" text-align: center; "><a href="/us/en/about/investor-center" target="_self" title="investor-centre" rel="noopener noreferrer">Continue</a> </p></rhcl-typography> </rhcl-modal> </div> </div> </div> </div> </div> <rhcl-footer logo-destination="/ca/en" variant="default"> <rhcl-list-base slot="menu" headline="Services" headline-tag="h2"> <rhcl-menu-link slot="item" data-modal-identifier="linklist_1_modal_1"> <a slot="item" href="/ca/en/jobs">Browse Jobs</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_1_modal_2"> <a slot="item" href="/ca/en/hire-talent/flexible-staffing">Contract Talent</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_1_modal_3"> <a slot="item" href="/ca/en/hire-talent/full-time-staffing">Permanent Talent</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_1_modal_4"> <a slot="item" href="/ca/en/consulting">Consulting Solutions</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="menu" headline="Areas of Expertise" headline-tag="h2"> <rhcl-menu-link slot="item" data-modal-identifier="linklist_2_modal_1"> <a slot="item" href="/ca/en/accounting-finance">Finance & Accounting</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_2_modal_2"> <a slot="item" href="/ca/en/tech-it">Technology</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_2_modal_3"> <a slot="item" href="/ca/en/marketing-creative">Marketing & Creative</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_2_modal_4"> <a slot="item" href="/ca/en/administrative">Administrative & Customer Support</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_2_modal_5"> <a slot="item" href="/ca/en/legal">Legal</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="menu" headline="Resources & Tools" headline-tag="h2"> <rhcl-menu-link slot="item" data-modal-identifier="linklist_3_modal_1"> <a slot="item" href="/ca/en/insights">Discover Insights</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_3_modal_2"> <a slot="item" href="/ca/en/job-details-all">Job directory</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_3_modal_3"> <a slot="item" href="/ca/en/insights/salary-guide">Salary Guide</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_3_modal_4"> <a slot="item" href="/ca/en/login">Time Reports</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_3_modal_5"> <a slot="item" href="/ca/en/contact">Contact us</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="menu" headline="About" headline-tag="h2"> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_1"> <a slot="item" href="/ca/en/about/about-robert-half">About Robert Half</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_2"> <a slot="item" href="/ca/en/about/leadership">Leadership</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_3"> <a slot="item" href="/ca/en/join-robert-half">Careers With Us</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_4"> <a slot="item" href="/ca/en/locations">Locations</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-popup data-modal-identifier="linklist_4_modal_5"> <a slot="item">Investor centre</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_6"> <a slot="item" href="https://press.roberthalf.ca/">Press</a> </rhcl-menu-link> <rhcl-menu-link slot="item" data-modal-identifier="linklist_4_modal_7"> <a slot="item" href="/ca/en/about/our-company/brands">Our Brands</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="social-menu"> <rhcl-menu-link slot="item" icon="facebook" description="Facebook"> <a slot="item" href="https://www.facebook.com/pages/Robert-Half/182444181913924"></a> </rhcl-menu-link> <rhcl-menu-link slot="item" icon="linkedin" description="LinkedIn"> <a slot="item" href="https://www.linkedin.com/company/robert-half-international"></a> </rhcl-menu-link> <rhcl-menu-link slot="item" icon="twitter" description="Twitter"> <a slot="item" href="https://twitter.com/roberthalf_can"></a> </rhcl-menu-link> <rhcl-menu-link slot="item" icon="youtube" description="Youtube"> <a slot="item" href="https://www.youtube.com/roberthalfcanada"></a> </rhcl-menu-link> <rhcl-menu-link slot="item" icon="instagram" description="Instagram"> <a slot="item" href="https://www.instagram.com/roberthalf/"></a> </rhcl-menu-link> </rhcl-list-base> <rhcl-list-base slot="legal-menu"> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/fraud-alert">Fraud Alert</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/privacy">Privacy Policy</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/ca/en/terms">Terms of Use</a> </rhcl-menu-link> <rhcl-menu-link slot="item"> <a slot="item" href="/content/dam/roberthalf/documents/ca/en/non-indexed/legal/Modern%20Slavery%20Report%20FY2023.pdf">Modern Slavery Report</a> </rhcl-menu-link> </rhcl-list-base> <rhcl-typography slot="copyright">Robert Half Canada Inc. All Rights Reserved. Numéro de permis du Québec AP-2000503 </rhcl-typography> <rhcl-country-selector slot="locale-selector" name="locale"> <a data-locale="en-AU" href="https://www.roberthalf.com/au/en/insights" slot="link"> Australia - English </a> <a data-locale="en-BE" href="https://www.roberthalf.com/be/en/insights" slot="link"> Belgium - English </a> <a data-locale="nl-BE" href="https://www.roberthalf.com/be/nl/inzichten" slot="link"> Belgium - Nederlands </a> <a data-locale="fr-BE" href="https://www.roberthalf.com/be/fr/tendances" slot="link"> Belgium - Français </a> <a data-locale="pt-BR" href="https://www.roberthalf.com/br/pt/insights" slot="link"> Brazil - Português </a> <a data-locale="en-CA" href="https://www.roberthalf.com/ca/en/insights" slot="link"> Canada - English </a> <a data-locale="fr-CA" href="https://www.roberthalf.com/ca/fr/perspectives" slot="link"> Canada - Français </a> <a data-locale="es-CL" href="https://www.roberthalf.com/cl/es/insights" slot="link"> Chile - Español </a> <a data-locale="en-CN" href="https://www.roberthalf.cn/cn/en/insights" slot="link"> China - English </a> <a data-locale="zh-CN" href="https://www.roberthalf.cn/cn/zh/insights" slot="link"> China - 中文 </a> <a data-locale="fr-FR" href="https://www.roberthalf.com/fr/fr/tendances" slot="link"> France - Français </a> <a data-locale="de-DE" href="https://www.roberthalf.com/de/de/insights" slot="link"> Germany - Deutsch </a> <a data-locale="en-HK" href="https://www.roberthalf.com/hk/en/insights" slot="link"> Hong Kong, China - English </a> <a data-locale="en-IE" href="https://www.roberthalf.com/ie/en/insights" slot="link"> Ireland - English </a> <a data-locale="en-JP" href="https://www.roberthalf.com/jp/en/insights" slot="link"> Japan - English </a> <a data-locale="ja-JP" href="https://www.roberthalf.com/jp/ja/insights" slot="link"> Japan - 日本語 </a> <a data-locale="en-LU" href="https://www.roberthalf.com/lu/en/insights" slot="link"> Luxembourg - English </a> <a data-locale="fr-LU" href="https://www.roberthalf.com/lu/fr" slot="link"> Luxembourg - Français </a> <a data-locale="en-NL" href="https://www.roberthalf.com/nl/en/insights" slot="link"> Netherlands - English </a> <a data-locale="nl-NL" href="https://www.roberthalf.com/nl/nl/inzichten" slot="link"> Netherlands - Nederlands </a> <a data-locale="en-NZ" href="https://www.roberthalf.com/nz/en/insights" slot="link"> New Zealand - English </a> <a data-locale="en-SG" href="https://www.roberthalf.com/sg/en/insights" slot="link"> Singapore - English </a> <a data-locale="de-CH" href="https://www.roberthalf.com/ch/de/insights" slot="link"> Switzerland - Deutsch </a> <a data-locale="en-CH" href="https://www.roberthalf.com/ch/en/insights" slot="link"> Switzerland - English </a> <a data-locale="fr-CH" href="https://www.roberthalf.com/ch/fr/tendances" slot="link"> Switzerland - Français </a> <a data-locale="en-AE" href="https://www.roberthalf.com/ae/en/insights" slot="link"> United Arab Emirates - English </a> <a data-locale="en-GB" href="https://www.roberthalf.com/gb/en/insights" slot="link"> United Kingdom - English </a> <a data-locale="en-US" href="https://www.roberthalf.com/us/en/insights" slot="link"> United States - English </a> </rhcl-country-selector> </rhcl-footer> <rhcl-back-to-top-button></rhcl-back-to-top-button> <script type="text/javascript"> window.addEventListener("rhcl-menu-link-clicked", (e) => { e.preventDefault(); let link = e.composedPath()[0]; if(link.hasAttribute('data-modal-popup')) { let modalId = link.getAttribute('data-modal-identifier'); let modal = document.querySelector(`div#${modalId} rhcl-modal`); modal.setAttribute('show-modal', true); } }); document.addEventListener('rhcl-locale-selector-item-clicked', function (e) { if(e && e.detail){ window.location.href = e.detail; } }); </script> </div> </div> </div> </div> </div> </div> </div> </div> <link rel="preload" href="https://rh.my.salesforce-sites.com/liveagent/EinsteinBotEmbedCSS" as="style" onload="this.onload=null;this.rel='stylesheet'"/> <noscript><link rel="stylesheet" href="https://rh.my.salesforce-sites.com/liveagent/EinsteinBotEmbedCSS"/></noscript> </body> </html>