On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

employmentType

employmentType · Recommended

Appears in

JobPosting

What is it?

The type of employment arrangement for the position. Google defines a fixed set of values: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, and OTHER. This field can hold a single value or an array when a position qualifies under multiple types.

Why this matters for AEO

Employment type is a primary filter in job searches. When a candidate asks "Find part time marketing jobs in Denver" or "Show me contract engineering roles," AI engines use employmentType to filter results. Without this field, a part time position may appear in full time search results or be excluded from filtered queries entirely. The structured value is more reliable than parsing the job description for keywords like "part time."

What the specs say

Schema.org:Text. Type of employment (e.g. full-time, part-time, contract, temporary, seasonal, internship). schema.org/employmentType

Google: Recommended. "Type of employment. For example: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, or OTHER." Google Search Central

How to find your value

  • Standard 40 hour week salaried or hourly positionFULL_TIME
  • Less than full time hoursPART_TIME
  • Independent contractor or 1099 workCONTRACTOR
  • Fixed duration assignmentTEMPORARY
  • Internship or co op programINTERN
  • Unpaid volunteer positionVOLUNTEER
  • Day rate or shift basedPER_DIEM
  • None of the aboveOTHER

A position can be both FULL_TIME and CONTRACTOR (e.g., a full time independent contractor). Use an array to represent multiple types.

Format and code

Type: Text (string or array of strings)

Single type:

{
  "@type": "JobPosting",
  "employmentType": "FULL_TIME"
}

Multiple types:

{
  "@type": "JobPosting",
  "employmentType": ["FULL_TIME", "CONTRACTOR"]
}

Important: Google requires uppercase values with underscores. Schema.org documentation uses lowercase examples ("full-time," "part-time"), but Google's implementation expects the uppercase format.

Valid values:

FULL_TIME
PART_TIME
CONTRACTOR
TEMPORARY
INTERN
VOLUNTEER
PER_DIEM
OTHER

Invalid patterns:

"employmentType": "Full Time"
"employmentType": "full-time"
"employmentType": "Permanent"

These fail Google's validation. Use the exact uppercase values from Google's documentation.

Webflow implementation

Static pages

Add the employment type in your JSON-LD:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Content Strategist",
  "employmentType": "FULL_TIME"
}
</script>

CMS template pages

Use a Webflow option field with the valid Google values as choices:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "employmentType": "{{wf {&quot;path&quot;:&quot;employment-type&quot;,&quot;type&quot;:&quot;PlainText&quot;} }}"
}
</script>

Create an Option field named "Employment Type" with values: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, OTHER. This ensures content editors select only valid values.

For positions with multiple employment types, a single Option field cannot produce an array. Either use a multi select field with custom parsing or let Schema HQ handle the array output.

In Schema HQ

Your CMS employment type fields to the correct Google format. If your CMS uses display friendly labels like "Full Time" or "Part-Time," Schema HQ converts them to the required uppercase format (FULL_TIME, PART_TIME) automatically. is mapped automatically

Real examples

MagsRUs Wheel Company (GitHub: JayHoltslander):

{
  "@context": "http://schema.org/",
  "@type": "JobPosting",
  "title": "Data Entry Clerk",
  "employmentType": ["FULL_TIME", "CONTRACTOR"],
  "datePosted": "2017-01-18",
  "validThrough": "2017-03-18T00:00",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "MagsRUs Wheel Company",
    "sameAs": "http://www.magsruswheelcompany.com"
  }
}

Schema.org (schema.org/JobPosting):

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Software Engineer",
  "employmentType": "Full-time",
  "description": "ABC Company Inc. seeks a full-time mid-level software engineer to develop in-house tools.",
  "datePosted": "2011-10-31"
}

Note: The schema.org example uses "Full-time" (lowercase with hyphen), which is the schema.org convention. Google requires "FULL_TIME" (uppercase with underscore). Always use the Google format for compatibility with job search rich results.

Web Data Commons analysis shows employmentType appears in 82% of JSON-LD JobPostings, making it one of the most commonly implemented recommended fields.

Related fields

  • title: the position this employment type describes
  • baseSalary: compensation varies by employment type
  • workHours: expected hours complement the employment type
  • validThrough: temporary and contract positions often have firm end dates
  • jobLocationType: remote work status pairs with employment type

FAQ

Can a job have multiple employment types?

Yes. Use a JSON array: "employmentType": ["FULL_TIME", "CONTRACTOR"]. This is common for positions that can be filled either as a salaried employee or independent contractor depending on the candidate's preference.

What is the difference between CONTRACTOR and TEMPORARY?

CONTRACTOR indicates an independent contractor or freelance arrangement (typically 1099 in the US). TEMPORARY indicates a fixed duration employment relationship (typically W-2 but time limited). A temp agency placement is TEMPORARY. A freelance project engagement is CONTRACTOR.

Does Google use employmentType for filtering in job search?

Yes. Google's job search interface includes an employment type filter. Listings without employmentType will not appear when candidates filter by "Full-time," "Part-time," or other types. Including this field ensures your listing appears in filtered results.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us