Werken bij Vigere

Hoe is het om te werken in de pleegzorg en gezinshuiszorg? Lees de verhalen van collega’s die zich iedere dag inzetten voor kinderen, jongeren en gezinnen. Eerlijke ervaringen over het werk, de uitdagingen en de impact die je samen maakt.

(function () { 'use strict';console.log('Vigere Form Submit Tracking is geladen');/* * Configuratie per pagina. */ const formPages = { '/gezinshuiszorg/': { provider: 'jotform', form_id: '261861994296373', form_name: 'gezinshuisouder_interesse', form_location: 'gezinshuiszorg' },'/gezinshuiszorg/gezinshuisouder-worden/': { provider: 'jotform', form_id: '261861994296373', form_name: 'gezinshuisouder_interesse', form_location: 'route_gezinshuisouder' },'/agenda/4754/': { provider: 'jotform', form_id: '261746366832061', form_name: 'informatiebijeenkomst_aanmelding', form_location: 'goes' },'/agenda/informatiebijeenkomst-gezinshuis-starten-in-oudenbosch/': { provider: 'jotform', form_id: '261746366832061', form_name: 'informatiebijeenkomst_aanmelding', form_location: 'oudenbosch' },'/pleegzorg/aanvragen-informatiepakket/': { provider: 'jotform', form_id: '240945264662360', form_name: 'informatiepakket_aanvraag', form_location: 'pleegzorg' },'/vacatures/gezinshuisouder-bij-vigere/': { provider: 'elementor', form_id: 'solliciteer_vigere', form_name: 'vacature_gezinshuisouder', form_location: 'vacaturepagina' } };/* * Bewaart verstuurde events kort om dubbele metingen * door meerdere succesberichten te voorkomen. */ const recentlySentEvents = {};/** * Normaliseert het paginapad. */ function getPagePath() { let path = window.location.pathname;if (!path.endsWith('/')) { path += '/'; }return path; }/** * Geeft de configuratie voor de huidige pagina. */ function getCurrentFormConfig() { return formPages[getPagePath()] || null; }/** * Voorkomt dat hetzelfde event binnen vijf seconden * meerdere keren wordt verstuurd. */ function isDuplicate(eventKey) { const now = Date.now(); const previousTime = recentlySentEvents[eventKey] || 0;if (now - previousTime < 5000) { return true; }recentlySentEvents[eventKey] = now;return false; }/** * Stuurt het definitieve event naar de GTM-dataLayer. */ function pushFormSubmit(config) { if (!config) { return; }const pagePath = getPagePath();const eventKey = [ config.provider, config.form_id, pagePath ].join(':');if (isDuplicate(eventKey)) { console.log( 'Dubbel form_submit-event tegengehouden:', eventKey );return; }const eventData = { event: 'form_submit', form_id: config.form_id, form_name: config.form_name, form_location: config.form_location, page_path: pagePath };window.dataLayer = window.dataLayer || []; window.dataLayer.push(eventData);console.log( 'form_submit naar dataLayer verstuurd:', eventData ); }/** * Controleert of een bericht van een geldig * Jotform-domein afkomstig is. */ function isJotformOrigin(origin) { let hostname;try { hostname = new URL(origin).hostname.toLowerCase(); } catch (error) { return false; }return ( hostname === 'jotform.com' || hostname.endsWith('.jotform.com') || hostname === 'jotformeu.com' || hostname.endsWith('.jotformeu.com') ); }/** * Controleert of het bericht werkelijk afkomstig is van * een Jotform-iframe op de huidige pagina. */ function isJotformIframeSource(sourceWindow) { const jotformIframes = Array.from( document.querySelectorAll( [ 'iframe[src*="jotform.com"]', 'iframe[src*="jotformeu.com"]', 'iframe[id^="JotFormIFrame"]' ].join(',') ) );return jotformIframes.some(function (iframe) { return iframe.contentWindow === sourceWindow; }); }/** * Zet verschillende mogelijke Jotform-berichtformaten * om naar een bruikbaar object. */ function parseJotformMessage(data) { if (data && typeof data === 'object') { return data; }if (typeof data !== 'string') { return null; }try { const parsedData = JSON.parse(data);if (parsedData && typeof parsedData === 'object') { return parsedData; } } catch (error) { /* * Het bericht is geen JSON. Hieronder controleren * we daarom de tekstuele eventnaam. */ }if (data.includes('submission-completed')) { return { action: 'submission-completed' }; }return null; }/** * JOTFORM TRACKING * * Jotform stuurt na een succesvolle verzending vanuit * het iframe een submission-completed-bericht. */ window.addEventListener('message', function (event) { const config = getCurrentFormConfig();/* * Luister alleen op pagina's die als Jotform-pagina * zijn geconfigureerd. */ if (!config || config.provider !== 'jotform') { return; }/* * Accepteer uitsluitend Jotform-domeinen. */ if (!isJotformOrigin(event.origin)) { return; }/* * Controleer daarnaast of het bericht afkomstig is * van het ingesloten Jotform op deze pagina. */ if (!isJotformIframeSource(event.source)) { return; }const message = parseJotformMessage(event.data);/* * Log alleen herkende Jotform-berichten. */ if (message) { console.log('Jotform-bericht ontvangen:', { origin: event.origin, data: event.data }); }if ( !message || message.action !== 'submission-completed' ) { return; }/* * Extra controle als Jotform een Form ID meestuurt. */ const receivedFormId = message.formID || message.formId || message.form_id || '';if ( receivedFormId && String(receivedFormId) !== config.form_id ) { console.warn( 'Jotform Form ID komt niet overeen:', { verwacht: config.form_id, ontvangen: String(receivedFormId) } );return; }pushFormSubmit(config); });/** * ELEMENTOR TRACKING * * Elementor geeft submit_success pas af nadat de * formulierverwerking succesvol is afgerond. */ if (window.jQuery) { window.jQuery(document).on( 'submit_success', function (event) { const config = getCurrentFormConfig();/* * Luister alleen op de geconfigureerde * Elementor-vacaturepagina. */ if (!config || config.provider !== 'elementor') { return; }const form = event.target;if ( !form || !form.classList || !form.classList.contains('elementor-form') ) { return; }/* * Elementor voegt de ingestelde Form ID doorgaans * toe als verborgen veld. */ const formIdField = form.querySelector( 'input[name="form_id"]' );const receivedFormId = formIdField ? formIdField.value : '';/* * Als de ID beschikbaar is, moet deze overeenkomen * met solliciteer_vigere. */ if ( receivedFormId && receivedFormId !== config.form_id ) { return; }console.log( 'Succesvolle Elementor-inzending ontvangen:', config.form_id );pushFormSubmit(config); } ); } else { console.warn( 'Vigere Form Submit Tracking: jQuery is niet beschikbaar.' ); } })();