JOIN
HRConnect AI agents to JOIN, the European job multiposting and applicant tracking platform. Agents create jobs, manage applications, tag candidates, and add notes so hiring pipelines stay organized across every job board.
What This Integration Enables
JOIN is a European recruiting platform whose defining feature is multiposting: one ad, syndicated to the connected job boards. That feature is also the thing that shapes every automation decision you will make here, because of a design choice stated plainly in the connector. Newly created jobs are set active automatically and multiposted. There is no draft. Create Job is a publish.
FlowRunner agents work across four object types. On jobs they create an ad from a title, an HTML description, and the category, employment type, and office identifiers, with optional salary, contact, workplace type, and document requirements. They list jobs with filtering by status, title, country, external ID, and creation date, read a single job with or without its full content, and set a job Online, Offline, or Archived. On applications they list with candidate, job, source, and pipeline stage details, filtered by job, hiring state, and stage type. They create an application for a candidate on a job with base64 attachments and a sourcing channel, read one by ID including screening answers and consent status, and delete one permanently. On candidates they list with fuzzy search across email and name, read one including tags, professional links, consent status, and their applications, replace the full tag list, add a note attributed to the API token owner, and list existing notes. On offices they list with country and city filtering and create new ones.
Two of those deserve flagging before you build. Update Candidate Tags replaces every tag on the candidate with the list you send, so a flow adding one tag must send all the tags that should remain or it silently removes the rest. Delete Application is permanent. And on the connection itself: the API token grants read, modify, and delete access to your account data, and JOIN's own guidance is that tokens can be revoked but not regenerated, so rotation means creating a new one. Combining a publish on create job API with a token that broad is exactly the situation Orchestration as a Service exists to govern. The agent should do all of the assembly and none of the committing.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Requisition to Live Ad, With the Review Before the Post
An approved requisition arrives with a role, a budget, a location, and a hiring manager. The agent drafts the ad from the requisition and the company's template, resolves the category, employment type, and office identifiers, and validates the parts JOIN is strict about: the description must be HTML, and salary is saved only when both currency and frequency are supplied. It runs List Jobs filtered to that office and title to be sure the role is not already online. Then it stops and shows the recruiter the finished ad in Slack, rendered as it will appear. On approval, Create Job runs once and the ad goes to every connected board. The recruiter's review moved from after publication to before it, which is the only place it can matter when creation and publication are the same call.
Applications From a Careers Page, Deduplicated
Not every application arrives through a job board. The agent receives submissions from the company careers form and checks List Candidates with a fuzzy search on the applicant's email and name to see whether they already exist. It then runs Create Application against the target job, attaching the CV and cover letter as base64 documents and recording the sourcing channel so attribution survives. If the search returns a likely existing candidate, the agent creates the application against that person rather than a duplicate, and adds a Create Candidate Note recording that this is a repeat application and which role it followed. Sourcing data stays honest because the channel is recorded at creation rather than reconstructed later.
Pipeline Reporting Without a Weekly Screenshot
Every Monday the agent runs List Applications with Hiring State set to ACTIVE, combined with a stage type filter, to produce the count at each stage per job, and joins it to the open roles from List Jobs. The result is written to the hiring workbook in Google Sheets with the previous week alongside for comparison. Roles with no movement in two weeks are flagged to the recruiter with the candidate counts by stage, so the conversation with the hiring manager starts from a number rather than an impression. Reading the pipeline is a genuine read only operation, which is why it is the part of this connector that can run unattended.
Human-in-Loop Highlight
Most job APIs give you a draft to approve. JOIN does not, and pretending otherwise is how an unfinished ad ends up on ten job boards under your employer brand. Newly created jobs are set active automatically and multiposted, and while Update Job Status can take a job Offline or Archived afterward, that removes the ad, it does not unsee it. So the gate moves one step earlier than usual: it lands before Create Job rather than after it. The agent assembles everything, renders the ad exactly as it will publish, and asks: "Senior Frontend Engineer, Berlin office, permanent, 70k to 85k EUR annual. This will go live on all connected boards immediately. No equivalent job is currently online for this office. Publish, edit the description, or hold?" The recruiter answers, and Create Job runs only on approval. Update Candidate Tags gets the same treatment for the same reason in reverse: it replaces the entire tag list, so a flow that intends to add one tag can quietly erase a sourcing history nobody noticed was being kept. When a connector has no draft state, the human-in-the-loop step has to sit in front of the call, and the agent's job is to make that one decision as easy as possible to make well.
Agent Capabilities
15 actionsJobs
4- Create Job Create a job from a title, an HTML description, and category, employment type, and office identifiers, with optional salary, contact, workplace type, and document requirements. New jobs are set active automatically and multiposted to the connected boards, so this call publishes.
- List Jobs Return a paginated list of jobs, online only by default, with filtering by status, title, country, external ID, and creation date, plus sorting. Set Include Full Content to also return descriptions, salary, contact, and configuration.
- Get Job Return a single job by numeric identifier, optionally including the HTML description, salary, contact, screening questions, and configuration fields.
- Update Job Status Set a job Online, Offline, or Archived. Online publishes and multiposts it, Offline unpublishes it, and Archived removes it from the job boards.
Applications
4- List Applications Return a paginated list of applications with candidate, job, source, and pipeline stage details. Filter by job, hiring state, and stage type, for example ACTIVE plus Interview for qualified candidates in interviews.
- Create Application Create an application for a candidate on a job, creating the candidate if they do not already exist. Supports base64 encoded documents and a sourcing channel.
- Get Application Return a single application including candidate details, job, source, attachments, screening question answers, consent status, and pipeline stage.
- Delete Application Permanently delete an application. This cannot be undone.
Candidates
5- List Candidates Return a paginated list of candidates with fuzzy search across email, first name, and last name, plus creation date filtering and an option to embed notes.
- Get Candidate Return a single candidate including contact details, tags, professional links, consent status, and their applications, optionally with notes and replies.
- Update Candidate Tags Replace all tags on a candidate with the list provided. The supplied tags fully overwrite the existing ones, so include every tag that should remain.
- Create Candidate Note Add a note to a candidate. The note is attributed to the API token owner and appears on the candidate profile in JOIN.
- List Candidate Notes Return a paginated list of a candidate's notes with author email, content, timestamps, and visibility.
Offices
2- List Offices Return a paginated list of offices with name, address, country, and default flag, filterable by country code or partial city name.
- Create Office Create an office from a city and an ISO 3166-1 alpha-2 country code, with optional name, street address, postal code, and default flag.
Frequently Asked Questions
What can FlowRunner do with JOIN?
FlowRunner agents can run Create Job, List Jobs, and Get Job in JOIN, plus 12 more actions.
Does connecting JOIN to FlowRunner require OAuth?
No. JOIN connects to FlowRunner with an API key, no OAuth flow required.
Can JOIN trigger a FlowRunner workflow automatically?
JOIN doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with JOIN
$100 in credits. No card required. Connect in minutes.