Tutorial

How Do I Add JobPosting Schema to a Webflow Careers Page?

Written by
Pravin Kumar
Published on
Jul 19, 2026

How do I get my job openings to show up in Google for Jobs?

To get your job openings into the Google for Jobs box, you add JobPosting structured data to each job page. This is a small block of JSON-LD code that tells Google the role, the company, the location, and the dates. Without it, your listings stay invisible in that special jobs experience at the top of search.

I set this up for clients who post roles on their own Webflow sites instead of paying a job board every time. Done right, your careers page competes directly in the jobs box, for free, with your own branding. Done wrong, Google throws errors and shows nothing.

This walkthrough covers what the schema is, the fields Google demands, how to handle remote roles, and how to wire it into a Webflow CMS so every new job gets marked up automatically.

What is JobPosting schema?

JobPosting schema is a type of structured data from schema.org that describes a single job opening in a format search engines can read. You write it as JSON-LD and place it in the page code. Google uses it to decide whether your role can appear in the Google for Jobs experience.

Structured data is just a labeled summary of what a human already sees on the page. Your careers page shows the title, the pay, and the location in words. The JobPosting schema repeats those same facts in a strict, machine-readable shape, so Google does not have to guess. JSON-LD is Google's preferred format for this, and it is the one I always use.

This is the same pattern behind other rich results. If you have followed my other schema walkthroughs, like the one on adding Service schema in Webflow with JSON-LD, the structure will feel familiar. Only the type and the fields change.

What fields does Google require in JobPosting schema?

Google requires five properties at a minimum: title, description, datePosted, hiringOrganization, and jobLocation. According to Google's Search Central documentation, miss any one of these and your listing will not appear in the jobs experience. Google also strongly recommends validThrough, the date the posting expires.

The title should be the plain role name a candidate would search, like Senior Nurse or Frontend Developer. Do not stuff the company or city into it, because those are separate fields. The description needs to be the full job summary in HTML, not a one-line teaser. The datePosted and validThrough both use ISO 8601 date format, the same clean year-month-day style Google expects everywhere.

The hiringOrganization holds the company name, website, and logo, which is what puts your branding on the listing. The validThrough field matters more than people think. Google removes postings that never expire, so leaving it out can quietly get your role dropped. I always set an expiry date even for evergreen roles and update it later.

How do I mark up a remote job correctly?

For a remote job, you set jobLocationType to TELECOMMUTE and add applicantLocationRequirements with at least one country. This tells Google the role is work-from-home and who can apply. For a remote role, this pair replaces the physical jobLocation address that an on-site job would use.

There is one trap here that catches almost everyone. Google's documentation notes that if you set jobLocationType to TELECOMMUTE but leave out applicantLocationRequirements, Google generates a Search Console error and the listing can fail. The two must travel together. You name the country or countries where a candidate is allowed to be based.

Hybrid roles need both. You include the physical office in jobLocation and you add jobLocationType TELECOMMUTE with applicantLocationRequirements on top. That combination tells Google the role has an office but also allows remote work, which is exactly how most modern roles are structured now.

How do I add JobPosting schema in Webflow?

In Webflow, you add JobPosting schema by placing an HTML embed or custom code block inside the Collection Page template for your jobs, then filling it with a JSON-LD script. Because it sits on the template, every job in your CMS gets its own valid schema without you writing code for each one.

I build the jobs as a CMS Collection first, with fields for title, description, salary, location, posted date, and expiry date. Then I open the Collection Page template, which is the single layout Webflow uses to render every job. Inside that template, an embed in the head or near the top of the body holds the schema script that reads from those fields.

This is the same CMS-driven approach I use for a full careers section. If you are building the listing and filtering side too, I covered that in my tutorial on a Webflow CMS job board with multi-filter tags. The schema layer sits quietly on top of that structure.

How do I pull the job details from my Webflow CMS into the schema?

You pull CMS details into the schema by adding an embed inside the Collection Page template and inserting each field where its value belongs in the JSON-LD. Webflow lets you drop a live field into an embed, so the title field fills the schema title, the salary field fills baseSalary, and so on for every property.

When you edit an embed inside a collection template, Webflow shows a button to add a field from that collection. You click into the JSON-LD where the title value goes and insert the Title field. You repeat this for description, datePosted, validThrough, and the location fields. When Webflow renders each job, it swaps in that job's real data, producing unique, correct schema on every page.

The one thing to watch is clean data. Your datePosted and validThrough fields in the CMS must be real dates, and your description field should hold proper text. Garbage in the CMS becomes invalid schema, so I keep the collection fields tidy and consistent across every job entry.

How do I test that my JobPosting schema works?

You test JobPosting schema with Google's Rich Results Test and the Search Console reports. Paste a live job URL into the Rich Results Test, and it tells you whether the page is eligible for the jobs experience and lists any missing or broken fields. Fix what it flags, then republish.

The Rich Results Test is my first stop because it reads the live page exactly as Google does. It shows the parsed schema, confirms the required fields are present, and warns on anything Google merely recommends. After the pages are indexed, the Search Console enhancement report tracks errors across all your job listings at once, which is how you catch a problem that only shows up on some entries.

If the test throws errors you do not understand, work through them one field at a time. I wrote a broader guide on how to audit structured data errors in Webflow that walks through reading these warnings and tracing them back to the field that caused them.

What are the most common JobPosting schema mistakes?

The most common mistakes are a missing validThrough date, a remote role without applicantLocationRequirements, and a title padded with the company name or location. Each one either blocks the listing or gets it removed later. Almost every failed setup I review comes down to one of these three.

The expiry mistake is the sneakiest. The schema validates fine on day one, the job appears, and then weeks later Google drops it because it looks stale with no expiry. The remote mistake produces an immediate Search Console error, as covered above. The title mistake does not error, but it hurts, because a title like Acme Corp Nurse Bangalore matches fewer real searches than a clean Nurse.

The last mistake is marking up a page that is not really a single job, like a list of many roles. JobPosting schema describes one opening per page. If you want multiple roles found, each needs its own page and its own schema, which is exactly why the CMS template approach works so well.

What should you do next?

Start by turning your job openings into a Webflow CMS Collection, then add one JSON-LD embed to the Collection Page template with the five required fields bound to your CMS. Test one live job in the Rich Results Test, fix any warnings, and every future role you post will inherit the same working schema.

Getting your own careers page into Google for Jobs is one of the highest-value structured data wins I know, because it puts you in front of active candidates without a job board fee. If you want help wiring the schema into your Webflow CMS or debugging errors you are stuck on, reach out. I am happy to walk through your setup with you.

Get found, cited and the back office automated

Let's make your site the source AI engines quote and wire up the systems behind it.

Contact

Let's get your website found and cited by AI

Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.

Got it, thanks. I read every message personally and reply within 1-2 business days.
Oops! Something went wrong while submitting the form.