Google Indexing with JobRelay

In this article

Overview

Google Indexing tells Google straight away when a job is added, updated or removed on your site, using the Google Indexing API. New jobs can then appear in Google for Jobs within minutes or hours rather than days, and closed jobs drop out quickly so candidates don’t land on roles that have gone.

It builds on Google for Jobs markup (see the Google for Jobs with JobRelay guide). Google only allows the Indexing API for pages with job markup, so Google Indexing only runs when Output Google for Jobs markup is ticked, and only sends jobs that show a green tick in your job list.

Google Indexing is optional. Without it, Google still finds your jobs through its normal crawling. It is a speed boost, not a requirement. It is available from version 1.9 of the JobRelay Connector.

How it works

When this happensGoogle is told
JobRelay adds or updates a job that has Google for Jobs markupThe job was updated
A job’s title changes, so its URL changesThe new URL was updated and the old URL was removed
JobRelay removes a job, or a job is trashed or deleted in WordPressThe job was removed
A job loses its markup but its page is still live, for example it is marked as filled or expires in WP Job ManagerThe job was updated, so Google looks again and sees the markup has gone
A job is set back to draft or privateThe job was removed

Jobs without markup, and jobs that didn’t come from JobRelay, are never sent. Jobs that pass their closing date need nothing extra, because the markup already tells Google when the job closes.

Each change is added to a queue rather than sent while JobRelay waits, so posting a job is never slowed down. The queue is sent at the end of the same request, every 15 minutes by WP-Cron, and whenever you click Send now. If a job changes several times before it is sent, Google is told once.

Before you start

You need:

  • Version 1.9 or later of the JobRelay Connector, with Output Google for Jobs markup ticked.
  • Your site verified in Google Search Console, with you as an Owner.
  • A Google account that can create projects in Google Cloud. There is no charge and no billing account is needed.

Setup takes about 15 minutes. You don’t need any jobs on the site to set it up.

If you site already outputs schema in another way, tick the box to allow JobRelay to output the schema but use the snippet below to ensure that its output is not printed.

add_action( 'init', function() {
	remove_action( 'wp_head', 'jobrelay_wpcon_output_job_schema', 20 );
} );

Setup guide

Step 1: Verify your site in Search Console

Skip this step if your site is already verified in Search Console and you are an Owner.

  1. In Google Search Console, click the property box at the top left, then Add property.
  2. Under URL prefix, enter your site’s address exactly as it appears in your browser, for example https://www.yoursite.com/, and click Continue.
  3. Choose HTML tag and copy the code inside content="…".
  4. Add it to your site. In Yoast SEO, go to Yoast SEO > Settings > Site connections and paste it into the Google field. Rank Math has the same field under Rank Math > General Settings > Webmaster Tools.
  5. Back in Search Console, click Verify. Leave the tag in place afterwards, or the site can become unverified.

Step 2: Create a Google Cloud project

  1. In Google Cloud, click the project picker at the top left, then New project.
  2. Give it a name such as Job Indexing, click Create and make sure the new project is selected.
  3. Search the top bar for Web Search Indexing API, open it and click Enable.

Use a separate project for each website. Google’s daily limit is per project, so sites sharing a project share the limit.

Step 3: Create a service account and key

  1. Go to IAM & Admin > Service Accounts and click Create service account.
  2. Name it, for example jobrelay-indexing, and click Create and continue. It doesn’t need any roles, so click Done.
  3. Copy the service account’s email address from the Email column. It ends in .iam.gserviceaccount.com.
  4. Click the service account, open the Keys tab, then Add key > Create new key. Choose JSON and click Create. A JSON key file downloads.

Keep the key file safe. Anyone with it can tell Google about pages on your site.

If Google Cloud says key creation is disabled by an organisation policy, your Google Workspace administrator needs to allow it for this project (the policy is iam.disableServiceAccountKeyCreation). Alternatively, create the project with a personal Google account.

Step 4: Make the service account an Owner in Search Console

  1. In Search Console, select your site’s property.
  2. Click Settings at the bottom of the left menu, then Users and permissions.
  3. Click Add user, paste the service account’s email, set Permission to Owner and click Add.

It must be Owner. Full user is not enough, and Google will refuse every request.

Step 5: Add the key to the plugin

  1. Open the JSON key file in a text editor and copy all of it, including the opening { and closing }.
  2. In WordPress, go to Settings > JobRelay Settings and paste it into Google service account key.
  3. Set Google Indexing to On, check Output Google for Jobs markup is ticked, and click Save Changes.

Once saved, the key is never shown again. The settings page only shows which service account it belongs to. To replace it, paste a new key. To remove it, tick Remove the saved key and save.

Step 6: Test the connection

Scroll down to the Google Indexing section below the settings and click Test connection. You should see:

Connected. Google accepted the key for jobrelay-indexing@your-project.iam.gserviceaccount.com and confirmed it can send updates for https://www.yoursite.com/.

The next job JobRelay sends will be sent to Google. If the test shows an error, see Troubleshooting below.

The JobRelay team can complete these steps for you. We’ll need admin access to your WordPress site. The Google Cloud project and key will be set up in JobRelay’s Google account, and your site will be added to JobRelay’s Search Console. This doesn’t affect your own Search Console, and you can ask us to remove our access at any time.

Settings

SettingWhat it does
Google Indexing: OffNothing is queued or sent. This is the default.
Google Indexing: Log onlyJobs are queued and logged as if they were sent, but Google is never contacted. Useful for checking what would be sent, and for staging sites.
Google Indexing: OnGoogle is told about each job as it changes.
Google service account keyThe JSON key from step 3.

