Skip to main content

Posts

Google for Jobs Optimisation for Careers Websites: A 12-Step Checklist

Google for Jobs: A 12-step optimisation checklist. Illustrated Happydance cover.
a person wearing glasses smiling
See other posts from by Jim Taylor Managing Director
Google for Jobs

Google for Jobs optimisation for careers websites: 12 steps from crawlable job pages to Search Console, with a free JobPosting generator and fault finder.

By the Happydance team. Updated November 2026.

What Google for Jobs is and how a job gets in

Google for Jobs shows job listings directly in search results. Your jobs can be eligible when job pages are crawlable and carry valid JobPosting structured data.

Definition: Google for Jobs

A Google Search feature that shows job listings in a rich experience in search results. Eligibility depends on Google finding job pages and reading valid JobPosting structured data. Display is never guaranteed.

Notice what is not in that definition: a form to fill in, or a fee to pay. Your jobs are found the way other pages are found, then understood through structured data. That is why the work is technical and detailed, and why it pays to get it right once in the template.

  1. CrawlGoogle reaches the job page.
  2. ReadIt reads the JobPosting markup.
  3. CheckIt checks the markup matches the page.
  4. ShowEligible jobs may appear in results.
  5. UpdateChanges and closures are refreshed.

The 12 steps, in order

Work through them in order. Steps 1 and 2 remove blockers. Steps 3 to 9 are the markup and the content. Steps 10 to 12 keep Google informed and catch errors.

Make sure every job has its own crawlable page

Why it matters Each job needs a unique, stable address that a crawler can reach and index.

How to do it Check that job pages are not blocked in robots.txt, not marked noindex and not behind a login.

Keep one address per job

Why it matters Duplicates split signals and confuse clean-up.

How to do it Use one canonical address per job and redirect old or alternate versions to it.

Add JobPosting structured data to the job page

Why it matters It is how Google reads the job.

How to do it Use JSON-LD on the job detail page, never on a list of jobs. Fill every required property.

Match the markup to the visible page

Why it matters Google expects the markup to describe what candidates can see.

How to do it Title, location, pay and description in the markup must match the page. Never mark up hidden content.

Write a complete description in HTML

Why it matters A thin description gives a poor result and may be rejected.

How to do it Include responsibilities, requirements, working pattern and how to apply. Use simple HTML such as paragraphs and lists.

Add the recommended properties

Why it matters More complete jobs are more useful to job seekers.

How to do it Add pay range, employment type, identifier, full address, and the date posted.

Handle remote and hybrid jobs correctly

Why it matters Remote jobs have their own markup.

How to do it Use the remote job location type and state where applicants may be based. Do not claim remote for hybrid jobs.

Set validThrough only for real expiry dates

Why it matters A wrong end date removes a live job or leaves a dead one.

How to do it Add validThrough when the job has a known closing date. Leave it out otherwise.

Remove expired jobs properly

Why it matters Dead jobs frustrate candidates and can hurt quality.

How to do it When a job closes, remove the page or mark it clearly, and tell Google it has gone.

Use directApply honestly

Why it matters It signals a short, direct application.

How to do it Set it to true only when candidates can apply on your page without repeated clicks or sign-ins.

Tell Google about new and changed jobs

Why it matters Faster discovery means faster visibility.

How to do it Keep your sitemap current and use Google's Indexing API for job pages as Google recommends.

Test, then monitor in Search Console

Why it matters Errors silently remove jobs.

How to do it Test examples in the Rich Results Test, then watch the job posting reports in Search Console weekly.

Free tool

12-step checklist with progress count

Tick what is already done. The progress count shows how far you have to go.

GroupChecks
Foundations3
Markup4
Lifecycle2
Discovery and testing3

This is the printable version. Switch on JavaScript to use the live calculator in your browser.

The JobPosting generator

Fill in the fields to see valid-shaped JobPosting JSON-LD. Check the output in Google's Rich Results Test before use. Your platform should generate this from your job data automatically, so this tool is for learning and for testing.

Free tool

JobPosting JSON-LD generator

Live preview, copy and download. It runs in your browser and sends nothing anywhere.

Required propertyWhat to supply
titleThe job title
descriptionFull description in HTML
datePostedISO date
hiringOrganizationEmployer name
jobLocationFull address, or remote markup

This is the printable version. Switch on JavaScript to use the live calculator in your browser.

For every field in depth, read the JobPosting schema guide.

Why your jobs are not showing: the fault finder

Find the symptom, then the likely cause, then the fix.

SymptomLikely causeFix
None of my jobs appearJob pages blocked or noindex, or no valid markupCheck robots.txt and meta robots. Validate the markup in the Rich Results Test.
Search Console shows errorsA required property is missing or malformedOpen the example, fix the property in the template, then request validation.
Jobs appear without payNo baseSalary property, or pay not on the pageAdd pay to the page and to the markup, as a single value or a range.
Expired jobs still showPage still live, or Google not told it has goneRemove or close the page and notify Google of the removal.
Jobs appear in the wrong locationMissing or incomplete address, or wrong country codeProvide city, region and a two letter country code. Add one location per place.
Apply button flaggeddirectApply set to true but the flow needs a sign-inSet it to false, or simplify the application.
Markup rejected as not matchingMarkup differs from the visible pageGenerate the markup from the same data as the page.
Markup on a list of jobsMarkup was added to a search results or list pageMove it to the individual job pages only.
Jobs only appear after a delayDiscovery by crawling onlyUpdate the sitemap and use the Indexing API for new jobs.
Jobs missing from the page sourcePage built entirely with scriptsRender job content and markup on the server so it is in the HTML.

