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