Skip to content
Uncategorized

AFAS GetConnector vacatures cachen in WordPress (werkenbij zonder live-API-risico)

October 16, 2026

Veel Nederlandse organisaties publiceren vacatures vanuit AFAS Profit en willen een WordPress werkenbij-site die “gewoon meeloopt”. De standaardreflex is: een GetConnector aanroepen en de response in de template dumpen. Dat werkt in een demo. Onder SEO-crawlers, campagnepieken en traagheid aan de AFAS-kant wordt het een performance- en stabiliteitsprobleem. De volwassen aanpak is een AFAS GetConnector vacatures-cache in WordPress: periodiek of event-gedreven inlezen, lokaal opslaan, publiek serveren, en sollicitaties gecontroleerd terugschrijven.

HostHob bouwt die laag voor HR- en recruitmentteams. Breedere werkenbij-context: AFAS WordPress vacatures & werkenbij-koppeling. ERP-winkelkant (niet recruitment): WooCommerce Exact Online of AFAS koppeling.

Wat een GetConnector wel en niet is

Een GetConnector in AFAS is een geconfigureerde uitleesdefinitie: velden, filters, soms joins over Profit-tabellen. Perfect om vacaturekaarten, vestigingen, of publicatieflags op te halen. Het is geen CDN, geen paginacache, en geen garantie op sub-100ms responses. Elke live call vanaf WordPress deelt rate limits, token lifetime, en AFAS-onderhoudsvensters met je andere integraties.

Typische fouten die we tegenkomen:

  • Template doet een GetConnector-call per pageview — inclusief category archives en zoekresultaten.
  • Geen lokale slug of canonical; URLs breken wanneer AFAS-ID’s herschikt worden.
  • HTML uit AFAS wordt ongestript gerenderd (XSS-risico + opmaakchaos).
  • Sollicitatieformulier post naar e-mail terwijl AFAS als bron van waarheid voor kandidaten bedoeld is.
  • “Cache” als transient van 60 seconden zonder warming — precies lang genoeg om te denken dat het werkt, te kort voor crawlers.

Doelarchitectuur

  1. Ingest — cron of queue-job haalt GetConnector(s) op met service-account / token refresh.
  2. Normalize — map naar een WordPress CPT of custom tables: titel, vestiging, uren, salarisband, publicatie tot, AFAS-ID.
  3. Cache & serve — front-end leest alleen WordPress; object cache optioneel; geen AFAS in request path.
  4. Invalidate — TTL + handmatige “nu verversen” in wp-admin; optioneel webhook/trigger als jullie landschap dat toelaat.
  5. Apply writeback — sollicitatie enqueue’en naar AFAS (UpdateConnector / SOAP / REST afhankelijk van jullie Profit-inrichting), met retries.

Dit lijkt op hoe we partner- en recruitmentportals betrouwbaar houden in onze recruitment portal build: publieke site snel, back-office sync asynchroon.

Welke velden je wél moet mappen (workshop)

Voor code tekenen we een veldkaart. Minimaal:

  • Stabiele sleutel: AFAS vacature-ID of externe referentie — nooit alleen de titel.
  • Publicatievenster: vanaf/tot, intern vs extern zichtbaar.
  • Locatie en contractvorm voor filters op de werkenbij-site.
  • SEO-velden: slug, meta description, of een veilige afleiding daarvan.
  • Sollicitatie-eisen: verplichte documenten, privacytekst-versie, consent timestamp.

HR ontdekt hier vaak dat “vacature” in AFAS drie objecten zijn (aanvraag, publicatie, wervingstekst). WordPress moet één publieke kaart tonen; de mapping moet die complexiteit verbergen zonder data te verzinnen.

Cachebeleid dat SEO én recruiters respecteert

Recruiters willen “live”. SEO wil stabiele URLs en snelle TTFB. Wij zetten defaults: full sync elke 15–60 minuten buiten kantoorpiek, snellere sync voor “urgent” flags, en een admin-knop voor spoedpublicaties. Verwijderde of verlopen vacatures krijgen een 301/410-beleid dat vooraf is afgesproken — geen stille 404-storm na een AFAS-opschoningsactie.

