Enabling Google JobPosting Schema in LimeStaff

Overview

Lime Staff can add Google JobPosting structured data (schema) to every single job page, which makes your listings eligible to appear in Google’s job search experience. The setting is off by default. Once it’s on, Lime Staff builds the schema from your Loxo job data and outputs it in the page <head> as JSON-LD.

Before you start, check two things:

  • Standard permalinks are on. The schema only works when Use Standard Permalinks is enabled in the Lime Staff settings.
  • Your Loxo jobs have a country set. Lime Staff skips schema generation for any job without a country in Loxo.

Enable the schema

  1. In WordPress admin, go to Settings → Lime Staff and open the Settings tab.
  2. Confirm Use Standard Permalinks is turned on. If it’s off, you’ll see a “Standard Permalinks Required” notice when you enable the schema.
  3. Scroll to the Google JobPosting Schema section and turn on Enable Google JobPosting Schema. The rest of the schema options appear below it.
  4. Review the options described in the next section.
  5. Click Save.

When you save a change that affects the schema, Lime Staff regenerates it for all jobs. An “Updating Job Schemas…” progress window shows while this runs; it can take a moment on sites with many jobs. If any jobs have no country in Loxo, a message tells you how many were skipped.

Schema is also regenerated automatically each time a job syncs from Loxo, so new and updated jobs stay current.

Schema settings

These options appear once the schema is enabled. Each one changes what Google sees for every job.

Setting What it does Default
Employment Type Mapping Maps each of your Loxo job types to a Google employment type: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER. Auto-mapped by name (e.g. “Full Time” → FULL_TIME, “Contract” → CONTRACTOR); anything unrecognized → OTHER
Default Telecommute Countries Countries where candidates for remote jobs may live. One country code per line (e.g. US, CA, GB), no commas. Leave empty to treat remote jobs as on-site. Empty
Use Job Location Country for Telecommute Jobs Uses each remote job’s own Loxo country as the allowed applicant location. Overrides Default Telecommute Countries, which is disabled while this is on. Off
Direct Apply Adds directApply: true, telling Google candidates can apply on your site without being redirected or creating an account. Off
Hiring Organization Name Override Replaces the company name from Loxo with a fixed name on every job. Leave blank to use each job’s company. Blank
Hiring Organization Same As URLs that identify the organization, such as your website or LinkedIn page. One per line. Shown only when the name override is set. Empty
Hiring Organization Logo URL of the organization’s logo image. Shown only when the name override is set. Blank

Employment type mapping. Check the auto-mapping after you first enable the schema. Job types with custom names (e.g. “Contract-to-Hire”) fall back to OTHER until you map them.

Remote jobs. A job is treated as remote when Remote work allowed is checked on the job in Loxo. For a remote job to get remote schema, either set Default Telecommute Countries or turn on Use Job Location Country. If neither is set, the job is published with its physical location instead.

Direct Apply. Only turn this on if your job pages use the built-in Lime Staff apply form. Google may penalize listings that claim direct apply but send candidates elsewhere.

Where each schema field comes from

Most of the schema is filled from the job in Loxo, so complete Loxo records produce richer search results.

Schema field Source Required
title Job title Yes
description Job description (inline styles removed) Yes
datePosted Date the job was published (or created, if no publish date) Yes
hiringOrganization.name Job’s company, or the Hiring Organization Name Override Yes
jobLocation Country, state, city and ZIP. City is used only when a state is set. Yes, at least the country (on-site jobs)
applicantLocationRequirements Telecommute settings above Yes (remote jobs)
employmentType Job type, via Employment Type Mapping No
baseSalary Salary, min/max, currency and pay period No
validThrough Published end date No
directApply Direct Apply setting No

Salary. Salary appears only when the job has a salary and its pay period is hourly, daily, weekly, monthly or yearly. With only a minimum set, Lime Staff outputs a single value; with a maximum too, it outputs a range.

Invalid schema is never output. If a job is missing a required field, Lime Staff stores the schema for review but leaves it off the page, since Google rejects incomplete JobPosting data.

Check your schema

With the schema enabled, the Jobs tab in Lime Staff shows a Schema column with each job’s status:

Badge Meaning What to do
OK Valid schema is being output on the job page. Click the badge to preview the JSON.
MF (Missing Fields) Schema was generated but a required field is empty, so it isn’t output. Hover to see which fields are missing, fix them in Loxo, then let the job re-sync. Click to preview.
NCC (No Country Code) The job has no country in Loxo, so no schema was generated. Add the country to the job in Loxo.

To confirm Google can read a job, paste its public URL into Google’s Rich Results Test and look for a valid Job posting result. After that, track indexing and errors in Google Search Console under Enhancements → Job postings.

Troubleshooting

  • No schema on the job page. Confirm the schema is enabled, Use Standard Permalinks is on, and the job shows OK in the Jobs tab.
  • Remote job shows a physical address. Remote work isn’t allowed on the job in Loxo, or neither telecommute setting is filled in.
  • Wrong employment type. Update Employment Type Mapping and save; all jobs regenerate.
  • Salary missing. The job has no salary, or its pay period isn’t hourly, daily, weekly, monthly or yearly.
  • Search results take time. Google decides when and whether to show a listing. Valid schema makes a job eligible; it doesn’t guarantee placement.

For developers

These filters let you adjust the schema in code:

Filter Use it to
limestaff_loxo_job_google_job_posting_schema Modify the final schema array. Receives $schema, the job object and the raw Loxo data.
limestaff_jobschema_hiring_organization_name Override the hiring organization name.
limestaff_jobschema_hiring_organization_same_as Override the Same As URLs (when the name override is set).
limestaff_jobschema_hiring_organization_logo Override the logo URL (when the name override is set).
limestaff_loxo_job_compensation_type_normalization_map Map Loxo pay periods to Google’s HOUR, DAY, WEEK, MONTH or YEAR.
limestaff_google_jobposting_schema_required_paths Change which fields count as required. Remote- and location-specific variants: ..._remote_required_paths, ..._location_required_paths.

Example — add an identifier to every posting:

add_filter( 'limestaff_loxo_job_google_job_posting_schema', function ( $schema, $job, $raw ) {
    $schema['identifier'] = [
        '@type' => 'PropertyValue',
        'name'  => 'Acme Staffing',
        'value' => (string) $raw->id,
    ];
    return $schema;
}, 10, 3 );