HR en recruitment

Een vervulde vacature blijft weken op je vacaturepagina staan, omdat twee systemen zich allebei de vacaturepagina noemen

Een vacature wordt dinsdag vervuld. Hij verdwijnt binnen seconden van de eigen gehoste vacaturepagina van Recruitee — dat deel werkt prima. Hij blijft nog drie weken staan op de echte website van het bedrijf, omdat iemand eraan moet denken hem een tweede keer te verwijderen, op een pagina die er totaal anders uitziet dan die Recruitee genereerde en die nooit heeft geweten dat de vacature bestond.

De meeste bedrijven die Recruitee gebruiken, sinds de overname in 2024 Tellent, willen geen kandidaten op jobs.recruitee.com. Ze willen hun eigen vacaturepagina, in hun eigen ontwerp, op hun eigen domein — en die goed bouwen betekent dat de vacaturedata moet verhuizen, niet gekopieerd en geplakt worden.

  • REST API met personal API tokens, plus webhooks
  • Vacatures eruit, sollicitaties er weer in
  • Vanaf € 1.700 plus servicekosten
De tool

Wat Recruitee/Tellent is, en waarom de vacaturepagina het echte project is

Recruitee is een applicant tracking system: vacaturebeheer, een pijplijn per functie met fases die je zelf inricht, kandidaatprofielen, interviewplanning, en een gehoste vacaturesite die automatisch wordt gegenereerd uit wat er openstaat. In 2024 werd het bedrijf overgenomen door Tellent en wordt het product onder die naam hernoemd, al zijn het onderliggende platform, de API en het grootste deel van de interface die mensen al kennen ongewijzigd overgenomen — een bedrijf dat vandaag Recruitee draait en morgen Tellent draait, draait vrijwel zeker hetzelfde ding.

De API is een gedocumenteerde REST-interface geauthenticeerd met een personal API token, en dekt offers (vacatures), kandidaten en hun pijplijnfase, plus webhooks die afgaan op de events die ertoe doen — een nieuwe sollicitatie, een fasewijziging, een vacature die wordt gesloten. Dat laatste is wat een écht live vacaturepagina mogelijk maakt in plaats van een pagina die eens per dag ververst en hoopt.

De use case waar we het meest voor bouwen is precies de bovenstaande: een klant wil zijn eigen merk niet zien verdwijnen achter een generieke gehoste vacaturepagina, dus worden de vacatures binnengehaald in de echte website, gestyled zoals de rest ervan, en gaan sollicitaties terug naar Recruitee/Tellent als kandidaat zodat recruiters de tool blijven gebruiken die ze al kennen. De ATS blijft de ATS; alleen de voordeur ziet er niet meer uit als andermans product.

Wat er misgaat

Drie dingen die misgaan tussen een vacaturepagina en Recruitee/Tellent

Geen bedachte gevallen. Dit zijn de drie die we bijna elke keer vinden als een bedrijf een eigen vacaturepagina heeft gebouwd naast Recruitee zonder een echte koppeling ertussen.

De vacaturepagina is een museum

Een vacature wordt in Recruitee gesloten zodra de aanbiedingsbrief is verstuurd, en blijft weken open op de eigen website van het bedrijf, omdat iemand het besluit "gesloten" met de hand moet doorzetten naar een pagina die helemaal niet met de ATS praat. Een kandidaat solliciteert op een functie die niet meer bestaat en krijgt twee weken later een ongemakkelijke afwijzing in plaats van hem nooit te zien.

Wat je in plaats daarvan ziet

Een webhook op het event "vacature gesloten" haalt de vacature binnen enkele minuten van de website, en een nieuwe die in Recruitee wordt geopend verschijnt net zo snel op de site met de juiste titel, locatie en uren.

De vacature is onzichtbaar voor Google for Jobs

Een op maat gebouwde vacaturepagina die alleen vacaturetekst toont, zonder de structured data die Google vereist, verschijnt nooit in de vacaturecarrousel bovenaan de zoekresultaten — gratis, hoog-intentioneel verkeer waar een betaalde vacaturebank-plaatsing anders voor zou moeten betalen. De meeste bedrijven die een eigen vacaturepagina bouwen beseffen niet dat dit de ruil is die ze maakten.