Expired jobs, validThrough and clean-up

Closed jobs are one of the quickest ways to frustrate candidates. If a job has a real closing date, include validThrough. If it does not, leave it out. When a job closes, remove the page or clearly mark it as closed, and tell Google. Check current Google guidance for the exact handling of removed pages.

  • Use validThrough only when the closing date is real.
  • Remove the job from every list and sitemap on closure.
  • Tell Google the page has gone.
  • Redirect closed jobs to a similar search where helpful.
  • Audit for dead jobs monthly.

The apply flow, directApply and tracking

Google describes a direct apply experience as a short, straightforward application on your page, with no repeated clicks, forms or sign-ins. Mark directApply as true only if that is exactly what you offer. Where you hand over to another system for the application, keep it as short as you can and make sure tracking carries through.

Flow

Short

Few fields, no account creation.

Markup

Honest

Do not claim direct apply unless it is.

Measure

Tracked

Carry the source through to the application.

Test

Mobile

Test the apply flow on a phone first.

Learn how the platform fits with your recruiting system on the ATS integration page.

Speed, mobile and rendering

Most job searches happen on a phone. A job page that is slow or only renders after scripts run is harder for candidates and crawlers alike. Test mobile speed on real job pages, not just the home page.

723.0average leaderboard score of the 61 Happydance customer sites
618.6average score of the 40 other sites (38 Fortune 100 companies and 2 wild cards)
41sites at the top of the leaderboard are all Happydance customers

Sample disclosure: 101 careers websites, of which 61 are Happydance customers, 38 are Fortune 100 companies and 2 are wild cards. Scores are Lighthouse results for mobile and desktop, out of 800. It compares customers with large-company careers websites, not the whole market. See the careers website performance leaderboard.

72.5mean mobile Lighthouse performance, customer sites
41.9other sites in the leaderboard
4.3 smean mobile Speed Index, customer sites

Sample disclosure: 101 careers websites, of which 61 are Happydance customers, 38 are Fortune 100 companies and 2 are wild cards. Scores are Lighthouse results for mobile and desktop, out of 800. It compares customers with large-company careers websites, not the whole market.

See the best SEO careers websites and the fastest careers websites.

Testing and monitoring in Search Console

  1. Test a sample job in the Rich Results Test.
  2. Fix errors in the template, not on single jobs.
  3. Check the job posting reports in Search Console weekly.
  4. Inspect a live job address after launch.
  5. Review expired jobs monthly.

This also feeds how AI search reads your jobs. See our careers website GEO playbook and the careers website SEO platform page.

Where the platform does the work

The best way to keep job markup right is to generate it from the same data as the page, automatically, in the template. That is what a careers website CMS should do. Content is managed by customers, without a developer, and the platform is mobile-first, with images generated dynamically for each device.

What support looks like

Every package includes a named customer success manager, a monthly check-in and a quarterly business review, with Standard or Elite support. Customers have reported up to 40 hours a month saved. That figure is customer-reported, not an average.

See the careers website CMS and our glossary for terms.

A pre-publication checklist for every job

  • The title is the role candidates search for, without internal codes.
  • The description is the full text, in HTML, with no scripts needed to read it.
  • The location is specific, and remote roles are marked correctly.
  • The posting date is correct and an expiry date is set.
  • The employer name and logo are correct.
  • The apply link works on a phone.
  • Pay information is included where you can share it.
  • The job appears once, not as several copies.

How to read the Search Console job reports

Report or signalWhat it showsAction if it looks wrong
Valid itemsJobs Google can useKeep the pattern, check a sample monthly
Items with warningsOptional fields missingAdd the fields that improve the listing
Items with errorsRequired fields wrong or missingFix the template, then validate the fix
Impressions and clicksHow often the jobs are shown and clickedCompare with expectations by location and role

Required and recommended job fields

Based on Google guidance. Check the current documentation before you launch.
FieldStatusTip
titleRequiredThe job title only, without location or code
descriptionRequiredFull text in HTML
datePostedRequiredISO date format
hiringOrganizationRequiredYour employer name
jobLocationRequired for on-site rolesFull address where possible
validThroughRecommendedExpiry date for fixed-closing jobs
baseSalaryRecommendedInclude where you can share it
What is Google for Jobs?

A Google Search feature that shows job listings in a rich experience in search results.

How do I get my jobs into Google for Jobs?

Give each job a crawlable page with valid JobPosting structured data that matches the visible page. Display is never guaranteed.

Which properties are required?

Google lists datePosted, description, hiringOrganization, jobLocation and title as required. Check its current documentation.

Do I need validThrough?

Only when the job has a real closing date. Leave it out otherwise.

What is directApply?

A signal that candidates can apply on your page in a short, direct flow. Use it only if that is true.

Should I use the Indexing API?

Google recommends it for job pages alongside a sitemap. Check current documentation for set-up.

Why are my jobs not showing?

Common causes are blocked or noindex pages, missing properties, markup that does not match the page, or expired jobs. Use the fault finder above.

Is this the same as the JobPosting schema guide?

No. That guide is the reference for the schema. This page is the how-to checklist.

How do I check my job pages for Google for Jobs?

Test a sample in the rich result test before launch and watch the job reports in Search Console after launch.

What should I do when a job closes?

Update or remove the posting promptly and make sure the closed job no longer appears in search.

Which fields does a job posting need?

Title, description, date posted, hiring organisation and location, with expiry date and salary recommended.

Want your jobs found?

Book a demo and we will show you how the platform handles job markup, speed and clean-up.

Book a demoContact us

Related Articles