Voor meertalige sites (NL/EN) koppelen we taal aan aparte publicatievelden of aparte connectors, niet aan een Google Translate-plugin over AFAS-HTML.

Sollicitaties terug naar AFAS

Alleen lezen is half werk. Sollicitaties moeten in Profit landen met bron, vacaturekoppeling, en consent. We vermijden synchrone AFAS-calls in het form submit-pad: opslaan in WordPress, queue, bevestigingsmail vanuit betrouwbare mailinfra, daarna AFAS-write met logging. Faalt AFAS, dan ziet recruitment de wachtrij — niet een “bedankt”-pagina met een verdwenen kandidaat.

Zelfde faalmodus als bij CRM-forms: addons die stilzwijgend droppen. Oplossing is queue + zichtbaarheid, niet “nog een plugin”.

Security en privacy

  • Tokens niet in de theme; rotatie gedocumenteerd.
  • GetConnector-filters server-side: nooit alle HR-velden publiek cachen “omdat het kan”.
  • CV’s en bijlagen in beveiligde storage met retentie; niet in een publieke uploads-map.
  • DSAR-pad: wat staat in WordPress vs wat staat in AFAS.

Delivery checklist

  1. GetConnector-definitie bevroren voor v1; wijzigingsproces met AFAS-beheerder.
  2. CPT/velden + slugstrategie + archieffilters.
  3. Sync-job met monitoring (laatste succes, aantal records, foutmail).
  4. UAT: nieuwe vacature, update tekst, unpublish, dubbele sollicitatie, AFAS timeout.
  5. Cutover: oude shortcodes/live-calls verwijderen zodat niemand terugvalt.
  6. Training HR: wanneer “verversen” gebruiken, wanneer HostHob/AFAS-beheer nodig is.

Performance: wat “snel genoeg” betekent

Een werkenbij-site moet onder Googlebot en onder een campagnepiek blijven reageren. Live GetConnector-latencies van honderden milliseconden tot seconden zijn normaal wanneer Profit druk is; vermenigvuldig dat met archiefpagina’s met twintig kaarten en je hebt een trage site die recruiter-landingpages om zeep helpt. Lokale cache maakt TTFB voorspelbaar. We meten voor oplevering: homepage, archief, detail, zoekfilter — met en zonder object cache — en we leggen vast wat acceptabel is voor HR (“maximaal X minuten vertraging na publicatie in AFAS”).

Warming hoort erbij: na een deploy of cache flush pre-populeren we de CPT zodat de eerste bezoeker geen koude sync triggert. Zonder warming “fixen” teams hun cache in de browser terwijl crawlers de koude path blijven raken.

Contentmodel in WordPress

Wij prefereren een dedicated vacature-CPT met gestructureerde velden boven page-builders die AFAS-HTML plakken. Structured data (JobPosting) kan dan veilig uit velden komen in plaats van uit rommelige rich text. Filters (vestiging, vakgebied, dienstverband) worden taxonomieën of meta queries die je kunt cachen. Editors krijgen een read-only scherm voor AFAS-bronvelden plus een beperkt set lokale velden (bijvoorbeeld SEO-title override) zodat HR niet “per ongeluk” de bron overschrijft terwijl de volgende sync alles terugzet.

Voor organisaties met meerdere labels of werkmaatschappijen scheiden we publicatie per site of per term — dezelfde isolation-denkwijze als bij multi-entity ERP, alleen dan voor employer brand.

Observability voor HR, niet alleen voor developers

Als een sync stilvalt, moet iemand buiten development het zien. We leveren een admin-widget: laatste succesvolle run, aantal actieve vacatures, laatste foutmelding in mensentaal, knop “nu synchroniseren”. Alerts gaan naar een HR-operatie-mailbox of Slack-kanaal, niet alleen naar een persoonlijke Gmail van een vertrokken freelancer. Logs bevatten request-id’s richting AFAS zonder CV-inhoud te dumpen.