Wat je in plaats daarvan ziet

Elke vacature die uit Recruitee/Tellent wordt gehaald rendert met de JobPosting structured data die Google for Jobs vereist, gegenereerd uit dezelfde velden — titel, locatie, salarisindicatie indien opgegeven, sluitingsdatum — zodat hij verschijnt zonder een tweede contentsysteem om te onderhouden.

Een gebrandmerkt sollicitatieformulier bereikt de recruiter nooit

Een bedrijf bouwt zijn eigen, mooiere sollicitatieformulier omdat dat van Recruitee niet bij het ontwerp van de site past, en het formulier mailt het cv gewoon naar HR in plaats van een kandidaat aan te maken. De recruiter checkt nu twee plekken — Recruitee voor alles dat via de oude route kwam, een inbox voor alles dat via de nieuwe kwam — en een te laat doorgestuurd cv is een kandidaat die al ergens anders is aangenomen.

Wat je in plaats daarvan ziet

Het gebrandmerkte formulier post via de API als nieuwe kandidaat op de juiste vacature, cv erbij, en landt in dezelfde pijplijn als elke andere sollicitatie. Eén plek om te checken, welk formulier de kandidaat ook gebruikte.

De rekening van het handwerk

Wat een vacaturepagina die niet met Recruitee/Tellent praat kost

De zichtbare kost is klein en repetitief: iemand opent het CMS van de website elke keer dat een vacature opent of sluit en past het daar ook aan, misschien vijftien minuten per functie. Bij een bedrijf met 25 openstaande functies per jaar is dat ruwweg zes uur per jaar — niet het punt.

Het punt is wat die vertraging aan sollicitaties kost. Een gesloten vacature die live blijft trekt sollicitaties aan die je niet kunt gebruiken en moet afwijzen, elk een kleine deuk in hoe een kandidaat je bedrijf onthoudt. Een vacature die twee weken na openen nog steeds ontbreekt in Google for Jobs is twee weken gratis zoekverkeer dat naar de vacature van een concurrent ging in plaats van naar de jouwe, op een kanaal dat kandidaten steeds vaker gebruiken voordat ze ook maar één vacaturebank bezoeken.

Wat we bouwen

Wij bouwen ook het ding aan de andere kant

Bij Recruitee/Tellent is de koppeling bijna nooit de hele klus: wat een klant echt wil is een vacaturepagina die eruitziet als de rest van zijn site en die goed presteert in zoekmachines, en de API-feed is wat dat mogelijk maakt zonder een tweede contentsysteem.

Een koppeling heeft twee kanten. Er zijn genoeg bureaus die de API-call voor je bouwen en je een JSON-payload overhandigen; dat is de makkelijke helft. De moeilijke helft is waar die data in landt — een website, een webshop, een portaal waar je klanten op inloggen, een intern hulpmiddel dat een spreadsheet vervangt. JKC bouwt beide kanten, en daarom blijven de koppelingen die wij bouwen meestal werken: aan de ontvangende kant is voor ons niets een zwarte doos.

API-koppelingen

De koppeling zelf: authenticatie, veldmapping, rate limits, retries en een wachtrij die overleeft dat het andere systeem een uur uit de lucht is. Gebouwd op de gedocumenteerde API als die er is, en op wat de leverancier werkelijk aanbiedt als die er niet is.

Websites

WordPress-sites die uit je systemen lezen in plaats van ze met de hand na te typen: een vacaturepagina die uit je HR-systeem komt, een teampagina die je salarisadministratie volgt, prijzen en beschikbaarheid die de echte zijn.

Webshops

WooCommerce-shops waarin de order de laatste keer is dat iemand hem intypt: hij wordt een factuur in je boekhoudpakket, een label bij je vervoerder, een voorraadmutatie in je warehouse en een regel in je CRM, uit zichzelf.

Webapplicaties

