Matador Jobs 3.8.11 – Object Caching Bugfix

On Tuesday, August 1, 2023, we released Matador Jobs 3.8.11 to all our users. This release contains a bugfix that improves how Matador Jobs works with object caching systems, especially the Redis Object Caching system.

A No-Name Transient Bug

PHP is a stateless programming language, which means it does not remember data from one load to another. Since WordPress is built with PHP, each time WordPress loads a new page, it would load a copy of itself that has forgotten data from its previous load, but we programmers pass state between each WordPress load using HTML form data, query strings, cookies, and most importantly, the database.

When data is temporary in nature, but also necessary to store in the database, we use “transients”. These data are given a name like “matador_temporary_information” and each time WordPress loads it reads transients and “remembers” that information. WordPress provides a robust system to create and use this transient data, and a part of that system, we learned, is a little less robust than we expected, as it does not have a safeguard in place for when a developer (ie: us) make a mistake that fails to properly name that transient. And that is what we did.

When this happened, we actually didn’t break WordPress. WordPress somehow works just fine with a no-name transient. However, to make WordPress more efficient at scale, web hosts use persistent object caching systems, including Redis. Redis, and other persistent object caches, bypass the database for transients, saving this temporary data in a persistent memory shared between loads of WordPress. This makes WordPress much faster, especially when developers leverage Transients and other caching in their plugins, as Matador does. That said, a no-name transient, which doesn’t break WordPress, does cause Redis to freak out, and that is the problem we discovered this week! Ooops!

This hotfix release does basically one thing… fixes a bug that results in a no-name transient. We also have written and submitted a patch to WordPress cores that adds safeguards to prevent this from happening for future WordPress developers, and that may come in a future release of WordPress.

Other/Misc

This patch also confirms that Matador Jobs Pro and Matador Jobs Lite is tested on versions of WordPress 6.3, due for release on August 8th, 2023.

Update Now!

Matador Jobs 3.8.11 is released for automatic* update to all subscribers as of Tuesday, August 1, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

* Please Note: if your current installed version is 3.8.0 to 3.8.4, you need to manually install this update.

Matador Jobs 3.8.10 – Bullhorn Datacenter-specific Authorizations, Search by ID, and Minor Fixes

On Wednesday, July 19th, 2023, we released Matador Jobs 3.8.10 to all our users. This release is a small update with a few minor enhancements that couldn’t wait for Matador 3.9.0 and some bug fixes that were worth bringing along for the ride. Let’s dive in–a pun to express how I’d rather be finding a pool to avoid this sweltering Phoenix summer (today is the 20th day of 110ºf or 43.3ºc or greater here!)

Bullhorn’s API Authentication Updates

Last week, Bullhorn released an update that improved their API Authentication routines to prefer the use of Datacenter-specific authentication servers. While geographically distributed datacenters have been in use since the first days of Matador, back then and until now, a Matador site would still initially log in at the one centralized authentication server and then after login be redirected to the datacenter where your data was stored. This Bullhorn update now asks that API systems perform initial login on new geographically-distributed authentication servers as well, and moving forward, and for backward-compatibility, if an API system tries to log in at a different datacenter, the API system will be redirected before login.

This is a great change that will result in more performant routines, especially for non-US based users, but Matador needed an update to its code adapt to this Bullhorn change. Note that older versions of Matador will still use the single centralized authentication server (until it stops working, if ever) but will be redirected by Bullhorn’s backward-compatibility, which means older versions will now be slower than before. This version of Matador, and any moving forward, will only use the centralized server on the first-ever login for the site, thereafter re-authenticating from the datacenter specific authentication servers and taking advantage of the Bullhorn API authentication process update and its performance benefits.

The only potential issue we see moving forward is that your connection will break in the rare case that your data is moved from one datacenter to another. If this happens you will need to reset your Bullhorn Connection in Matador after the change, but this is extremely uncommon to have your company data migrated to other client clusters.

As a bonus, since we were working in the same section of our code, we were also able to remove the “Datacenter” step of the Bullhorn Connection Assistant as its former functionality is now automated, streamlining the user connection to Bullhorn even more.

Search by ID in Matador Search

It is common request: “Can Matador search take me directly to a job if I search the ID?” The answer has been no in the past. We provided a way for users to separately have a “Search by ID” field added to search forms, but we felt the added complexity on search would cause issues.