Storing the key in wp-config.php

A key saved in the settings is stored in your database. For extra security, a developer can set it in wp-config.php instead, either as the path to the key file, ideally outside the web root, or as the JSON itself. The setting then shows the key is set in wp-config.php, and it takes priority over any saved key.

define( 'JOBRELAY_WPCON_GOOGLE_INDEXING_KEY', '/home/youraccount/google-indexing-key.json' );

Staging sites

When you set Google Indexing to On, the plugin remembers your site’s address. If the site is copied to a different address, for example to a staging site, it automatically works in Log only mode there, so a staging site never tells Google about its jobs. The Google Indexing section explains this when it happens. If you have moved your live site to a new address, save the settings again to turn it back on.

Checking it’s working

In WordPress

  • Job list: hover over a job’s icon in the Google for Jobs column to see what Google was last told, for example “Google was told this job was updated on 13 October 2026 10:02”.
  • Edit job screen: the same line appears in the JobRelay Data box, with a Tell Google now link to send the job again.
  • Settings page: the Google Indexing section shows the service account, how many calls have been used today, how many jobs are waiting to be sent, and a log of the last 100 jobs sent with Google’s response.

In Google

Search Console doesn’t list pages sent through the Indexing API. To see them:

  • In Google Cloud, go to APIs & Services > Web Search Indexing API > Metrics to see how many requests Google received.
  • In Search Console, paste a job’s URL into URL inspection. The Last crawl time is usually soon after the job was sent.
  • The Job postings report in Search Console shows the job pages Google has found. It can take a few days to appear.

Google’s daily limit

Google allows 200 calls a day per Google Cloud project. Each added, updated or removed job uses one call. The limit resets at midnight Pacific time, which is 8am UK time.

When the limit is reached, nothing is lost. The plugin stops sending and keeps the remaining jobs in the queue, then sends them, oldest first, once the limit resets. Google still finds those jobs through normal crawling in the meantime.

Most sites never get close to 200 a day. A large first import is the most likely way to reach it. If you regularly need more, request a higher limit in Google Cloud under IAM & Admin > Quotas & System Limits, then ask your developer to raise the plugin’s limit with the jobrelay_wpcon_google_indexing_daily_limit filter.

Troubleshooting

When Google can’t be told about jobs, a notice appears on the dashboard, the job list and the JobRelay settings page, and in Tools > Site Health. Sending pauses until the problem is fixed, and starts again when you save the settings or click Send now.

MessageWhat to do
The key works, but Google would not accept updates for…The service account is not an Owner of the site in Search Console, or the Search Console property doesn’t match the site’s address exactly. Repeat step 4, checking http or https and www. Also check the Web Search Indexing API is enabled (step 2).
Google did not accept the service account keyThe key has been deleted or disabled in Google Cloud. Create a new key (step 3) and paste it in.
The service account key is not valid JSON, or This is not a service account keyCopy the whole of the downloaded JSON file again, including the braces.
No service account key has been addedPaste the key into the settings (step 5).
Jobs have been waiting more than 3 hours to be sent to GoogleWP-Cron isn’t running. This usually means DISABLE_WP_CRON is set in wp-config.php without a server cron job to replace it. Ask your host to set one up.
The daily limit of calls to Google has been reachedNothing to do. Sending starts again when the limit resets.
Google Indexing is not running because Output Google for Jobs markup is not tickedTick Output Google for Jobs markup and save.

If a job never shows anything about Google in its hover text, check it has a green tick in the Google for Jobs column. Only jobs with markup are sent. See the Google for Jobs with JobRelay guide for why a job might not have markup.

Testing on a local site

Google can’t verify a local address such as yoursite.test, so a local site can’t be sent to Google directly. Use Log only to see what would be sent. To send real requests from a local site, verify a staging domain in Search Console and swap the address with the jobrelay_wpcon_google_indexing_url filter:

add_filter( 'jobrelay_wpcon_google_indexing_url', function( $url ) {
	return str_replace( 'https://yoursite.test', 'https://staging.yoursite.com', $url );
} );

Developer hooks

HookTypeUse it to
jobrelay_wpcon_google_indexing_modeFilterChange the mode the plugin uses: off, log or live
jobrelay_wpcon_google_indexing_should_notifyFilterStop a job being sent to Google
jobrelay_wpcon_google_indexing_urlFilterChange the URL sent to Google
jobrelay_wpcon_google_indexing_daily_limitFilterRaise the daily limit after Google raises your quota
jobrelay_wpcon_google_indexing_notifiedActionRun code after Google accepts a job
jobrelay_wpcon_job_schema_column_textFilterChange the hover text in the Google for Jobs column
jobrelay_wpcon_after_job_schema_meta_box_statusActionAdd to the Google for Jobs status in the JobRelay Data box
jobrelay_wpcon_after_settings_formActionOutput content below the JobRelay settings form

FAQs

No. Google for Jobs markup is what gets your jobs into Google’s job search. Google Indexing makes it happen faster, and gets closed jobs removed sooner.

No. The Indexing API is free, and the Google Cloud project doesn’t need billing turned on.

Yes. They can verify the site in their own Search Console using the HTML tag method (step 1), create the project and key in their own Google Cloud account, and add the key to your site. They should use a separate Google Cloud project for each client.

Only when they next change. Existing jobs are already known to Google through normal crawling. You can send one straight away with Tell Google now on the edit job screen.

No. Turn off job pages in the other plugin, or leave Google Indexing off here, so each job isn’t sent twice and doesn’t use up your daily limit twice as fast.

Can’t find what you need?

Our integrations team set up every JobRelay site, so they know it inside out. Get in touch and we’ll help.