Als het proces in geen enkel standaardproduct past: een klantportaal, een offertetool, een planbord, een dashboard dat drie systemen tegelijk uitleest. Gebouwd op jouw data, met jouw systemen als bron in plaats van een kopie ervan.

Wat er gekoppeld kan worden

Wat er tussen Recruitee/Tellent en je website gekoppeld kan worden

Gebouwd op de REST API met een personal API token, en webhooks voor de events waarop je meteen wil reageren in plaats van erop te pollen.

  • Openstaande vacatures, met de volledige tekst (uit het gereedschap)

    Titel, afdeling, locatie, uren en de volledige omschrijving naar je eigen vacaturepagina, gestyled zoals de rest van de site in plaats van het gehoste sjabloon van de leverancier.

  • Sollicitaties als kandidaat, cv erbij (in de tool)

    Of nu ingediend via een gebrandmerkt formulier op de site of een simpele insluiting, elke sollicitatie landt in de juiste pijplijn met cv en motivatiebrief erbij, zodat recruiters nooit een tweede inbox hoeven te checken.

  • Structured data voor Google for Jobs (uit het gereedschap)

    JobPosting-schema gegenereerd uit dezelfde velden als de vacature zelf, zodat een vacature in aanmerking komt voor de jobs-carrousel zonder een tweede plek om hem actueel te houden.

  • Pijplijnfase, voor een kandidaatstatuspagina (beide kanten)

    Een kandidaat die checkt waar zijn sollicitatie staat, gelezen uit de echte pijplijnfase in Recruitee/Tellent in plaats van te moeten gissen na een week stilte.

  • Verwijzingsbron, getagd op de kandidaat (in de tool)

    Van welke pagina, campagne of medewerkersverwijzing een sollicitatie kwam, getagd als kandidaatveld zodat recruitmentmarketing kan zien wat echt werkt, niet alleen hoeveel sollicitaties er binnenkwamen.

Een eerste project is bijna altijd de vacaturefeed en het sollicitatieformulier samen — de twee helften van een werkende vacaturepagina. De statuspagina en verwijzingstagging komen meestal later, zodra de basis een tijdje schoon heeft gedraaid.

Hoe het werkt

Hoe een koppeling bij JKC gebouwd wordt

Elke keer dezelfde vier stappen, om welke tool het ook gaat. Niets hiervan is een workshop waar je voor betaalt: stap één bestaat omdat een koppeling verkeerd afbakenen het duurste is wat er met zo'n koppeling kan gebeuren.

  1. 1. We kijken wat er nu écht wordt overgetypt

    Niet "welke velden bestaan er" maar "welke velden verplaatst iemand nu met de hand, hoe vaak, en wat gaat er stuk als het misgaat". De meeste projecten blijken twee of drie stromen nodig te hebben, geen volledige tweerichtingssync van alles. Dat gesprek is wat de offerte laag houdt.

  2. 2. We kiezen de route, en zeggen waarom

    Een onderhouden connector van de leverancier, een platform als Make of Zapier, of een maatwerkkoppeling op de API. Goedkoopste eerst, niet maatwerk eerst: als een ondersteunde plugin precies doet wat je nodig hebt, dan is dat het antwoord en zeggen we dat ook. Maatwerk is voor de gevallen waarin de kant-en-klare optie zoveel configuratie vraagt dat hij juist het fragiele onderdeel wordt.

  3. 3. We bouwen hem zo dat hij het andere systeem overleeft

    Elke koppeling krijgt retries, een wachtrij en een idempotency-sleutel mee, zodat een order die binnenkomt terwijl de andere kant eruit ligt later wordt afgeleverd in plaats van verdwijnt, en een retry geen tweede factuur aanmaakt. Eerst op een testomgeving waar de leverancier die aanbiedt, zodat het eerste wat je echte administratie ziet een werkende koppeling is.

  4. 4. We dragen hem over met de faalgevallen opgeschreven

    Welke meldingen je krijgt, wat elke melding betekent, wat je eraan doet en wie je belt. Plus de inloggegevens op jouw naam, in jouw eigen kluis — niet in de onze. Een koppeling die niemand behalve wij kan onderhouden is een koppeling die niet van jou is.

