Job Codes & Dynamic Fields (Alpha)
Setting Up Job Codes & Dynamic Fields
Job codes give you a single, standardized way to tie a title to everything that goes with it. Once a job code is set up, selecting it can automatically pull in the data you've linked to it, like compensation bands, department, cost center, or job descriptions, so your team spends less time re-entering the same information and more time making good hiring decisions.
This article walks you through setting up job codes and dynamic fields from scratch, in the order we recommend doing it.
What is a job code?
A job code is a unique identifier you assign to a role in your organization. It's distinct from the job title itself: a job code is the anchor, and the title is what it's tied to.
Job code and title are the only two pieces of information a job code strictly requires. At its simplest, a job code is a way to standardize titles across your org, so the same role is described and tracked consistently everywhere, even if variations of that title show up in different departments or levels.
Beyond that, a job code can also act as a hub for other data. You can link additional fields to a job code, like a compensation band, department, cost center, or job description, so that selecting a job code automatically brings all of that linked data along with it. How much you link is up to you: some teams use job codes purely for title standardization, while others use them to drive a much wider set of auto-populated data.
Before you begin
Job codes work best when you set them up in the right order. Turning on features out of sequence, especially before your existing people are matched to job codes, can leave your team looking at blank fields where they expect data. Here's the order we recommend:
- Turn on Job Codes & Dynamic Fields
- Confirm your compensation bands are already set up (if you plan to link them)
- Build your job code table
- Set up compensation auto-population, if you want it
- If you sync employee data from an HRIS, map job code and choose your sync behavior
- Match your existing people to job codes
- Turn on the new job creation experience and set up your filters
We'll walk through each of these below.
Step 1: Turn on Job Codes & Dynamic Fields
Turning this on unlocks the Job Codes Data Model page, where you'll build out your job codes and decide what data should be tied to each one.
If you plan to link compensation bands to your job codes, make sure your comp bands are already created and configured first. You'll need them in place before you can add "Comp Band" as one of your linked fields.
A quick note on scope: Job Code and Title are the only two fields you're required to fill in. Everything else, comp band, department, job description, custom fields, is optional. Before you build out your table, it's worth deciding how much you actually want job code to drive. Some teams use it purely to standardize titles across the org. Others use it to auto-populate a lot of downstream data. Either is fine, just know that every field you link is a commitment to keeping that data current.
Step 2: Understand how job code, title, and linked fields work together
A few core concepts to keep in mind as you build your table:
- Job code is your unique identifier. Title is what it's tied to. Every job code must be unique, but the same title can absolutely be tied to multiple different job codes. This is useful when the same title exists in different contexts across your org. For example, if "Associate" exists in multiple departments at different levels, each department and level combination can get its own job code, even though the title people see is the same.
- Any additional column you add becomes a linked field. Built-in fields, custom fields, single-select fields, boolean fields, job descriptions, comp bands, whatever you choose. When someone selects a job code, ChartHop automatically pulls in the values tied to it.
- Each job code can only point to one value per linked field. If you link comp band, for instance, each job code maps to exactly one comp band. That said, the reverse is completely fine: the same comp band can be linked to as many different job codes as you need. Three different sales rep job codes can all point to the same sales rep comp band.
Step 3: Build and upload your job code table
You have two ways to get your job codes into ChartHop:
Bulk upload
- On the Job Codes Data Model page, add every field you want linked to job code as a column header.
- Download the blank template, which will already have your chosen column headers in place.
- Fill it in: one row per job code, with the job code, title, and any linked field values you want populated.
- Upload the completed file.
One at a time Use the Create Job Code option to add individual job codes directly, without a bulk upload.
Best practice: If you're setting up a large number of job codes, start with the bulk upload template rather than adding codes one by one. Getting your column headers right from the start saves you from mismatched formatting later.
Export your table
You can export your full job code table at any time from the Job Codes Data Model page. This gives you a spreadsheet with every job code and its linked field values, which is useful for offline review, audits, or preparing a bulk update you want to re-upload later.
Updating job codes after setup
Once your table is built, you don't need a spreadsheet to make changes. You can edit any job code directly in the Job Codes Data Model page by selecting the cell you want to update and entering a new value.
Use this for things like renaming a title, reassigning a comp band, updating a cost center, or adding a value to a field you left blank during initial setup. You can also add new job codes one at a time using the Create Job Code option.
Good to know: Changes to a job code update the table itself, but they don't retroactively update roles that already have that job code assigned. Existing roles keep whatever values they had when they were created or last edited. The updated values will apply the next time someone selects that job code for a new or edited role.
Step 4: Set up compensation auto-population (optional)
If you want selecting a job code to also populate compensation, there are two pieces to set up, and it's worth understanding how they relate.
Linking comp band to your job code table This is what determines which comp band is associated with a given job code (covered in Step 3).
Starting Salary settings This determines what value gets pulled from that comp band once it's populated. You'll find this in your financial settings.
- Choose what value to pull from the band: minimum, first quartile, midpoint, or a custom percentage (for example, setting all new open roles to the 20th percentile of the band).
- This setting applies the same way across all of your comp bands.
- Set an effective date, since comp bands themselves carry effective dates.
- Choose whether to also pull in equity and variable compensation from the band.
Good to know: Compensation auto-population from comp bands works whether or not you're using job codes. You can set this up through financial settings alone if you'd rather not tie it to job codes at all.
Good to know: This only applies to open roles. If a role is already filled with a real person and a real salary, ChartHop will never overwrite that with data from a job code or comp band.
Step 5: Estimate cost for open roles with no compensation set (optional)
If an open role has no compensation entered at all, you can turn on a setting that estimates its cost using the midpoint of its linked comp band, rather than showing that role as costing nothing. You can use this setting on its own, without configuring Starting Salary, as a simple way to make sure your open role costs are never reported as zero.
Like Starting Salary, this only affects open roles, never filled roles with a real salary.
Step 6: How sensitive compensation data is handled
If someone doesn't have permission to view compensation fields, they won't see them, even when a comp band is linked to a job code they're working with. The underlying data is still stored on the record, so it's there for anyone with the right permissions later in the process, such as during approvals.
Step 7: What you'll see when you select a job code
When you select a job code while creating or updating a role, you'll see a box showing all of the linked field values tied to that job code, whatever you chose to include when building your table.
If you need to change one of those values, for example, you know a role needs a different starting salary than what auto-populated, you can enter a new value directly. The box will show both the original default and your updated value, with the changed field visually highlighted so it's clear something was manually adjusted. That override stays visible as the role moves through your approval process.
Fields with longer content, like a linked job description, won't display in full inside this box. Instead you'll see an icon you can click to jump to the full description.
Step 8: Syncing job codes from your HRIS
If you bring employee data into ChartHop through an HRIS sync, job code doesn't match automatically on its own. You'll need to:
- Map the job code field from your HRIS to ChartHop's Job Code field, so it populates correctly as records sync over.
- Choose how the rest of your linked fields behave during sync. You have two options:
- Apply all associated fields: every sync updates the job code and all of its linked fields, so everything stays fully aligned with your job code table.
- Update job code only: the sync updates the job code but leaves your other fields as they are. If those fields don't match what the job code would normally populate, they'll show up as overrides.
Best practice: Before turning on job codes for an account with an active HRIS sync, decide up front whether you want every synced field to fully match your job code table, or whether you want to preserve whatever comes from your HRIS even if it diverges. Getting this decision made ahead of time avoids surprises once new hires start flowing in.
Syncing job codes from your ATS
If you bring requisition or candidate data into ChartHop through an ATS integration, you can also map job codes from your ATS to ChartHop's Job Code field. The same enrichment behavior applies: when a job code comes in through the sync, ChartHop can populate the linked fields tied to that code.
Like the HRIS sync, you'll find a setting to control whether linked fields are applied during ATS syncs. If you'd rather the sync only bring in the job code without overwriting other field values, you can turn enrichment off.
Step 9: Match your existing people to job codes
Building your job code table doesn't automatically apply codes to the people and open roles already in ChartHop. You have two ways to do this:
Use the matching tool (recommended)
- Go to the job code matching tool.
- ChartHop will suggest a job code for each unmatched role, along with a confidence level.
- Review and apply the suggested matches. High-confidence suggestions can be applied in bulk, and anything lower-confidence is worth a manual check.
- You can re-run the matching process at any time.
Match manually Use your data sheet to assign job codes directly, row by row.
Best practice: Get most, if not all, of your org matched before moving on to the next step. If you turn on the new job creation experience before matching is mostly done, your team will open it up and see largely blank fields, since it pulls from the new job code data, not your existing unmatched records.
Good to know: There's currently no way to bulk-delete job codes, so plan your setup carefully, especially in a testing environment.
Step 10: Turn on the new job creation experience and set up filters
Once most of your org is matched to job codes, you're ready to turn on the redesigned job creation experience. This will apply everywhere a new role is created, not just going forward.
You can also set up to three fields to filter your job code list by (for example, department or location), so your team can quickly narrow down a long list to what's relevant to them.
Best practice: Choose filter fields based on how your managers actually think about your org, not just the default option. If your team commonly filters by position and location, set those up rather than defaulting to department alone.
What your team sees
Once filters are configured, anyone creating or editing a role will see the filter options at the top of the job code dropdown. They can narrow the list by the fields you chose, for example selecting a department and location first, so they're only picking from the job codes that are actually relevant. This is especially useful for orgs with a large number of job codes where scrolling through the full list isn't practical.
What this feature doesn't cover
Job codes and dynamic fields are focused on standardizing titles and linking supporting data to them. A few related but separate capabilities:
- Month-over-month cost or budget forecasting
- Budget roll-ups across a hierarchy
- Allocations tied to group membership
- Complex custom financial modeling (fully burdened cost calculations, pay-period-based conversions, currency exchange adjustments)
If you're looking for any of these, reach out to your ChartHop CX team (CSM, IS, or Support) to talk through the right approach for your org.
Known limitations
- Turbo Importer does not currently create new fields automatically. If your import file includes a column that doesn't match an existing field, that field needs to be created manually before importing.
- There's currently no bulk delete for job codes.