We have found a reliably efficient way of extending this desired behavior and, since it is fully backward-compatible and requires no changes to use, are deploying it early with this hotfix release. Provided your ID numbers are non-zero integers (some future integrations use alphanumeric IDs and thus won’t qualify for this) and a non-zero integer number is provided in the search field without any other text characters, Matador will switch to searching on the external ID, and if found, return the job matching that ID.

You can still use the separate Search By ID search field, and future non-Bullhorn integrations may require it if the job IDs from those systems are not integers.

Minor Bug Fixes

This release also fixes the following minor bugs discovered since 3.8.9.

  • Do not set the salary_string and salary_formatted values for a job when the fallback/default salary value is used and is not set or set to zero.
  • When a fallback/default salary value is used and is a non-zero, set the salary_string value.
  • Fixed issue where a Google reCAPTCHA script installed by another theme or plugin but not used by Matador’s Google reCAPTCHA solution would cause Matador’s form to not pass validation.
  • Identified and fixed issue in Matador’s new sync routine (currently in beta) that could be encountered when a sync step is not found as a class method or callable and thus resulting in an infinite loop.
  • Identified and fixed two issues in Matador’s new sync routine (currently in beta) where a class property that was to be read via late static binding was being read as an instance property, causing issues in some implementations. Notably, locally created jobs were being removed during a remote sync.

Update Now!

Matador Jobs 3.8.10 is released for automatic* update to all subscribers as of Wednesday, July 19, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

* Please Note: if your current installed version is 3.8.0 to 3.8.4, you need to manually install this update.

Why Should Your Agency Have a Job Board On Your Website?

We at Matador Jobs work with hundreds of hiring agencies to create engaging online marketing for the vacancies they are actively recruiting for. We’ve had many conversations with new or potential users about why it is worthwhile to have a public job board on your website, specifically, one that exists on your same domain and is branded to your website.

It is common for us to hear arguments against this. Thanks to the prevalence of sites like Indeed, Monster, and LinkedIn for job searches, it is easy to think your hiring agency doesn’t need a branded job board on your website.

We’ve also seen users that do it, but in a way that doesn’t benefit them. For example, by including a job board in an iFrame, having a separate jobs website on a subdomain, ie: jobs.your-site.com, or locking their job listings behind a user registration and login.

Let’s talk about the benefits of a public job board on your primary domain.

A Job Board Builds Confidence with Both Customers and Job Seekers

Your job board sells you. It sells you by building confidence with the job seekers and potential clients. You’ve developed a brand and the best way to show it off is side-by-side your jobs. By drawing job seekers to your site, they get to see your brand and things like your blog posts and about us pages to see that you are better than the black hole of an Indeed resume submission. Meanwhile, potential clients can see that your currently offered jobs match what they want to hire you to market for them.

Post your jobs on a job board on your website and make sure they are visible to anyone without a registration or login. This ensures your web site with a job board will build confidence and increase applications and client activity.

A Job Board Drives Traffic To You and Away from Distractions

Google for Jobs Search doesn’t accept applications on their platform and instead drives traffic to other sites–like yours. Meanwhile, jobs posted on Indeed can link back to your site.

Given those two platforms are the highest-traffic platforms for job seekers today, getting job seekers onto your website–and away from the distractions of other jobs by your competitors–increases the likelihood of capturing their attention, receiving an application, and landing a lucrative placement.

Job Board Content Increases Overall SEO

If a potential client is looking for an agency like yours, they might search on web search engines like Google and Bing. With all of your job content available to search engine bots, you are more likely to get ranked highly when your client looks for an agency like you to work with.

Putting your jobs exclusively on external platforms like Indeed or LinkedIn, or on your website but behind a login or registration, or on a subdomain website unlinks your jobs from your website and branding when the search engines evaluate you.

Conclusion: Have a Website Job Board

The bottom line: the benefits of a public job board on your main website overwhelmingly increase traffic and thus applications and new client activity for your business.

There are many options for creating this job board, but if you are a Bullhorn ATS user, consider Matador Jobs, a Bullhorn Marketplace Partner, as yours.

Matador Jobs 3.8.9 – publishedZip and Minor Fixes

On Friday, April 28th, 2023, we will release Matador Jobs 3.8.9 to all our users. This release is a small update with a few minor enhancements and bug fixes. Let’s dig in.

Bullhorn’s publishedZip Becomes the Default Post Code Field

Bullhorn continues to improve its “public” job special object, which is a subset of the job object’s fields for “public” consumption. A feature of Matador is we access the whole “private” job object to give you the power to do more with your job board, but in many cases, using the “public” job fields, when available is a best practice.