Nadat hij live is

Een koppeling die stil faalt is erger dan geen koppeling

Dit is het deel dat in de meeste offertes ontbreekt. Een koppeling die stopt met werken zonder dat iemand het merkt is erger dan handwerk, want bij handwerk merkt iemand het tenminste als het niet gedaan is. Elke koppeling die JKC bouwt wordt gemonitord, en die monitoring is geen bijverkoop — die zit in de servicekosten.

Een melding per mislukt bericht, geen maandrapport

Een bericht dat niet doorkomt geeft binnen het uur een melding, met de regel waar het over ging. Geen dashboard dat je moet onthouden om te bekijken.

Opnieuw versturen, niet opnieuw invoeren

Wat mislukt is blijft in een wachtrij staan en kan opnieuw verstuurd worden zodra de oorzaak weg is, in de juiste volgorde. Niemand hoeft gisteren door te spitten op zoek naar de vier orders die niet zijn aangekomen.

Wij volgen de wijzigingen van de leverancier, zodat jij dat niet hoeft

API's krijgen nieuwe versies, worden uitgefaseerd en gaan op rate limits. Kondigt een leverancier een wijziging aan die jouw koppeling raakt, dan is meebewegen onderdeel van de servicekosten en geen nieuw project.

Wat het kost

Vanaf € 1.700, en de grootste variabele is wie de andere kant heeft gebouwd

Specifiek voor Recruitee/Tellent: omdat het echte eindproduct meestal de vacaturepagina zelf is, wordt dit vaker afgebakend en geoffreerd als een klein websiteproject met een koppeling erin, dan als een koppeling met een paginaatje eraan vast — de verdeling van de kosten tussen de twee volgt uit hoe de pagina er echt uit moet zien.

Een koppeling begint vanaf € 1.700 plus maandelijkse servicekosten, waar de monitoring, de wachtrij en het bijhouden van API-wijzigingen van de leverancier in zitten. Werk buiten een vaste scope is € 95 per uur.

Wat het bedrag beweegt is niet de tool — het is hoe goed het systeem aan de andere kant bekend is. Heeft JKC je website, je webshop of je webapplicatie gebouwd, dan kennen we het datamodel, de uitzonderingen en waar de voorraadaantallen echt vandaan komen, en is een koppeling erin vooral configureren en testen. Is het een systeem dat we nooit hebben opengeslagen, dan beginnen we met een korte technische check aan beide kanten en offreren we daarna, zodat je niet op uurbasis betaalt voor ons uitzoekwerk.

Twee dingen die het bedrag verder bewegen, in onze ervaring meer dan al het andere: of de tool een echte API heeft of alleen een CSV-export, en of de sync twee kanten op moet. Eenrichting is ruwweg de helft van het werk van tweerichting, want tweerichting betekent per veld beslissen welk systeem wint als ze het oneens zijn — en die beslissing is het dure deel, niet de code.

Vragen

Veelgestelde vragen over Tellent (Recruitee) koppelen

In de praktijk wel. Tellent heeft Recruitee in 2024 overgenomen en herbenoemt het product onder zijn eigen naam, maar het onderliggende platform, de API en het account waarop je al inlogt zijn tot nu toe ongewijzigd overgenomen. Ben je begonnen als Recruitee, dan draai je vrijwel zeker hetzelfde systeem dat nu Tellent heet.

We bouwen op het API-eindpunt en de inloggegevens die je account nu daadwerkelijk gebruikt, en werken de koppeling bij als de herbenoeming ooit iets technisch verandert — wat tot nu toe niet is gebeurd.

Gratis, 10 minuten

Geen idee waar de handmatige uren echt naartoe gaan?

Daar is de Groeicheck voor. Tien minuten, zonder verkoopgesprek eraan vast: je krijgt terug waar het dubbele werk zit, welke koppeling zich als eerste terugverdient, en welke eerlijk gezegd niet.