Skip to content

Testing & Search Console

Whichever route you used — hosted pages, WordPress or a custom website — validate before waiting on Google.

1. Check the markup is really there

  1. Open any live job page and View Page Source (not DevTools' rendered DOM — the raw source).
  2. Search for application/ld+json.
  3. You should see your JobPosting object. Example of a healthy block:
json
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Senior Software Developer",
  "description": "We are looking for an experienced developer...",
  "datePosted": "2026-06-15",
  "validThrough": "2026-08-14T23:59:59",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Tech Recruitment Agency"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "London",
      "addressRegion": "England",
      "addressCountry": "GB"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "GBP",
    "value": { "@type": "QuantitativeValue", "minValue": 55000, "maxValue": 70000, "unitText": "YEAR" }
  }
}

2. Rich Results Test

  1. Go to the Rich Results Test.
  2. Enter a job page URL and run the test.
  3. Confirm a Job posting item is detected; fix any errors. Warnings (e.g. missing salary) don't block listing but do cost clicks.

3. Google Search Console

  1. Add and verify your site if you haven't.
  2. Submit your XML sitemap (usually yoursite.com/sitemap.xml) — job URLs must be in it.
  3. Watch Enhancements → Job postings for structured-data errors across the site.
  4. Watch Performance for impressions/clicks once listings go live.

Allow 3–7 days (up to 2 weeks) for Google to crawl and start showing jobs.

Troubleshooting

Error / symptomFix
Missing field "hiringOrganization"Always provide one — client company, your agency, or "Confidential Employer".
Invalid employment typeOnly FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, OTHER are accepted — map your labels.
Missing locationEvery job needs at least addressCountry. Configure a default country.
Markup valid but jobs never appearPages behind a login, missing from the sitemap, blocked by robots.txt, or Google simply hasn't crawled yet (3–7 days).
Listings appeared, then droppedExpired jobs left live, thin descriptions, or accumulated structured-data errors — check the Job postings report.
Rich Results Test passes but View Source shows no blockYour markup is injected client-side. Move it server-side — Google's crawler can't be relied on to execute it.

Best practices for maximum visibility

  • Salary ranges — listings with salary data get roughly 30% more clicks.
  • Exact locations — city + region + postcode beat a bare country.
  • Standard job titles — "Senior Software Engineer", not "Code Ninja Level 3".
  • Fresh listings — remove filled/expired roles promptly; extend validThrough only when a role genuinely stays open.
  • Fast, mobile-friendly pages — most job searches happen on mobile, and page quality affects eligibility.

FAQ

How long before my jobs appear on Google? Typically 3–7 days after implementation; up to 2 weeks.

Can I hide the client company name? You must provide a hiring organisation, but it can be your agency name or "Confidential Employer".

Do I need to update expired jobs? Yes — remove or expire them to keep the site in good standing. On Recruitly-hosted pages and the WordPress plugin sync this happens automatically when you close the job in the CRM.

What if I don't have salary information? Salary is optional but strongly recommended — it materially improves click-through.

Can I use this on multiple websites? Yes — each site needs its own markup (and its own Search Console property).

Recruitly — Recruitment CRM for Agencies