Since our last round of updates for the “public” job, the publishedZip was added. When a Bullhorn users completes a publishing action on the job, the publishedZip is automatically populated from the job’s address, or if not available, the end company address.

That said, some of our users expose the published zip field for manual editing and are unhappy to have learned Matador does not read it. Beginning with this update, Matador Jobs Lite and Pro will prefer the publishedZip value to the address->zip value. This will improve the experience for those users that modify the published zip while leaving the job address intact, and will not change the experience for those who do not.

As a warning however, a best practice is to not do this. Since Matador uses Job City/Locality, Job State/Province, in addition to Zip/Post Code to provide a detailed job location to external services like Google for Jobs Search, a Zip/Post Code that is not a proper match for City/Locality and State/Province will create potential issues for location-based job search. You should have your job address properly set and let the publishedZip be set by Bullhorn during job publishing routines.

Minor Bug Fixes

This release also fixes the follow minor bugs discovered since 3.8.8.

  • Fixed issue caused by change to how Bullhorn’s returned resume object formats secondarySkills data. The issue was not impacting sync of Applications but was logging a PHP Warning and resulted further in the secondary skill data not saving to the Applicant record.
  • Fixed an issue with one of Matador’s site health monitoring systems failing when a transient is not set properly on first use of the day.
  • Fixed a bug where some salary strings would not have the proper salary unit field due to a variable name for the salary unit being misspelled.
  • Added logic to prevent a PHP “warning” from being logged when a job did not have a value in the “last post meta” meta array. The “last post meta” meta array was added in 3.8.7 so this would only occur on the first job update (due to republishing or a hard sync) on each job record after an upgrade from before 3.8.6 or earlier.
  • Fixed issue where items appended to the content of a job posting description, ie: apply button, application, job info bar, etc, was being added to XML feed content when it should not.
  • Fixed bug on new sync (currently in beta) that caused Matador to fail to ignore locally created jobs during sync, resulting in them being removed when they should not have been.
  • Added some additional logging to new sync to help us more widely monitor its performance.

Update Now!

Matador Jobs 3.8.9 is released for automatic* update to all subscribers as of Friday, April 28, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

* Please Note: if your current installed version is 3.8.0 to 3.8.4, you need to manually install this update.

Matador Jobs 3.8.8 – Polyfills, Minor Updates

On Wednesday, April 12th, 2023, we will release Matador Jobs 3.8.8 to all our users. This release is a small update with a few minor enhancements and bugfixes. Let’s dig in.

WordPress 5.9 Polyfills Added to Matador

A polyfill is code added to a software package that provides it access to newer programming language functionality while running older versions of the programming language. PHP 7.4 and PHP 8.0 both added some very useful new functions to the core language and WordPress coders wanted to use them. Since WordPress is committed to long-term backward compatibility, the only way to safely use these new functions was to polyfill them, so when a site is running older PHP versions, the functions would be included in WordPress instead of in PHP.

With this update, we added the PHP 7.4 and PHP 8.0 polyfills from WordPress into Matador so that we too could access these new functions in both Matador Jobs core and our extensions while continuing to support older versions of WordPress and PHP.

That said, our commitment to supporting WordPress down to 4.9.6 and PHP down to 5.6 will cease with our 3.9.0 release, as we said in our 3.8.0 release notes and later reiterated in our WordPress 6.1 “What to Expect” post. Reminder: beginning with Matador Jobs 3.9.0 we will require WordPress 6.1 and PHP 8.0.

Other Minor Enhancements

This release added the other three minor enhancements:

  • Updated a logger line to now display the ID of the Submission when a candidate is submitted to a job as a Web Response or Job Submission.
  • Added filter matador_bullhorn_applicant_countryID_default to override the Bullhorn CountryID default fallback on new Applications, in the event the firm’s default country is not ID 1 in Bullhorn.
  • Added protections for improperly formatted WorkHistory job titles returned from the Bullhorn API resume processor.

Minor Bugfixes Inbound

This release also fixes the follow minor bugs discovered since 3.8.7, including another related to the Salary Range feature we released in December 2022.

  • Fixed an issue that caused an improper salary range string (used to display salary information in templates since 3.8.4) to be generated when there was a zero or null value in the Bullhorn data object’s salary field for the job but a properly configured salary high and salary low field was defined in Matador settings.
  • Fixed issue that may occur during source tracking when a server’s HTTP User Agent variable is blank.

Update Now!

