Skip to main content
A job detail page is a single page template that displays a different job depending on the URL — so /job/79000019 and /job/79000020 are served by the same page, each showing its own role. Rather than building a page per job, you build one template and bind it to a Job resource. This guide assumes you’re comfortable with the page editor. The concepts used here — Resources, dynamic slugs, interpolation, and conditions — are explained in Resources and dynamic pages.
Building a job detail page needs full page update access, because it uses the Resources and Sitemap settings. If you can’t see those sections in a page’s Settings, ask an administrator (see Users and permissions).

Create the page

1
Go to CMS → Pages and create a page
2
Click CMS → Pages → Create. Give the page a descriptive title (e.g. “Job detail”) and choose the locale.
3
Set a dynamic slug
4
Set the slug to /job/:id. The :id is a dynamic segment — a wildcard that captures whatever appears in that part of the URL. One page then serves every job URL, and the captured value is available to the page as {{params.id}}.
5
Click Create page
6
The page editor opens.

Add and bind the Job resource

1
Open Settings → Resources
2
In the top bar, switch to Settings and find the Resources section. Click Add resource and choose Job.
3
Set the Job ID to the URL parameter
4
In the Job resource, set Job ID to:
5
{{params.id}}
6
This tells the page to fetch whichever job matches the ID in the URL. Leave the Resource key as its default, job — that’s how you’ll refer to the job’s data in your content.
7
For a dynamic page, the Job ID must be {{params.id}}, not a hard-coded number. If you paste a specific job ID here (for example 79000019), the page will show that one job on every URL and ignore the :id in the address. Hard-coding an ID is only correct if the slug is static (a page for one fixed role).
8
(Optional) Add a condition to hide certain jobs
9
If you want some jobs to be unavailable on the public site, add a Condition to the Job resource. For example, set Compare field custom_data.is_internal, Comparison Equals, Compare with true, and Action Page not found — internal roles then return a 404 instead of rendering.

Build the page content

Use interpolation to drop the job’s data into your blocks. In a Rich text block, reference job fields with double curly braces:
# {{resources.job.title}}

{{resources.job.company_name}} — {{resources.job.city}}
{{resources.job.pay|Competitive salary}}

{{resources.job.description}}
Type {{ in any dynamic field and Studio will suggest the job fields available on this page. Commonly used fields include title, description, pay, city, company_name, category, employment_type, and any custom_data.<key> values passed in from your ATS.
You can also add an Apply button and a Job Search block for related roles, and use conditions to show or hide blocks based on the job’s data.

Set the SEO metadata

In Settings → SEO, you can use the same interpolation so each job gets tailored search results:
  • Page title — e.g. {{resources.job.title}} | Your Company
  • Meta description — e.g. {{resources.job.meta_description}}
Job detail pages also emit JobPosting structured data automatically from the bound job, which is what makes them eligible for Google for Jobs. See SEO and discoverability.

Configure the sitemap

A dynamic page template needs to know which URLs actually exist so they can be listed in your sitemap for search engines.
1
Open Settings → Sitemap
2
In the page Settings, find the Sitemap section and add a Dynamic parameter.
3
Match the parameter name to the slug
4
Set Parameter to id — it must match the dynamic segment in your slug (/job/:id).
5
Define the accepted values
6
Click Define and choose Jobs, then enter the Company slug. This pulls the list of live job IDs so every job URL is generated into your sitemap.
The Company slug here is the company slug in the underlying system, which may differ from the CMS company slug. If you’re unsure which value to use, ask your inploi account manager.

Preview and publish

1
Enter a job ID to preview
2
Because the slug is dynamic, the preview needs to know which job to show. Fill in the id field that appears in the preview toolbar with a real, live job ID from Hiring → Jobs. Until you do, preview shows “Set dynamic parameters to preview” and no job data appears.
3
Two things commonly stop a job page from previewing: an empty id in the preview toolbar, and using an ID that isn’t a live inploi job for this company. Copy the ID straight from Hiring → Jobs and paste it into the preview toolbar.
4
Publish
5
Click Save & publish. The live site always serves the published version, so a page that previews correctly but 404s in public usually just hasn’t been published yet.

If the page doesn’t render

See Why isn’t my job page showing? for the full list of causes — missing preview parameter, unpublished page, wrong job ID, a job that belongs to a different company, or content that references {{resources.job.*}} without a Job resource configured.