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_job post type, a branded careers archive (at /jobs/ by default, or on
    your own careers page) and [vakanssi_jobs] shortcode, and valid Google-for-Jobs JobPosting structured 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 .ics invite 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 a vakanssi/v1 REST 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/

Plugin tags