Matador Jobs 3.8.8 is released for automatic* update to all subscribers as of Wednesday, April 12, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

* Please Note: if your current installed version is 3.8.0 to 3.8.4, you need to manually install this update.

On Software Development Priorities in Our Ecosystem

Our long time users, especially those who we’ve had candid conversations about the development of features for Matador and it’s extensions, will know that sometimes our guesses are way off. We have several projects we’ve told our users we are actively working on, but some are months past our original expected completion goals. For example:

  • I shared with a user that I wanted to see an extension for Location-based Job Searches released by the end of summer 2022, and we are now in approaching spring 2023.
  • A user who joined our ecosystem in last summer last year discussed a desire for features related to user-editable profiles and I shared we wanted that done by year-end, but again, its now spring.

And those are just two examples, with many more on the list. So, why is that? Why do we miss our goals? Well, it isn’t for a lack of best intentions, promise!

You see, when you join the Matador Jobs ecosystem you are not purchasing a static piece of software, you are purchasing access to support and updates to a living, breathing piece of software that exists in a fast-paced industry. Late last year, we were hit with a triple-whammy of things out of our control but that needed immediate attention. These things “skipped the line”:

  1. Several major jurisdictions in the US including the city of New York and the states of Washington and California announced enforcement of new Salary Transparency legislation would begin on an accelerated timeline, some as early as the start of the new year. Not only did we produce an update in mere weeks to ensure our users could be compliant with these laws, but we’ve made now three updates to the feature in 2023 already as we’ve observed pain points for users implementing it.
  2. WordPress 6.1 came out and as a truly performance-based update, the first in several years, required we address updates to take advantage of changes and fix new quirks, some of which are still being addressed today.
  3. Several changes to the Bullhorn REST API occurred that required we quickly produce updates to ensure connection stability and data integrity.

All current users of Matador Jobs needed the above updates as soon as possible while simultaneously all current users of Matador Jobs are doing business without the features under development that were moved back to prioritize the above items. Further, all of the above items were major development efforts beyond the scope of regular bug fixes–which also keep us on our toes at all times.

That said, it would be a lie to say the story ends there, however. Yes, the unexpected, high-priority, everyone-needs-them-and-now features and updates like those from last fall will always skip the line, but so do sponsored projects. In our Request a Feature page, we explain how a user can sponsor the development of a feature or extension:

If there is a feature we’ve blessed and you don’t want to wait, you can sponsor it. In that case, we will split the cost of development of the feature and include it first in a special pre-release for you then in the next regular release for everyone else. You will agree to sponsor 50% of the cost of development, which we will estimate for you ahead of time.

Given we are still a small team, we do allow some of our development time each week to go toward sponsored projects. These sponsored projects benefit everyone, but impact how work is prioritized after the mission critical needs, like the three items encountered last fall, are addressed. That doesn’t mean all our time is up for grabs, but any time not going to a given feature or extension will mean that the feature or extension will take that much longer.

During a meeting of the minds late last year, Paul and I agreed that we’ve taken on too many sponsored projects lately. We are working on clearing our queue of previously agreed upon sponsored work and being more selective of what we take on, as we are aware some of our sponsored work has benefited niche needs over features that would benefit a wider swath of our user base, and we want to be better balancing our limited time instead of appearing like we are selling it to the highest bidder.

Anyway, I hope this helps you understand our thought processes and some of the nitty-gritty realities of our day-to-day decision making at Matador. I wrote this post to offer the transparency you often don’t get with other companies while also ending on a high note that we aim to be better too! Thanks for being a member of our community!

Matador Jobs 3.8.7 – A Focus on Performance

On Wednesday, March 8th, 2023, we will release Matador Jobs 3.8.7 to all our users. This release is a performance-focused update and we are excited to get it in the hands of our users. Let’s dig in.

Performance Improvements

The bulk of our effort that went into this release was to improve performance when communicating with with Bullhorn and maintaining connection reliability. The change notes are short, and don’t really capture the significant effort we put into reviewing every piece of our interface with Bullhorn.

We found some of our users’ issues with performance is the result of Matador’s growth in size and scope impacting the total number of times we needed to communicate with Bullhorn. In 2018, Matador “talked” to Bullhorn once per 30 minutes, now it can “talk” to Bullhorn every few minutes, especially when a logged in administrator is doing work in Matador settings or the WordPress admin. One of the key causes of unexpected disconnections, we found, were many “conversations” happening between Bullhorn and users’ sites at once causing “race condition” bugs. We identified ways to prevent these from occurring in several instances, including moving some on-demand connections into the sync routine and forcing other connections to be prioritized over others. We will continue monitoring this part of our code for further improvements.

