A job board that fills itself.
Most job importers hand you a CSV or an RSS feed and leave the hard parts to you. The Jobo plugin is built around the two things that actually keep a board healthy: each sync resumes from a stored cursor instead of re-scanning from the top, and jobs retire themselves when they disappear from the employer's careers page. That second half is the one nobody else does — and checking for closed jobs never costs credits.
What it does
Works with your existing theme
Writes the same job_listing fields WP Job Manager's templates already read, so imported jobs render through your theme with no configuration. No WP Job Manager? The plugin registers its own job post type.
Incremental sync
Each run resumes from a stored cursor, so syncs stay fast as the board grows and you are not billed repeatedly for jobs you already have.
Listings close themselves
Jobo tracks when a role disappears from the employer's careers page and tells your site, so you stop advertising jobs that were filled weeks ago. This check is free on every plan.
Filter what you import
By location, ATS source, work model, employment type and experience level — so a niche board stays niche, and your bill stays proportional.
Edits are respected
Updates never change the status of a listing. Unpublish something by hand and it stays unpublished; the content still refreshes from the source.
Cost stays visible
Credit balance and sync history sit in the admin screen, updated after every run.
Setting it up
Install the plugin
Search for “Jobo Jobs” in Plugins → Add New, then activate it.
Add your API key
Go to Settings → Jobo Jobs and paste your key. Create one at enterprise.jobo.world/api-keys — it takes about a minute.
Choose which jobs to import
Set locations, sources and filters. Leave them blank to import everything, though a narrower filter keeps the board relevant and the cost down. Locations take one per line: “Country”, “Region, Country”, or “City, Region, Country”.
Germany Bavaria, Germany Berlin, Berlin, GermanySync
Click Sync now, or wait for the scheduled run. Pick hourly, twice daily or daily to match how fast your niche moves.
Things that trip people up
- Nothing imports and the admin shows a payment error
- The balance check prices the whole requested batch before the request runs, so it can fail even when the balance looks non-zero. Top up, or lower “Jobs per request”.
- The sync stops part-way through a large import
- Each run is bounded by “Jobs per request” × “Requests per run” and a time budget, so it does not exhaust PHP's execution limit. The cursor is saved, so the next run resumes exactly where it stopped.
- Imported jobs have no job type
- WP Job Manager only registers the job type taxonomy when job types are enabled in its settings. Turn them on and re-sync. Types with no matching term — Contract, for instance, which is not a WP Job Manager default — are created rather than dropped.
- A job was filled but is still showing
- Expiry runs on the same schedule as import. Set “When a job closes” to draft or trash; leaving it published is a deliberate option, not the default.
Getting the most out of it
- Start with a narrow filter and widen it. You are billed per job delivered, so breadth is what drives cost.
- Import as draft on the first run if you want to review the content before it goes live.
- Use a Jobs Feed plan if you are importing continuously — feed jobs are included rather than metered per job.
- Leave expiry on. A board full of filled roles loses trust faster than a board with fewer listings.
- Hourly is enough for almost every niche. More frequent syncing costs the same but delivers no benefit.