This case study documents an eight-month engagement with a Singapore recruitment agency that places engineers, technicians and supervisors in manufacturing, facilities management and marine companies. A recruitment website serves two audiences at once. Candidates search for jobs ("M&E technician jobs", "marine engineer jobs Singapore") and bring most of the traffic. Employers search for help hiring ("engineering recruitment agency Singapore", "hire facilities manager") and bring the revenue, because the agency is paid by the employer when a placement is made.
The agency's site was built for neither. Job listings were loaded inside an embedded frame from its job board software, so Google could not index them or show them in its job search results. About 1,630 old job URLs from a previous system were still indexed, many showing roles that had closed years ago. Employers had a single "For Employers" page, and the homepage spoke to both audiences at once. Organic search brought in 38 candidate applications and only 4 employer enquiries a month.
| Metric | Baseline (Month 0) |
|---|---|
| Monthly Organic Visitors | 2,950 |
| Keywords Ranking Page 1 | 19 |
| Live Jobs Indexable by Google | 0 |
| Expired Job URLs Still Indexed | 1,630 |
| Employer Service Pages | 1 |
| Employer Enquiries a Month | 4 |
| Candidate Applications from Organic a Month | 38 |
| Domain Authority | 14 |
We mapped two separate keyword sets: employer searches by discipline, role and hiring need, and candidate searches by job title, discipline and region. We set up separate GA4 conversions for employer enquiries and candidate applications so the two were never counted together. The site structure was split into an Employers section and a Job Seekers section with their own navigation, which the client's developer built to our plan.
Candidate traffic is easy to grow and easy to mistake for success. Separating the two audiences in the structure and in the tracking meant every decision could be judged on what it did for employer enquiries, the number that pays the agency.
The client's developer moved job listings out of the embedded frame so each live role has its own URL on the agency's site, fed automatically from the job board software. We specified JobPosting schema for every listing, including the job title, salary range in S$, employment type, region, posting date, closing date and the agency as the hiring organisation. We added job category pages for each discipline and linked every listing to its category.
Jobs inside a frame belong to the frame's domain, not the agency's. Once each role had its own indexable page with complete JobPosting schema, the listings began to appear in Google's job search results, which is where many candidates start.
We set clear rules for roles that close. The page stays live for 30 days with its closing date updated in the schema, a note that the role has been filled and links to similar open roles. After that, pages with no links or traffic return a 410, and pages with links are redirected to the matching job category page. Closed roles are removed from the sitemap automatically. We applied the same rules to the 1,630 old URLs from the previous system.
Recruitment sites create and close pages every week. Left alone, expired listings pile up, frustrate candidates and lower Google's view of the whole site. Consistent handling kept the index clean while holding on to any links the old pages had earned.
We replaced the single employer page with nine: one for each discipline (mechanical and electrical, facilities management, marine and offshore, manufacturing and process, quality and safety) and one for each service (contract staffing, permanent placement, retained search for senior technical roles, and volume hiring for new sites). Each page lists the roles the agency fills, how the shortlisting process works, typical time to a first shortlist and how fees are structured, with a "Request Talent" form.
Employers searching for a recruiter want proof that the agency knows their field. A page for each discipline and service matched the way they search and gave them the detail they need to pick up the phone. These pages produced most of the growth in employer enquiries.
Using the agency's own placement data, we built an ungated salary guide in S$ for 40 engineering and technical roles, updated quarterly, with a "Hiring for this role?" prompt on every role section. We added quarterly hiring market updates for each discipline and practical candidate guides, such as moving from marine into facilities roles. Industry associations and trade publications linked to the salary guide as a reference.
Salary data is one of the few things both audiences search for. Candidates check what they should earn, and employers check what they need to offer. The guide brought in both, earned links the agency had never had, and gave employers a natural next step to enquire.
| Metric | Baseline | Month 8 | Change |
|---|---|---|---|
| Monthly Organic Visitors | 2,950 | 9,870 | +235% |
| Keywords Ranking Page 1 | 19 | 136 | +616% |
| Live Jobs Indexable by Google | 0 | All live roles | ✓ |
| Expired Job URLs Still Indexed | 1,630 | 0 | All handled |
| Employer Service Pages | 1 | 9 | +8 |
| Employer Enquiries a Month | 4 | 19 | +375% |
| Candidate Applications from Organic a Month | 38 | 214 | +463% |
| Domain Authority | 14 | 26 | +12 |
| Period | Focus | What Happened |
|---|---|---|
| Month 1-2 | Structure + Jobs | Site split by audience and tracking separated. Live jobs indexed with JobPosting schema. Candidate applications reach 71 a month. |
| Month 3-5 | Employers | Expired URLs cleaned up. Nine employer pages live and ranking by discipline. Employer enquiries reach 9 a month, traffic 5,640. |
| Month 6-8 | Salary Data | Salary guide earns links and traffic from both audiences. Organic traffic reaches 9,870, with 214 applications and 19 employer enquiries a month. |
A recruitment agency serves two markets from one website, and its content changes every week. These four points shaped the work.
Candidates and employers search for different things and need different pages. Splitting the structure and the tracking kept employer needs from being buried under candidate traffic.
New roles open and old ones close all the time. Clear rules for closed roles kept the site clean for Google and useful for candidates who landed on an old listing.
Most of the traffic came from job seekers, but the agency is paid by employers. Every phase was judged on employer enquiries first, and the employer pages drove most of that growth.
Both employers and candidates search for salary information. The agency's own placement data gave it something competitors could not copy, and it earned links from industry sources.
Make sure Google can index your job listings. If your jobs load inside a frame or widget from job board software, they likely belong to someone else's domain. Give each role its own URL on your site with complete JobPosting schema.
Track employer enquiries and candidate applications separately. A recruitment site can double its traffic from job seekers without winning a single new client. Build and measure your employer pages as the main commercial goal.
Decide what happens to a job page when the role closes, and apply it every time. Thirty days with a filled notice and similar roles, then a 410 or a redirect, keeps your site clean without losing the links old listings have earned.
Build pages for the way employers search: by discipline, by role and by hiring service, each showing the roles you fill and how your process works. Track employer enquiries separately from candidate applications. On this project, nine employer pages and a salary guide took enquiries from 4 to 19 a month.
JobPosting schema is structured data that tells Google a page is a job listing, with details such as title, salary, location and closing date. It is what makes listings eligible to appear in Google's job search results. Any recruitment site that wants candidate traffic from Google should use it on every live role.
Update the closing date in the schema and keep the page live for a short period with a filled notice and links to similar roles. After that, return a 410 for pages with no links or traffic, and redirect pages that have links to the closest job category page. Remove closed roles from your sitemap.
Yes, if it is based on your own placement data. Salary guides are searched by both candidates and employers, they earn links from industry sources, and they give hiring managers a reason to contact you. Keep it ungated and update it regularly so it stays accurate.
Start with a free SEO audit. We check whether Google can index your jobs, how closed roles are handled, and how your employer pages rank for the disciplines you recruit for, then show you a realistic path to more client enquiries before you commit to anything.
Singapore’s specialist SEO agency for SMEs. We rank your business on Google — and only Google. No distractions, just results.
© 2026 Singapore SEO Agency. All rights reserved.