While doing the work around “race condition” bugs, we found that one of the worst offenders was a developer/debugging tool, included on all installs of Matador Jobs, that would incorrectly trigger some Bullhorn connections even when not in use. More connections mean an increased likelihood of these “race condition” bugs. We had previously intended to move the tool away from core into a separate “Developer Tools” extension, and we expedited that plan while also fixing the bug should you install the Developer Tools extension.

We also found several issues with how some caching and load balancing systems, which are employed by web hosts to speed up your sites and ensure uptime, were handling WordPress transients. Transients are pieces of information that is temporary in nature but necessary to be persisted between instances of WordPress and PHP while valid. Matador used WordPress transients to sustain aspects of Bullhorn connections. We found some load balancers and caching systems were, as expected, syncing transient data between instances, while others, and especially since WordPress 6.1 which modified performance at a core level including adjusting transients management, were not. To protect our connection transient data, we opted to move away from using WordPress transients for anything connection-related in place of an alternate system we have greater control over and can more reliably expect caching and load balancing systems to handle on a uniform basis.

The key performance improvements, which have massively improved connectivity consistency on the sites we’ve tested them on, are summarized as:

  • Prevented “race condition” bugs when multiple concurrent Bullhorn connections are running at once. These will now be considerably more uncommon.
  • Removed a developer debugging feature that could interrupt a regular Bullhorn communication if a logged in user was accessing WP Admin during a specific window of time during an active Bullhorn communication.
  • Removed any reliance on the WordPress Transients API for handling Bullhorn connection variables, falling back to explicit use of the options database. This is to prevent inconsistent handling of transients by load balancers and persistent object caching systems we’ve encountered since WordPress 6.1 and Matador 3.8.0.

Modifications Admin Notice Emails; No Emails Outside of Production

Admin notice emails were the next on our list to review. They weren’t the cause of connection or performance issues, but they were failing at their job of helping mitigate them. We identified a few key issues with Admin emails:

  • Admin Emails all shared a single “timeout.” So an admin email warning about a “Private Candidate” would block an admin email about a disconnection if the former was queued to be sent before the latter.
  • Admin Emails would send on all sites, including any set up for testing or development. This led to confusion about when an email required action.

The result was some users had become numb to them. So, we made the following changes:

  • Each Admin Notice email (Disconnection, private candidate entitlements, consent object entitlements, cron error) have a separate timeout.
  • Admin Notice emails will no longer send for sites that are Development, Test, or Staging environments. It is recommended you leverage the WP_ENVIRONMENT_TYPE constant, but some common URL schemes from popular hosts automatically trigger the Dev/Test/Staging check and prevents emails on those installs.

The result should be much fewer admin emails and admin emails only when they concern issues about your Production, working web site.

Sidestepped Linux Bug Causing Invalid Resume Errors

Some of our users began noticing some applications would process but get no resume file. They’d check their Matador copy of the application and see a resume file, which they could download, and which would open. Yet Matador was not submitting the file to Bullhorn.

We investigated and found that Matador, through its use of WordPress’s file type validation functions, which used PHP’s file type validation classes, which used the operating systems file system tools, was indeed declaring the files invalid.

Why? Well, it took a while to figure out. And it is a heck of a story, but let us first explain how Matador handles files:

  • When a file is input into the application, it is validated in that moment against several checks. Maximum file size and file type are a few. This is to help prevent dangerous files being uploaded to your site.
  • Later, when a resume file is submitted to Bullhorn, as well as when any files are saved into Bullhorn, before the file is sent to Bullhorn it is validated again, just in case. This is to prevent your site sending dangerous files to Bullhorn which could get your account revoked or damage your data.
  • Even though we check the files going in, we check the files again going out in case your site is compromised and the files are modified by the hack.

The issue, we found, is wild! Here is what we learned:

  • For some time and/or still today, when a user creates/created a resume in Google Docs and exports the file as a Microsoft Office Open Office Document (docx), Google Docs would save the file with a doubled MIME-type string.
  • A MIME-type is important for systems to validate the file and determine it is safe. The doubled MIME-type string is not valid.
  • That said, most of the software that reads these files are able to figure out the bug and validate the file. Even if the bug is now fixed at Google Docs, any docs created with this doubled MIME-type will persist. That said, it appears Unix/Linux’s libmagic module has not added special handling for this.
  • The PHP dev team, which updated the programming language that WordPress and Matador uses, all the way back 2019 considered the issue and decided not to address it as it was being caused “upstream”; libmagic needs to fix it.
  • Since WordPress uses PHP’s filesystem tools that rely on libmagic, and since Matador uses WordPress’s filesystem tools, the issue, which is still unfixed three and a half years later, impacts Matador users.

