employmentType
employmentType · Recommended
Appears in
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 position —
FULL_TIME - Less than full time hours —
PART_TIME - Independent contractor or 1099 work —
CONTRACTOR - Fixed duration assignment —
TEMPORARY - Internship or co op program —
INTERN - Unpaid volunteer position —
VOLUNTEER - Day rate or shift based —
PER_DIEM - None of the above —
OTHER
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 {"path":"employment-type","type":"PlainText"} }}"
}
</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.