Directory / plugin
Vakanssi: Careers Page, Hiring & Applicant Tracking
v1.3.3 · by Vakanssi
A full applicant tracking system for WordPress: careers page, pipeline, interviews, hire. Self-hosted, with no per-seat fees.
About this plugin
Vakanssi is a complete applicant tracking system (ATS) for WordPress: branded job listings with Google-for-Jobs
structured data, a native application form, an applications inbox with a configurable drag-and-drop
pipeline board, templated emails, and tools for handling candidate data (export, erasure and
scheduled retention), all on your own server, with no per-seat SaaS fees.
A complete hiring workflow:
- Jobs & careers: a
vakanssi_jobpost type, a branded careers archive (at/jobs/by default, or on
your own careers page) and[vakanssi_jobs]shortcode, and valid Google-for-JobsJobPostingstructured data that is
withheld automatically when a job is not eligible (expired, no location, no apply path, …). - Application intake: a native application form with a secure CV upload (type-verified by magic
bytes, randomised filename, owner-only permissions), spam/honeypot/rate-limiting, and candidate
de-duplication by email. - Applications inbox & pipeline board: a sortable, filterable inbox plus a build-free React
Kanban board with a candidate profile drawer; configurable stages; bulk move/delete. - Interviews & calendar invites: schedule an interview from the candidate’s record and send a
real.icsinvite that Google, Outlook and Apple render as an actionable event, with no OAuth and
no connected account. Reschedule, cancel, and keep internal notes that reach your interviewers’
calendars and never the candidate’s. - Application data & export: export applications to CSV, print or save any application as a PDF, and edit application details, right from the inbox.
- Email: templated confirmation/recruiter/rejection/offer emails with personalization tags and
an SMTP-compatible sender, logged and de-duplicated. - Candidate data controls: consent capture, WordPress core data export/erase integration (with a
complete cascade across all candidate data), a retention-purge cron, and an audit log. These are
tools you operate; they do not by themselves make a site compliant with any particular law. - Blocks, page builders & themes: a Job Listings block for the block editor, native Elementor
widgets for the listing, the application form and the job details (Elementor Pro Theme Builder
archive/single templates are respected too), a Divi module, and shortcodes for everywhere else.
Block themes on WordPress 6.7 and later get editable Site Editor templates; classic themes get the
built-in archive. - First-run setup wizard: sender identity and a careers page in a few clicks, with optional
sample content and a prompt to post your first job. - Foundations: scale-ready custom tables (engineered for 10k+ applications), a modular
architecture (disabled modules load no code/assets), capability-based roles (Recruiter, Hiring
Manager, HR/Compliance), and avakanssi/v1REST API with per-route
permission checks.
External services
Vakanssi does not contact any external service on its own. Everything it stores stays on
your server. One optional integration talks to a third party, and only after you switch it
on and enter your own credentials:
Cloudflare Turnstile (optional spam protection for the public application form)
Turnstile is off by default. It activates only once you enter a Turnstile site key and
secret under Hiring Settings Application form. While it is enabled:
- each visitor’s browser loads the challenge script from
https://challenges.cloudflare.com/turnstile/v0/api.js; - when someone submits an application, the resulting challenge token, the visitor’s IP
address and your secret key are sent to
https://challenges.cloudflare.com/turnstile/v0/siteverify so Cloudflare can confirm the
submission is not automated; - when an administrator uses “Test these keys” on the settings screen, that admin’s browser
loads the same challenge script, and the resulting token, the admin’s IP address and the
secret key being tested are sent to the same address, so the key pair can be checked
without waiting for a real application.
No application content (no name, email, CV, or answers) is sent to Cloudflare. Turning the
setting off stops all contact with the service.
Service: https://www.cloudflare.com/products/turnstile/
Terms of service: https://www.cloudflare.com/terms/
Privacy policy: https://www.cloudflare.com/privacypolicy/