Now that we understand the issue, we feel like we can’t wait for it to be fixed “upstream”, so we added special code that would test for the doubled MIME-type string and trick WordPress into accepting the file otherwise. Exact patch notes, in the Changelog, are therefore:

  • Fixed an issue causing .docx files generated by Google Docs to fail validation prior to processing to external systems. This actually wasn’t “fixed,” but rather avoided, as the cause of the issue is in libmagic, the Unix/Linux file handler that PHP relies on. The fix runs an after-validation check on files that fail validation to detect the bugged Google Docs generated MS Office Open Office formatted files.

More Improvements for Salary Range

As we continue to see how you all use Salary Range in the wild, we have additional improvements to the feature.

  • Sites that do not have the PHP intl module will now fail gracefully and return an unformatted string instead of an error. The PHP intl module is recommended by WordPress and required for Matador to format a number like 105000 into something localized, like $105,000. Some users who were running PHP builds without intl module were getting errors during job sync.
  • Salary Range would fall back to the value of the salary field when the high and low were the same non-zero value. Some users, we learned, have begun to use the default salary field for internal uses only and thus we modified the behavior to use the value of the high salary field when high and low are the same.

Other Updates

There are several other smaller and less notable bug fixes and changes. Here are some worth mentioning:

  • Added compatibility with the Akismet anti-spam plugin, which was adding junk data to Matador Application submissions.
  • Added infrastructure for the rapid development of Developer Tools. Extension developers can explore these in /src/DeveloperTools/.
  • Registered Taxonomies will now display on sidebar menu. This may cause some admin areas to feel cluttered but 3rd party templating tools including Elementor would hide taxonomies that were not in menus.

Update Now!

Matador Jobs 3.8.7 is released for automatic* update to all subscribers as of Wednesday, March 8, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

* Please Note: if your current installed version is 3.8.4 or earlier, you need to manually install this update.

Matador Jobs 3.8.5 – Manual Update Required

Today Matador Jobs 3.8.5 is released to all our users. It fixes an unfortunate issue we identified this week that is impacting automatic updates, and requires our users to manually update Matador Jobs if they are on versions 3.8.1 to 3.8.4.

3.8.5 Changelog

This one is pretty short. This update continues a single change.

  • Fixed issue with Software Updater routine to restore automatic update checking to Matador Jobs Pro and all Matador Jobs Pro All-Access Extensions.

How to Manually Update

Manually updating Matador Jobs Pro is a pain, however, will unfortunately be required for this update. Here is how.

  1. Go to your MatadorJobs.com Account Page and log in. If necessary, you may need to recover your password. The account holder email is often the email of the initial purchaser, which could be a web development agency. You can email us for help recovering your account if you’ve forgotten your login information.
  2. Scroll down to “Your Downloads” and download the newest version ZIP file.
  3. Follow the steps on our Installation Guide to install the Matador Jobs Pro 3.8.5 Zip file.

We’re Sorry!

It goes without saying that the last thing we ever want to do is inconvenience you. This is a frustrating extra step we normally do not ask you to take. We take great care to avoid causing issues like this and can’t believe this one slipped through. We will thoroughly review how this occurred and add new checks to learn from this and prevent it in the future.

Update Now!

Matador Jobs 3.8.5 is released for automatic update to all subscribers as of today, Thursday, January 5, 2023. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

All-Access Extension Updates: December 21, 2022

Today, Matador Jobs released updates to three of our most popular All-Access Extensions: Advanced Applications, Import by Custom Meta, and Job Object Customizer. Let’s dig in.

Advanced Applications 1.3.1

This update addressed a newly found bug in our handling of date fields added to application forms. Notably, updates to the Bullhorn API that now require strictly typed fields were rejecting date inputs which were valid but being passed as string type fields instead of integer type fields. While few of our users will deploy custom or standard date fields, we will now handle those properly.

  • Fixed issue where date and time inputs were improperly being cast as strings and not integers in the post/put call to the Bullhorn API, which was causing a submission error.

Import by Custom Meta 1.2.3

