SEO for Job Postings and how to post a Job on Google

Google started its job search some time ago in Germany (and some other countries). This functionality was already available in some English-speaking countries, but it has since been introduced in many other countries, too.

It seems like it’s time for me to write something about what others call “SEO for Job Postings”. This only describes how to post a job on Google. “Post a job” is, however, the wrong word for it as you can read below.

Of course you need structured data again. And in this blog post I explain how this works and how you can integrate it into WordPress. Let’s get started!

Google lists job postings in search results.
Google lists job postings directly in the search result.

How to post a job on Google

The first thing you need to understand is that you cannot post a job into Google directly. So the term “post a job” is a little misleading. Instead, it’s how everything else works: you post the job listing on your website and use Structured Data so that Google (and other search engines) know that the page is about a Job Posting. Sounds weird? Let’s clarify.

First of all let’s take a look how we can created a job posting on our site:

A) Write about a job

The first thing you should do is to write about a job and publish it. In WordPress you would create a new post, a page or a custom post type (maybe via a third party Job Posting plugin).

Now you have a post that is about a job. However, as you might know, from my Structured Data Training, Google can only guess if the page is about a job posting. That’s why you need Structured Data (read more below).

2) Add Structured Data for Jobs Postings

Next you need to add Structured Data to your blog post. If you’re not yet familiar with Structured Data in general, please consider my free Structured Data Training as I wrote above. Or read more after the how-to-section on this page.

Googles Reference for a JobPosting tells us which schema from schema.org we need to use (it’s the JobPosting) and what properties are needed to get the job posting into search results.

Don’t be afraid of the code snippet I’ll show you below. If you take a closer look you’ll recognize that we only have key-value-pairs here:

<script type="application/ld+json"> 
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "WordPress Developer",
  "description": "Vestibulum id ligula porta felis euismod semper...",
  "identifier": {
    "@type": "PropertyValue",
    "name": "WP-Buddy",
    "value": "1234567"
  },
  "datePosted": "2019-06-01",
  "validThrough": "2019-12-31T00:00",
  "employmentType": "CONTRACTOR",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "WP-Buddy",
    "sameAs": "https://wp-buddy.com",
    "logo": "https://wp-buddy.com/images/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Musterstraße 1",
      "addressLocality": "Musterstadt",
      "addressRegion": "BY",
      "postalCode": "12345",
      "addressCountry": "DE"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "EUR",
    "value": {
      "@type": "QuantitativeValue",
      "value": 60.00,
      "unitText": "HOUR"
    }
  }
}
</script>

Now you have to integrate the above code into WordPress.

2a) Use the WordPress editor

If you offer only one job, it is fine to copy this code and paste it into your WordPress editor. If you use the new block editor (“Gutenberg”) in WordPress, you can simply add an “HTML” block and copy the above code into it.

Don’t forget to replace the values and use your own!

WordPress Block Editor with the Structured Data for a Job Posting.

2b) Use a WordPress Plugin

If you have multiple jobs or a job portal with thousands of posts it’s better to automate things, right?

With SNIP, my Structured Data WordPress Plugin, you can do exactly that. You create one so called Global Snippet and attach it to all of your job pages automatically. In there you can work with placeholders that include – let’s say – the post title into the name property of the snippet. Super easy.

You can copy&paste the above code into the “import” field of a Global Snippet, too. This will generate a wireframe so that you can start adding the placeholders.

However what is more easy is this: copy & paste the following code and you’re almost done!

