Staffing Agency Web Design in Hamilton
I have not built a website for a licensed staffing agency. What I have built is the hiring half of a freight carrier’s site — a driver path split away from the sales path at the navigation, with its own protected application form — and an academy site where signing up is the whole point of the page. On 1 January 2026 Ontario started writing rules for the job posting itself, so that is where a staffing agency’s site now has to start.
At twenty-five, Part III.1 switches on. O. Reg. 476/24 exempts an employer with fewer than 25 employees on the day a publicly advertised job posting is posted. A temporary help agency counts every assignment employee it employs, active or inactive on that day — so the agency is over the line long before its client is.
Sources: Employment Standards Act, 2000, Part III.1 (ss. 8.1–8.7, in force 1 January 2026) and Part XVIII.1 (licensing, in force 1 July 2024); O. Reg. 476/24; O. Reg. 289/01. Read on e-Laws on 23 September 2026.
What must a job posting on an Ontario staffing agency’s website contain?
Three statements, inside the posting. Since 1 January 2026 the Employment Standards Act, 2000 requires every publicly advertised job posting to give the expected compensation or a range, to disclose any use of artificial intelligence to screen, assess or select applicants, and to say whether the posting is for an existing vacancy. A fourth rule bans Canadian-experience requirements.
Those four rules are sections 8.2 to 8.5 of the Act. They were added by two different statutes — the compensation, Canadian-experience and artificial-intelligence rules by the Working for Workers Four Act, 2024, and the vacancy statement and the duty to inform interviewed applicants by the Working for Workers Five Act, 2024 — and all of them were proclaimed in force on the same day, 1 January 2026. Section 8.7, which is about job boards rather than employers, came into force on the same date.
The reason this matters to a web designer and not only to a compliance officer is where the rules land. They do not regulate the company, the contract or the interview. They regulate a page. On a staffing agency’s website the posting is the product, there are dozens or hundreds of them, and they are generated by a template — which means the template either carries the three statements on every posting or it carries them on none.
Pay: $19.50 to $21.00 an hourInformation about the expected compensation, or a range of expected compensation, for the position.
The fourth row is the one that reaches past the posting. Section 8.3 (1) prohibits Canadian-experience requirements “in the posting or in any associated application form”, so a form field asking for years of Canadian experience is caught even when the posting text is clean. Professional licensing and registration requirements are not caught — a posting may still require a valid Ontario forklift certification or a trade licence.
| Requirement | What the rule says | Where it lives in the build |
|---|---|---|
| Expected compensation | Information about the expected compensation, or a range of expected compensation, for the position. | A required field on the posting record, not a free-text box — so a posting cannot be published without it. |
| Artificial intelligence | A statement disclosing the use of AI to screen, assess or select applicants for the position. | A per-posting toggle that prints a fixed sentence. It stays true when a client’s own system does the screening. |
| Existing vacancy | A statement disclosing whether the posting is for an existing vacancy or not. | A two-option field with no default, because the statement is required either way. |
| Canadian experience | No requirements related to Canadian experience in the posting or any associated application form. | A copy check on the posting and a field review on the form, including the screening questions. |
| Linked pages | Information in a page or document the posting links to is considered part of the posting. | Every page a posting links to is versioned with it, so the two cannot drift apart. |
| After the interview | Within 45 days of the last interview, tell the applicant whether a hiring decision has been made. | A status page per application, plus the outbound message, because the ministry accepts either. |
This page describes how I build a website to those rules. It is not legal advice, and the employer — not the web designer — answers for what a posting says. Where a rule needs interpreting, the ministry or the agency’s own counsel decides, and the build follows that.
How much pay information has to go in the posting?
Either a single expected figure or a range, and the choice is the employer’s. A published range may not span more than $50,000 a year. Nothing is required at all once the expected compensation, or the top of the range, passes $200,000 a year. Both limits come from O. Reg. 476/24, sections 3 and 4.
Both numbers are in the regulation, not the Act. That is worth knowing before a posting template hard-codes them: O. Reg. 476/24 can be amended without a bill, so the $50,000 span and the $200,000 cut-off are the two values most likely to move. In the build they are settings, not constants in the template.
“Compensation” in the regulation means wages. It covers an hourly rate, a salary, commission, a piece rate and a bonus tied to hours, production or efficiency. It does not cover tips, expense or travel allowances, stock options, or a bonus that is both discretionary and unrelated to hours, production or efficiency. If the package has more than one component, the posting needs information about each one.
The ministry accepts a description where a number is impossible: a posting may say a candidate can expect to earn up to a stated amount in commission, or a bonus of up to ten per cent of salary based on individual performance, without publishing the commission schedule. That flexibility is worth building for. A posting record with one pay field forces a warehouse rate and a commission structure through the same box; two fields, one for the rate and one for the variable component, print correctly for both.
For a temporary help agency the rate in the posting is the rate the agency pays the assignment employee, because the agency is the employer. That follows from Part XVIII.1, where the agency — not the client — is the employer of an assignment employee, and it is worth stating on the page rather than leaving to inference.
Is a staffing agency’s job board a job posting platform under the ESA?
If it advertises roles at other employers, yes. Section 8.7 applies to anyone operating an online platform that displays publicly advertised job postings, and it excludes only a platform advertising positions with the employer that runs it. A staffing agency’s board carries client roles, so it is inside the definition.
The ministry’s own guide settles it with two examples. A toy manufacturer whose website advertises only its own positions is not operating a job posting platform. A consulting firm whose platform advertises both its own positions and postings for positions it is filling for its clients is, and must follow the platform rules. The second example is a job board carrying roles the agency is filling for someone else, which is what a recruitment agency board is.
Every posting still needs pay, the AI line and the vacancy statement. Nothing extra is owed, because the board advertises only positions with the employer that runs it.
Two components the first board does not need, both required to sit somewhere users will see them:
⚑ Report this posting → ▤ Our policy on fraudulent postings →The two components are small and neither is optional. A report mechanism has to be displayed where users will see it, so a link in a privacy policy will not do — it belongs on the posting itself, next to the apply button, because that is where a candidate is standing when a posting looks wrong. The written policy has to say how fraudulent postings are addressed and be posted in at least one conspicuous place, and a revised policy has to be posted in turn.
The Act does not say how to handle a report, which is deliberate — the ministry states that the duty does not require any particular method. So the design decision is yours: the version I would build takes the report from a one-click control, records which posting and which version it referred to, and leaves the unpublishing to a person, because a report is an allegation and the Act prescribes no particular response to it.
What has to still exist three years after a posting comes down?
A copy of the posting, any application form that went with it, a copy of every page or document it linked to, each revised version the public actually saw, and whatever you told each interviewed applicant. The three years run from the day public access to the posting is removed, not from the day it was published.
- Every version of the postingNot the last one. If the text is revised while it is live, each version that the public saw has to be kept.
- The application formKept with the posting it belonged to, because s. 8.3 reaches the form as well as the posting.
- Every page the posting linked toA linked benefits page or shift schedule is part of the posting, so a copy of it has to survive too.
- The AI, pay and vacancy statementsThey live inside the posting, so they are retained with it — which is only true if the posting was archived rather than edited.
- What you told each interviewed applicantRetained for three years from the day the information was given, whether it went by email, text or a status page.
- The date public access endedThe three years run from the day the posting came down, so the take-down date is itself a record worth storing.
A content management system that lets a recruiter edit a live posting in place is the wrong tool for this, because the edit destroys the version that was advertised. The build that satisfies it is plain: every posting gets an immutable version record with its own timestamp, the linked pages are snapshotted at publish time, and the take-down date is written when the posting is unpublished rather than when somebody remembers.
Two of those items are easy to miss because they are not obviously records. The first is the linked page: the ministry states that where a posting links to a website or a document containing information relevant to the posting, that information is part of the posting, and a copy of the linked source has to be retained with it. A benefits page, a shift-pattern page or a downloadable job description is therefore evidence, and it has to be kept as it looked on the day — not as it looks now.
The second is the revision. If the text changes while the posting is live, each advertised version has to be kept. Most job boards are built the other way round: a recruiter opens the posting, fixes the rate, saves, and the previous version no longer exists anywhere. That is a one-line database decision made years before anyone reads the regulation, and it is the single change I would make first on an existing agency site.
The 45-day duty is the third record. The employer must tell every interviewed applicant whether a hiring decision has been made within 45 days of the last interview, in person, in writing or using technology — and the ministry explicitly accepts a status update posted to the employer’s website or application portal, provided the applicant has been given a link to it. A candidate status page is therefore one of the two channels that satisfy the duty, and the only one that does not need a message sent per applicant.
Where does a staffing agency’s licence number belong on the site?
Beside the contact block, in text, on every page. Since 1 July 2024 a temporary help agency needs a licence to operate and a recruiter needs one to act, and a client who knowingly engages an unlicensed agency is itself liable for a $15,000 penalty on a first contravention. The website is where that check starts.
Nothing in the Act orders an agency to publish its licence number, and I am not going to pretend otherwise. The argument for putting it on the site is commercial. The prohibition in section 74.1.1 (2) falls on the client, not only on the agency, and the first-contravention penalty for the licensing sections is sixty times the ordinary one: $15,000 for a first contravention, $25,000 for a second inside three years, $50,000 for a third. A buyer carrying that exposure has to check the register, and the licence number on your site is what lets them match their entry to you without emailing to ask.
| Contravention | First | Second in three years | Third or more |
|---|---|---|---|
| Operating unlicensed, or knowingly engaging someone who is | $15,000 | $25,000 | $50,000 |
| Any other provision of the Act | $250 | $500 | $5,000 |
| Any other provision, per employee affected | $250 × employees | $500 × employees | $5,000 × employees |
| On conviction — corporation | up to $100,000 | up to $250,000 | up to $500,000 |
| On conviction — individual | up to $100,000, or up to 12 months’ imprisonment, or both | ||
The ministry publishes the other half of the check. Section 74.1.12 requires the Director to maintain a public record on a Government of Ontario website carrying every licensee’s name, the date the licence was issued or renewed and the date it expires, plus revocations and suspensions. The regulation adds the operating name, the city or town, province and country of the business address, the business email address and the business telephone number, whether the licence carries terms and conditions, and everyone whose application is still pending.
Four of those fields are on your contact page as well. A buyer who opens the public record and then opens your contact page is comparing the same four fields: legal name, operating name, city, phone. If the site trades under a name the register does not carry, or lists a phone number the register does not have, the buyer has to decide which one is wrong. So the legal entity name goes in the footer in text, the operating name goes in the header, and both match the register. An agency that holds both a temporary help agency licence and a recruiter licence has two licences, because they are two separate applications, and the site should show both.
The licence itself costs $1,500 on application and requires security of $25,000 held by the Director, in the form of an electronic irrevocable letter of credit or a surety bond. Neither figure belongs on a public website; both are useful when an agency asks why the licence number is worth the space.
How big is the staffing market in Hamilton?
Statistics Canada counts 68 employment-services businesses with employees in the City of Hamilton, sixth of the 147 Ontario census subdivisions that report any, and 52 of the 68 — 76.5 per cent — have fewer than 20 employees at that location. Two have 500 or more.
The figures come from table 33-10-1176-01, Canadian Business Counts with employees, at the census subdivision level, for the industry Statistics Canada codes as Employment services (NAICS 5613). That code covers employment placement agencies and executive search, temporary help services and professional employer organisations together, so it is wider than the set of licensed temporary help agencies. The table also counts only businesses with at least one employee, which makes every number below a floor rather than a total.
| Employees at the location | Businesses | Share | % |
|---|---|---|---|
| 1–4 | 31 | 45.6% | |
| 5–9 | 11 | 16.2% | |
| 10–19 | 10 | 14.7% | |
| 20–49 | 5 | 7.4% | |
| 50–99 | 4 | 5.9% | |
| 100–199 | 3 | 4.4% | |
| 200–499 | 2 | 2.9% | |
| 500+ | 2 | 2.9% |
The shape of that table is the reason the 25-employee exemption is worth reading twice. The size band counts payroll at a business location; the exemption in O. Reg. 476/24 counts the employees the employer employs in Ontario, across every location, on the day the posting goes up — and for a temporary help agency it includes every assignment employee, active or inactive. A three-person office in Ancaster with two hundred people on assignment is over the line. The band tells you where to look; it does not decide the question.
Around Hamilton the same industry thins out quickly. Oakville and Burlington together hold 79, Cambridge 30, and the Niagara and Brant municipalities are in single or low double digits. A service-area page that says “the Golden Horseshoe” names none of them; one that lists the eight municipalities gives a candidate and a search engine the same eight words to match on.
| Municipality | Businesses | Rank in Ontario |
|---|---|---|
| Hamilton | 68 | 6 |
| Burlington | 33 | 11 |
| Oakville | 46 | 8 |
| Cambridge | 30 | 14 |
| St. Catharines | 12 | 22 |
| Brantford | 9 | 26 |
| Grimsby | 4 | 48 |
| Haldimand County | 4 | 49 |
One local detail changes how the postings themselves should be written. Hamilton has been a single municipality since the 2001 amalgamation of the old City of Hamilton with Ancaster, Dundas, Flamborough, Glanbrook and Stoney Creek. A posting whose location field says only “Hamilton” can mean a site in Stoney Creek or one in Waterdown, about 17 kilometres apart in a straight line with the escarpment between them. The Act asks for no more precision than the city name. The candidate reading the posting needs the rest, so the location field on a Hamilton job board is worth storing as a place and an address rather than a single city string.
A caution that cost me a wrong number once and is worth repeating: Ontario has two census subdivisions called Hamilton. The City of Hamilton is 68; Hamilton Township in Northumberland County is 1. The Hamilton census metropolitan area, which adds Burlington and Grimsby, is 105. Matching on the name instead of the DGUID picks one of the three at random. Across Ontario the same table counts 2,317 of these businesses in 147 census subdivisions, 792 of them (34.2 per cent) with one to four employees, and 61 municipalities with exactly one. Reference period 2026-01.
What have I actually built that is closest to this?
Two things. A freight carrier’s site where the driver-recruitment path is separated from the sales path at the navigation and has its own protected application form, and a soccer academy where signing up is the purpose of the page. Neither is a staffing agency, and I am not going to call them one.
A hiring path that does not compete with the sales path
Odyssey Transport is a cross-border carrier dispatching out of Dieppe, New Brunswick and Calgary. There was a bare WordPress install and half a header; I designed and hand-coded the site from an empty folder. The part that matters here is the split: shippers and brokers go one way, drivers go another, and the two never share a page.
The driver side has its own section for company drivers and owner-operators, an application form protected by Cloudflare Turnstile and a honeypot, and a mobile-first layout, because applications arrive from phones on weak signal. A staffing agency has the same two audiences in a sharper form — a buyer with a vacancy and a candidate with a phone — and the same answer works: separate them at the navigation and stop trying to write one page for both.
Intake that repeats, and mostly from a phone
UFootball Soccer Academy needed the same action performed by many different people, over and over, with no phone call in the middle. I designed and hand-coded the site with structured program pages and online registration, and put the sign-up action in the navigation and again in the hero, so it is never more than one tap away.
A job board is the same problem at a larger scale: one action, repeated by strangers, mostly on a phone, where every extra field is one more thing to type with a thumb. The difference is that a job application now has a record-keeping tail behind it — three years of it — which is a database decision, not a design one.
What pages does a staffing agency website need?
Six, and they split cleanly by who arrives. Two sell to employers, two serve candidates, one is the job board that both use for different reasons, and one is the record layer nobody sees. Four of the six have their shape decided by a section of the Act rather than by me.
| Page | Who arrives | What shapes it |
|---|---|---|
| Home | Both audiences, mostly from a brand search | Two clear doors and nothing else above the fold. The legal name, the operating name and the licence number in text, not in the logo image. |
| For employers | A hiring manager or a procurement officer | The sectors you actually staff, how the billing works, and the licence number where a buyer discharging s. 74.1.1 (2) will find it without asking. |
| Job board | Candidates, and buyers checking what you run | A posting template that cannot publish without pay, the AI statement and the vacancy statement, plus the report control and the fraud policy that s. 8.7 requires. |
| The posting page | One candidate, usually from a phone, usually from a search | Its own URL, its own version record, and every page it links to snapshotted with it — because those linked pages are part of the posting. |
| Apply & status | Applicants, before and after the interview | No Canadian-experience field anywhere in the form, and a status page the 45-day notice can point at. |
| The archive | Nobody, until an inspector asks | Three years of postings, versions, forms, linked pages and notices, addressable and exportable, so one posting and its versions can be produced on their own. |
The last row is the cheapest of the six to build, provided it is built first. Retaining a posting is trivial when the board was designed to write a new version row on every publish. It is expensive and partly impossible when the board was designed to edit a live record, because the versions that needed keeping were overwritten months ago.
What I will not put on a staffing agency’s website
Six things, and five of them are prohibited rather than merely unwise: a fee charged to a job seeker in any form, a clause blocking a direct hire, a Canadian-experience question in the form, and a posting with no pay information. Each card below names the section behind it.
- A fee for joining the roster
A temporary help agency may not charge an assignment employee a fee in connection with becoming an assignment employee, or with being assigned to a client.
s. 74.8 (1) 1–2 - Paid resume or interview coaching
The prohibition names resume preparation and interview preparation specifically, so a paid upgrade on the job-seeker side of the site is out.
s. 74.8 (1) 3 - A clause stopping a direct hire
The agency may not restrict an assignment employee from taking a job with a client, or restrict a client from hiring them or from giving a reference.
s. 74.8 (1) 4, 6, 7 - A Canadian-experience field in the form
The ban covers work experience, education credentials and a requirement to have an established network or client base — in the posting and in the form attached to it.
s. 8.3 (1) - A posting with no pay information
Unless the expected compensation, or the top of the range, is above $200,000 a year, some pay information has to be in the posting itself.
s. 8.2 (1) - “We are always hiring” as a posting
That is a general recruitment campaign, not a publicly advertised job posting — so it is exempt from all six rules — and it also tells a candidate nothing about the role, the pay or the location.
O. Reg. 476/24, s. 2 (1)
The direct-hire rule has an exception that belongs on the employer pages. Section 74.8 (2) allows an agency to charge a client a fee when the client hires an assignment employee, but only inside the six months beginning on the day that employee first began work for that client. The six months run regardless of how long the assignment lasted or how much work was done. So a conversion fee is legitimate and can be described on the employer pages; a clause forbidding the hire is not.
There is also a set of things the agency owes an assignment employee in writing rather than on a web page: the agency’s legal and operating names and contact details as soon as somebody becomes an assignment employee, and, with every assignment offered, the client’s legal name and contact details, the wage rate and benefits, the hours, a description of the work, the pay period and pay day, and the estimated term where it is known. That is a document generated per assignment, not a page — but it is the same data the job board already holds, which is why it is worth designing the two together.
Staffing agency website questions I get asked
What must an Ontario job posting include in 2026?+
Since 1 January 2026 a publicly advertised job posting must state the expected compensation or a range, disclose any use of artificial intelligence to screen, assess or select applicants, and say whether the posting is for an existing vacancy. Canadian-experience requirements are prohibited in the posting and in any application form attached to it.
Do the job posting rules apply to a small recruitment agency?+
Not if it employs fewer than 25 employees on the day the posting is posted. For a temporary help agency the count includes every assignment employee it employs, active or inactive, so the agency usually clears 25 even when the office is small. The client it is posting for counts only its own employees.
Is my agency job board a job posting platform under the ESA?+
If it advertises roles at other employers as well as your own, yes. The ministry gives the example of a firm whose platform shows both its own positions and positions it is filling for clients. A platform needs a way for users to report fraudulent postings and a posted written policy on how they are handled.
How wide can a salary range be in an Ontario job posting?+
A published range may not span more than $50,000 a year. A range of $85,000 to $135,000 is allowed; $85,000 to $140,000 is not. No compensation information is required at all if the expected pay, or the top of the range, is more than $200,000 a year. Both figures are in O. Reg. 476/24.
How long do job postings have to be kept?+
Three years after public access to the posting is removed, along with any associated application form and a copy of every page or document the posting linked to. Each revised version that was advertised has to be kept as well, which is why a job board should archive versions instead of editing a live posting.
Do we have to tell candidates they did not get the job?+
If you interviewed them for a publicly advertised job posting, yes. Within 45 days of the last interview you must tell the applicant whether a hiring decision has been made. It can be given in person, in writing or using technology, including a status update on the site if the applicant has a link to it.
Should a staffing agency put its licence number on its website?+
It is not written into the Act, but it is the number a buyer needs. A client who knowingly engages an unlicensed temporary help agency faces a $15,000 penalty for a first contravention, and the ministry publishes the licence status, the business city, email and phone. Putting the number beside the contact block lets a buyer match the two in seconds.
Have you built a website for a staffing agency?+
Not for a licensed agency. The closest builds are Odyssey Transport, a freight carrier whose site I designed and hand-coded with a separate driver-recruitment path and its own protected application form, and UFootball Soccer Academy, where online registration is the point of the page and the sign-up action sits in the navigation and again in the hero.
How much does a staffing agency website cost?+
A build of this scope is $899 to $2,999 one time and goes live in 5 to 7 days once content is ready. What moves it inside that range is the job board: a hand-written careers page is at the low end, and a versioned board with archived postings, saved searches and an applicant status page is at the top.
Also on this site: the staffing and recruitment pillar, the Hamilton electrical contractor page, trucking companies in Brampton, career colleges in Scarborough and how I build websites. Business counts: Statistics Canada table 33-10-1176-01, reference period 2026-01. Licence status: Ontario’s licensing page for temporary help agencies and recruiters.
Send me your job board and I will mark it against the 2026 rules
Agencies in Hamilton, Burlington, Oakville and across the Golden Horseshoe — you get a page map and a plain list of what the site already covers back before any quote. Packages from $899.