This update doesn’t change the functionality of the extension, but rather leverages the additional data from the Bullhorn account as retrieved in its operation to extend additional information and detail to the Matador Jobs Lite/Pro 3.8.4 updates for Salary Range.

  • If this extension is present and has called to Bullhorn’s field layouts, the information from Bullhorn will enhance the options fields values in Matador Jobs 3.8.4’s new Salary Range High and Salary Range Low fields.

Job Object Customizer 1.1.2

This update doesn’t change the functionality of the extension, but like the change to Import by Custom Meta, will leverage the additional data from the Bullhorn account as retrieved in its operation to extend additional information and detail to the Matador Jobs Lite/Pro 3.8.4 updates for Salary Range.

  • If this extension is present and has called to Bullhorn’s field layouts, the information from Bullhorn will enhance the options fields values in Matador Jobs 3.8.4’s new Salary Range High and Salary Range Low fields.

Update Now!

These extensions updates are released for automatic update to all subscribers as of yesterday, Wednesday, December 21, 2022. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.

Matador Jobs 3.8.4 – Salary Range Support

Today Matador Jobs 3.8.4 is released to all our users. It primarily introduces new features to support Salary Ranges for users subject to new laws taking effect in the new year, but also includes several minor bug fixes.

Release Notes

While most “hotfix” release posts are often simply lists of changes, this one has a few items that need some detail and editorializing. Let’s dig in.

Salary Range Support

Matador Jobs 3.8.4, while a “hotfix” release that generally should not introduce new features, includes a wide range of support for “Salary Range”, as is required by new laws and regulations taking effect this year (or that have already taken effect). We wrote more about this in our blog post several weeks ago.

While we will list the change log below for the release, a complete how-to for these new features can be found on our new help doc on the topic. As this work was done with limited lead time, we may modify this behavior in the future, especially if we get feedback from users subject to the regulations that we may have missed the mark. Check out the Salary Range help doc page right away!

As a final update to the blog post on the topic, at this time, Bullhorn has not implemented default fields or UI for salary range, so our solution leveraged custom fields at this time. In the future, they may implement default fields for high and low salary ranges, and if so, we will adapt to and support that functionality.

Best Practice: Default to Common Bullhorn Workflows

This release contains a change that we’ve labeled as a bugfix but actually doesn’t fix a bug in our software, rather, prevents a failure when our users are doing something in their Bullhorn data that they shouldn’t.

Put simply, our users consistently surprise us with how easy it is, via the powerful field mappings tools at Bullhorn, to break their Matador import. While we’ve provided feedback to Bullhorn that some of the changes users are able to make shouldn’t be possible, they are.

This release fixes one of those things. It is possible that a user can manually set the value of the isPublic field, aka “Publishing Status” without going through the job publishing routine. The routine does more that just “publish” the job, it also sets the dateLastPublished timestamp, which Matador uses to determine whether to update or pass over an already imported job, as well as various “published” fields like the public job category and contact recruiter.

In the event you expose the isPublic field and manually set it, Matador will now continue to work, but not as intended. While preferred over the previous behavior of Matador not working at all, the best practice is to use the publishing workflow.

In general, for best results with not only Matador Jobs but all Bullhorn Marketplace Partners, consider using as standard of an implementation as you can.

  • Use default named fields instead of custom fields for common data when a default field exists, ie: don’t use customTextBlock1 for “description” when description and publicDescription exist.
  • Do not enable “use multiple values” settings in fields that shouldn’t accept multiple values. We’ve seen this commonly with jobs given multiple titles, which breaks the Matador Jobs importer.
  • Do not modify default workflows to avoid seemingly unnecessary steps, like the Job Publishing step, unless you know first the wider implications of that action.

While we do our best at Matador to make Matador work with all of your many implementations of Bullhorn, other Bullhorn Marketplace Partners may not be able to do this, and as a result, not only will customizations have an impact on Matador’s performance, but also make it so you can’t use other tools.

Best practice is: use as much default behavior as possible and leverage custom fields for custom data.

3.8.4 Changelog