{
    "id": "snip-5ba213a8a8e21",
    "context": "http://schema.org",
    "type": "JobPosting",
    "datePosted-prop-5ba214cfe7db5": {
        "0": "current_post_date",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "description-prop-5ba214f35d336": {
        "0": "codepirates_job_description",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "employmentType-prop-5ba2150f61eff": {
        "0": "codepirates_employment_type",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "hiringOrganization-prop-5ba2154aa9ada": {
        "0": "codepirates_organization",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "identifier-prop-5ba215681873f": {
        "0": "http://schema.org/PropertyValue",
        "1": {
            "id": "snip-5ba215711936a",
            "context": "http://schema.org",
            "type": "PropertyValue",
            "value-prop-5ba215848023f": {
                "0": "codepirates_job_id",
                "1": null,
                "overridable": false,
                "overridable_multiple": false
            },
            "name-prop-5ba2159e9af77": {
                "0": "current_post_title",
                "1": null,
                "overridable": false,
                "overridable_multiple": false
            }
        },
        "overridable": false,
        "overridable_multiple": false
    },
    "jobLocation-prop-5ba21785f2b90": {
        "0": "codepirates_job_location",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "title-prop-5ba217ca17982": {
        "0": "current_post_title",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "validThrough-prop-5ba217f02b8de": {
        "0": "codepirates_job_validity",
        "1": null,
        "overridable": false,
        "overridable_multiple": false
    },
    "mainEntityOfPage-prop-5ceb9fa7833b9": {
        "0": "http://schema.org/WebPage",
        "1": {
            "id": "snip-5ceba1da3e25e",
            "context": "http://schema.org",
            "type": "WebPage",
            "@id-prop-5ceba1de6c705": {
                "0": "textfield",
                "1": "#webpage",
                "overridable": false,
                "overridable_multiple": false
            }
        },
        "overridable": false,
        "overridable_multiple": false
    },
    "@id-prop-5ceba25138a71": {
        "0": "textfield",
        "1": "#job",
        "overridable": false,
        "overridable_multiple": false
    },
    "_is_export": true
}

Note that you’ll maybe also need a Global Snippet for a WebPage and an Organization. See my Structured Data Examples page for more information on that.

3) Test your Structured Data

If you’re using a Cache-Plugin on your WordPress site, flush it! Then open up Googles Structured Data Test Tool and enter the URL to the post where you’ve added Structured Data. If you have done everything right, Google should show the JobPosting on the validation screen with no errors.

You should read my article about the difference of errors and warnings to learn more about how you can react to them when the tool should show you some.

Googles Structured Data Test Tool with the JobPosting snippet.

As you can see in the image, Google shows a Preview button that you can click. That will bring you to a preview search result. However this preview is not very accurate. And sometimes the preview doesn’t really looks nice. Don’t be scared and don’t care too much about it! If your snippet is correct and has no errors nor warnings, you’re fine!

Under the hood

If you’re interested in how this works, here is a quick example. Again, try to take my free Structured Data Training. It really helps you understand everything related to Structured Data and Rich Snippets.

What is Structured Data?

Structured Data is part of technical SEO. In most cases everything you do for SEO is user-related. However, Structured Data is not. Only search engines need it to get a better understanding of what is on your site.

A job posting page is a really good example. You, as a human, understand really quick that someone offers a job you can apply for. This is because we have learnt that a web page with a job posting has a certain structure:

You can see the description of the job, the job title, the salary and a lot more. However search engines can only guess that it’s really about a job. Of course, nowadays they’re using more and more artificial intelligence and intelligent algorithms to detect that. But that’s really resource intensive. There must be an easier solution. And it’s called Structured Data!

Learn more about this in my post: Understand how structured data works.

How does Structured Data look like?

There are different formats. However, JSON-LD is the recommended way of adding Structured Data nowadays. This format is readable by machines as well as by humans (if formatted correctly as you’ve seen above). So I don’t want to show you the other formats. They’re difficult to read and old anyway.

Let’s take a look at the example above but with less properties:

{
  "@context":    "https://schema.org/",
  "@type":       "JobPosting",
  "title":       "WordPress Developer",
  "description": "Vestibulum id ligula porta felis euismod semper..."
}

You can recognize very easily:

  • We use “JobPosting” (@type) from schema.org (@context).
  • The title is “WordPress Developer”.
  • The description is “Vestibulum id ligula…”.

I think you now understand that it’s more easy for search engines to crawl and understand everything by fetching the data in JSON-LD format.

Summary

For many people, structured data seems to have a frightening effect. The thing is that it’s not as easy as posting a job directly to Google somewhere (which obviously doesn’t work). Instead you need to do some SEO for Job Postings by adding Structured Data to your page. For this you need to use JSON-LD code that needs to be integrated on your page. Plugins, like SNIP, can help you create those snippets without the need of coding anything.