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 happens | Google is told |
|---|---|
| JobRelay adds or updates a job that has Google for Jobs markup | The job was updated |
| A job’s title changes, so its URL changes | The new URL was updated and the old URL was removed |
| JobRelay removes a job, or a job is trashed or deleted in WordPress | The 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 Manager | The job was updated, so Google looks again and sees the markup has gone |
| A job is set back to draft or private | The 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.
- In Google Search Console, click the property box at the top left, then Add property.
- Under URL prefix, enter your site’s address exactly as it appears in your browser, for example
https://www.yoursite.com/, and click Continue. - Choose HTML tag and copy the code inside
content="…". - 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.
- 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
- In Google Cloud, click the project picker at the top left, then New project.
- Give it a name such as
Job Indexing, click Create and make sure the new project is selected. - 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
- Go to IAM & Admin > Service Accounts and click Create service account.
- Name it, for example
jobrelay-indexing, and click Create and continue. It doesn’t need any roles, so click Done. - Copy the service account’s email address from the Email column. It ends in
.iam.gserviceaccount.com. - 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
- In Search Console, select your site’s property.
- Click Settings at the bottom of the left menu, then Users and permissions.
- 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
- Open the JSON key file in a text editor and copy all of it, including the opening
{and closing}. - In WordPress, go to Settings > JobRelay Settings and paste it into Google service account key.
- 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
| Setting | What it does |
|---|---|
| Google Indexing: Off | Nothing is queued or sent. This is the default. |
| Google Indexing: Log only | Jobs 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: On | Google is told about each job as it changes. |
| Google service account key | The 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.
| Message | What 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 key | The 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 key | Copy the whole of the downloaded JSON file again, including the braces. |
| No service account key has been added | Paste the key into the settings (step 5). |
| Jobs have been waiting more than 3 hours to be sent to Google | WP-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 reached | Nothing to do. Sending starts again when the limit resets. |
| Google Indexing is not running because Output Google for Jobs markup is not ticked | Tick 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
| Hook | Type | Use it to |
|---|---|---|
jobrelay_wpcon_google_indexing_mode | Filter | Change the mode the plugin uses: off, log or live |
jobrelay_wpcon_google_indexing_should_notify | Filter | Stop a job being sent to Google |
jobrelay_wpcon_google_indexing_url | Filter | Change the URL sent to Google |
jobrelay_wpcon_google_indexing_daily_limit | Filter | Raise the daily limit after Google raises your quota |
jobrelay_wpcon_google_indexing_notified | Action | Run code after Google accepts a job |
jobrelay_wpcon_job_schema_column_text | Filter | Change the hover text in the Google for Jobs column |
jobrelay_wpcon_after_job_schema_meta_box_status | Action | Add to the Google for Jobs status in the JobRelay Data box |
jobrelay_wpcon_after_settings_form | Action | Output 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.