Performance & scale
How Vakanssi stays fast at thousands of applications, why it adds almost nothing to your public pages, and what it runs quietly in the background.
On this page(5)
Vakanssi runs inside your own WordPress site, so a fair question is whether hiring data will slow that site down. The short answer is no. This page explains why, in plain terms, and points out the one or two things worth keeping an eye on as you grow.
Applications live in their own database tables
WordPress normally stores content as “posts” (the same kind of record as a page or a blog entry). Vakanssi does that for job listings, because there are only ever a handful of them. But applications and candidates are different: a busy site can gather thousands, and each one has a stage, a status, notes, and dates you filter and sort by.
So Vakanssi keeps applications and candidates in its own database tables, separate from the general WordPress content, and adds indexes (think of the index at the back of a book: a way to jump straight to what you need instead of reading every page).
That is what keeps the Applications screen quick as you grow. The plugin’s own measurements put it comfortably fast up to roughly 10,000 to 50,000 applications; above that it keeps working but slows down (at 100,000 applications the default inbox took about 0.6 seconds and the dashboard about 1.1 seconds). You never have to configure any of this. It is simply how the plugin is built.
Features you turn off cost nothing
Vakanssi is modular: each feature area is a separate module you can switch on or off under Hiring, then Tools, then Features. A module that is off is not just hidden, it is never loaded. It runs no code, adds no admin screens, and loads no scripts or styles on your site.
The free plugin goes further: it does not contain the Pro modules’ code at all, and it does not create their database tables. In practice, you only ever pay for the parts you use.
Almost nothing loads on your public site
Vakanssi is deliberately light on the pages your visitors see:
- On any page that shows a job, it loads one small stylesheet (plus a few inline lines that apply your brand accent colour).
- Wherever the careers listing or the apply form appears, it adds one small script. On the listing it powers the filter and sort toolbar, so visitors can narrow the list without reloading; on the form it stops a double submit. Both work without it.
- If you switch on an anti-spam challenge such as Cloudflare Turnstile, the provider’s own script loads with the form.
- A visitor who never opens your careers pages downloads nothing extra from Vakanssi.
For your own styling, use WordPress’s Appearance, then Customize, then Additional CSS, which adds no extra request (Vakanssi’s own Custom CSS box was removed in v0.36.0). You can also switch the plugin’s stylesheet off entirely and style the careers pages from your theme. See Your careers page.
Quiet background jobs
A few things happen on a schedule rather than while someone waits. Vakanssi uses WordPress cron, WordPress’s built-in scheduler, to run them:
- The daily retention purge anonymises applications that have passed their data-retention deadline, part of the privacy tooling. See Privacy.
- The daily job expiry sweep, shortly after midnight, clears the cached pages of jobs whose closing date has passed, so a caching plugin stops serving them as open.
- With Integrations Pro feature, requires a Vakanssi Pro license turned on, background webhook retries re-send any event delivery that failed the first time, so a third-party service being briefly offline does not lose the message. This one runs every five minutes rather than daily, so a retry is quick.
- Also with Integrations Pro feature, requires a Vakanssi Pro license, a daily delivery-log cleanup trims old webhook delivery records, so the log stays a useful recent history rather than growing forever.
These run on their own and need no attention. Because WordPress cron piggybacks on normal site traffic, a very low-traffic site may see scheduled jobs run a little late, which is normal WordPress behaviour and not specific to Vakanssi. See Going live: production setup for how to trigger cron on a real schedule instead, so the retention purge never slips.
What to keep an eye on as you grow
The plugin itself scales quietly, so the two things worth a moment of your attention are the same ones that matter for any WordPress site that sends email and stores files:
Send email through a real mail service
Vakanssi sends candidate emails through WordPress’s standard mail function. On a busy site, a server’s default unauthenticated mail often lands in spam. An SMTP or transactional-mail plugin fixes this for every email your site sends, Vakanssi’s included. See Email delivery.
Include CV storage in your backups
Uploaded CVs are stored in a protected folder inside your uploads directory by default, which a backup that copies the database and the uploads folder already covers. If you moved storage outside the web root with VAKANSSI_STORAGE_DIR, check that your backups include that custom path too. See Backups & your data.
Vakanssi requires PHP 7.4 or newer and WordPress 6.6 or newer (since v0.37.11, was 6.4), and will not start below those versions. On a busy site, running a current PHP version is the single easiest speed win, because recent releases are faster across the board.