New Features:

  • Support for importing and displaying a Salary or Pay Range. This is in response to upcoming laws and regulations in various jurisdictions that will require hiring agencies that meet certain qualifications to publish “pay ranges” for each position. A full help document will be written to explain how to use this feature, but the cliffs’ notes are:
    • New Settings Section “Salary Options” Under the Job Listings Tab
      • Formerly Job Structured Setting “Show ‘Pay Rate’ Data” was moved and renamed “Display Salary/Pay Rate”. This will now add a Salary Transparency string to the Job Information Bar under the title automatically.
      • New Settings “Salary Range Low Field” and “Salary Range High Field” allow users to select which fields, from a list of two default and 8 custom number fields, to use for the two parts.
    • A formatted text string of constructed salary parts, if available and setting is set to on, will be added to the default Job Info Bar if included in the front-end.
      • If the Job Info Bar is not included, users will need to leverage WordPress templating and/or Matador functions to include it in their layouts.
    • Salary Range or static Salary will be included in Structured Data, if available and setting is set to on.
    • When imported, the following existing or new post meta fields will be made on the job object if supporting data was found on the remote job record:
      • salary_currency: the value of the Bullhorn setting or a custom text field with the salary’s currency
      • salary, salary_low & salary_high: The raw number(s) from the imported data. salary_low can be 0 while salary and salary_high cannot be 0 and will be omitted and not set if 0.
      • salary_formatted, salary_low_formatted, salary_high_formatted: a localized formatted string of text containing the value with currency symbols and number/decimal separators. salary_formatted is formatted value of the Bullhorn salary field, unless it was blank and a high or low value was present, which would be used instead in that order.
      • salaryUnit: The text string that represents the unit, ie: Annually, Per Hour, etc.
      • salary_string: This is a string of text that dynamically combines the pieces we imported into a succinct summary of the salary or salary range, eg: “$100,000 USD per year” or $97,500 – $105,000 USD per year”, etc.
    • The following WordPress filters were added to customize the behavior of the above features:
      • matador_bullhorn_import_bullhorn_salary_currency_field will allow you to assign a custom text field to your job import that will designate the currency of the pay rate. This is optional, but helpful for users offering roles paid in separate currencies. Default is the value of the default currency in Bullhorn settings.
      • matador_bullhorn_import_salary_range_separator filter will allow you to change the characters or text that separate two numbers in a range. Default is an skinny dash, also known as an n-dash, or -.
      • matador_bullhorn_import_salary_unit_separator filter will allow you to change the characters or text that separate the last pay rate with the pay unit. Default is a single non-breaking space character. For example, the space between “USD” and “per year” in the string “$100,000 USD per year” can be changed to a slash character to result in “$100,000 USD/year”.
      • matador_bullhorn_import_salary_string filter will allow you to further customize the text string that makes up a salary statement. Default is the string we construct and it is passed an array of arguments with all the imported salary parts.
      • matador_structured_data_include_salary filter can be passed true or false to hide salary fields from the external structured data (used by Google, others to aggregate job data). It defaults to the settings option “Display Salary/Pay Rate”. If you are required by local law or regulation to show pay rate, Google may not present your jobs if this is not provided.
      • matador_template_job_info_show_pay filter can be passed true or false to show or hide the Salary/Salary Range text in the Job Info Bar. The Job Info Bar is getting a little crowded, we’ll admit, but it is the most consistent way we can include this by default without breaking users’ layouts. It defaults to the settings option “Display Salary/Pay Rate”.
  • Bullhorn’s newly implemented isWorkFromHome field will now be used to flag “Remote” or “Work From Home Jobs”. This will override legacy behavior based on the Bullhorn onSite field if found, otherwise we will default to the former behavior of matching certain values from the onSite field as we developed for users in summer 2020.
  • New “Information” form field was introduced to simplify passing instructions via settings fields and forms.

Bugfixes:

  • Fixed issue that could cause the job importer to crash if the user has modified their Bullhorn field mappings to expose and then manually set or manipulate the publishing status, resulting in some expected fields set as part of the Publishing Action to not be set.
  • Fixed an issue preventing the assumed behavior of the “Sync This Job” button to not work as intended. The intent of this function was that a manual per-job sync would always fully download and overwrite the job data, but it was honoring dateLastPublished/dateLastModified rules intended for only the bulk sync. The button will now work as expected.
  • Fixed issue introduced in 3.8.0 that impacted certain sites using Persistent Object Caching with Load Balancers. Not all systems were impacted, but certain configurations of some systems were, including the setup used on WPEngine hosting.
  • The 3.8.2 bugfix “when a certain of combination of settings were selected, the recommended value for careerPortalDomainRoot was incorrect” fixed only 3 of the 4 instances of that bug, and this release fixes the one we missed.

Update Now!

Matador Jobs 3.8.4 is released for automatic update to all subscribers as of today, Wednesday, December 21, 2022. If your subscription has expired, renew it on your account page. If you find any issues, please send a support request.