Koppeling met bredere AFAS-landschappen

Soms wil finance of IT dezelfde token-strategie gebruiken als voor inkoop of uren. Recruitment-leesrechten horen minimal te zijn. Meng GetConnector-vacatures niet met Breed ERP-orderverkeer in één god-token. Voor shop-side AFAS zie WooCommerce Exact/AFAS; houd recruitment-scope apart geautoriseerd en apart gemonitord.

Sollicitatie-UX en bevestigingsmail

Kandidaten vergeven een trage AFAS-backend niet als de bedankpagina faalt. Daarom bevestigen we eerst lokaal: sollicitatie opgeslagen, referentienummer getoond, mail via jullie betrouwbare transactional provider. Daarna pas de write naar Profit. Als AFAS down is, ziet de kandidaat toch succes — en ziet recruitment een open item in de wachtrij met duidelijke retry. Dat is het tegenovergestelde van form-addons die “verzonden” tonen terwijl de CRM-call timeoutte.

Bijlagen (CV, portfolio) gaan naar beveiligde object storage of WordPress private uploads met signed download voor recruiters, niet naar een publieke `/uploads/applications/` map die door zoekmachines wordt gevonden. Retentie volgt jullie policy: na X maanden purgen in WordPress terwijl AFAS de HR-waarheid houdt, of omgekeerd — schriftelijk vastgelegd.

Migratie vanaf live GetConnector-shortcodes

Veel sites hebben al een shortcode of page-template die live AFAS aanroept. Cutover plan: CPT vullen in schaduwmodus, URL-pariteit controleren, redirects voor oude querystring-URLs, daarna shortcodes verwijderen zodat niemand terugvalt. We laten oude en nieuwe detail-URL’s naast elkaar bestaan tot Search Console geen soft-404’s meer toont op de legacy paden. HR krijgt een cheatsheet: publiceren in AFAS, wachten op sync-interval of op “nu verversen”, controleren op staging-achtige preview als jullie dat willen.

Als er meerdere GetConnectors zijn (intern vs extern, NL vs EN), documenteren we welke connector welke CPT voedt. Naamgeving in AFAS is vaak historisch; WordPress mag die geschiedenis niet lekken in slugs.

Testmatrix die we standaard meenemen

  • Nieuwe vacature verschijnt binnen afgesproken TTL.
  • Tekstupdate in AFAS overschrijft lokale non-override velden.
  • Unpublish verwijdert of archiveert volgens 301/410-beleid.
  • Sollicitatie met verplichte bijlage faalt netjes zonder AFAS-call.
  • Sollicitatie happy path landt in Profit gekoppeld aan juiste vacature-ID.
  • Gedwongen AFAS 500 tijdens sync: alert + geen corrupte halve CPT-records.

Die matrix horen we schriftelijk af te tekenen met HR en IT vóór cutover. Zonder handtekening op scenario’s ontstaat later discussie of “de koppeling stuk is” of “AFAS was in onderhoud” — terwijl kandidaten intussen een dode detailpagina zagen. Plan ook wie buiten kantooruren de alert mag acknowledge’en namens HR.

Wanneer niet inhuren

Als je één vacaturepagina handmatig bijhoudt, blijf handmatig. Als AFAS geen betrouwbare publicatieflag heeft en HR toch WordPress als master wil, los eerst governance op. Als je alleen een CSV-export per week nodig hebt, bouw geen real-time theater. Wél inhuren wanneer de werkenbij-site verkeer draait, AFAS de HR-bron is, en live GetConnector-calls of nachtelijke spreadsheets pijn doen. Wél inhuren wanneer sollicitaties “ergens” blijven hangen tussen form-plugin en Profit zonder audittrail.

Gerelateerd: AFAS werkenbij-koppeling · Exact & AFAS ERP (EN) · API agency Europe · recruitment portal case.

Want this built for your team?

Book a 30-minute discovery call with HostHob — WordPress, Laravel, and API delivery from Rotterdam for NL/EU teams.

Book a discovery call