Skip to main content

GDPR Information for Webbuilders

Technical guide for developers and webbuilders - How to implement GDPR consent on application forms

GDPR for Webbuilders: This article provides technical guidance for developers and webbuilders on how to make recruitment websites GDPR-compliant by implementing consent capture on application forms.

ℹ️ Who is this for? This article is for webbuilders, developers, and technical implementers building or customizing recruitment websites that integrate with Carerix. If you're a recruiter or end-user, see Working GDPR Compliant in Carerix.

Overview: What You Need to Build

To make an application form GDPR-compliant, you need to implement three core elements:

  1. Privacy Statement display: Show a link or full text of your privacy policy above the Apply button

  2. Consent checkbox: Require candidates to check "I agree to the privacy statement" before applying

  3. Consent capture & transmission: Send the consent signal and timestamp to Carerix

When a candidate applies with consent checked: Carerix automatically records:

  • ✅ Consent status = "Yes"

  • ✅ Consent date = today

  • ✅ Consent tag = recorded in Carerix

Building Blocks: Privacy Statement & Checkbox

Privacy Statement Display

Before the Apply button, include:

Example HTML (Minimal):

<div>
  <p>We respect your privacy. 
  <a href="/privacy-policy" target="_blank">Read our privacy statement</a>.</p>
  
  <label>
    <input type="checkbox" name="privacy_agreed" required>
    I have read and agree to the privacy statement
  </label>
</div>
  • Position: ABOVE the Apply/Submit button (not hidden)

  • Required: Form cannot submit unless checked

  • Label: Clear text like "I agree to the privacy statement"

  • Accessibility: Use <label> for proper form semantics

✅ Best practice: Make the privacy link clickable and open in a new tab (_blank). This allows candidates to read your full policy before applying.

Implementation Methods

Method 1: WordPress Plugin (Easiest)

For WordPress-based career sites: Use the official Carerix WordPress Plugin.

Features:

  • ✅ Built-in privacy statement widget

  • ✅ Automatic consent checkbox on application forms

  • ✅ Automatically captures consent date & sends to Carerix

  • ✅ No custom code needed

Setup:

  1. Install the Carerix WordPress Plugin (see GitHub repository)

  2. In plugin settings, add your privacy policy URL

  3. Add the privacy widget above your application forms via shortcode

  4. Test: Apply for a vacancy → consent should auto-record in Carerix

Shortcode example:

[cx_privacy_statement]

Method 2: Custom Implementation via REST API

For custom-built websites: Use the Carerix REST API to send consent data.

High-level flow:

  1. Build your form with privacy statement + checkbox

  2. When form submits, validate consent is checked

  3. POST application data to Carerix REST API with consent parameters

  4. Carerix automatically records consent date & status

REST API: Required Parameters

When creating a candidate via POST /v1/candidate, include:

{
  "firstName": "John",
  "lastName": "Doe",
  "email": "john@example.com",
  "privacyApprovalDate": "2026-07-30",
  "consentGivenTag": true
}

Or when creating an application via POST /v1/application:

{
  "candidateId": "12345",
  "vacancyId": "67890",
  "privacyApprovalDate": "2026-07-30"
}

Key fields:

  • privacyApprovalDate — Date consent was given (ISO format: YYYY-MM-DD)

  • consentGivenTag — Boolean flag (true = consent given)

⚠️ API Authentication: Use OAuth2 or API key authentication (provided by your Carerix contact). Never hardcode credentials in client-side code.

Method 3: SRSx Website Integration

For SRSx-based career sites: SRSx has built-in GDPR support.

SRSx automatically:

  • ✅ Displays privacy statement on application forms

  • ✅ Captures consent checkbox

  • ✅ Sends consent data to Carerix

Setup: Configure privacy policy URL in SRSx settings. Consent capture happens automatically when candidates apply.

Testing & Validation

Before Going Live - Checklist

Test these scenarios:

☐ Privacy statement is visible above Apply button

☐ Privacy policy link opens correctly (new tab)

☐ Apply button is disabled until checkbox is checked

☐ Submit application → candidate appears in Carerix

☐ In Carerix, candidate shows Consent Status = "Yes" (Privacy Data tab)

☐ Consent date = application submission date

☐ Try submitting WITHOUT checking box → form rejects

☐ Multiple submissions → multiple candidates, each with consent recorded

Debugging Steps

If consent is not showing in Carerix:

  1. Check browser console for JavaScript errors

  2. Verify privacyApprovalDate and consentGivenTag are being sent in API call

  3. Check Carerix API logs for failed requests (ask your Carerix contact)

  4. Verify API authentication is valid

  5. If using WordPress plugin: Check plugin settings for privacy policy URL

Example Code Snippets

Vanilla JavaScript (Custom Form)

document.getElementById('applyForm').addEventListener('submit', async (e) => {
  e.preventDefault();
  
  const privacyCheckbox = document.getElementById('privacy_agreed');
  
  if (!privacyCheckbox.checked) {
    alert('Please agree to the privacy statement');
    return;
  }
  
  const today = new Date().toISOString().split('T')[0];
  
  const formData = {
    firstName: document.getElementById('firstName').value,
    lastName: document.getElementById('lastName').value,
    email: document.getElementById('email').value,
    privacyApprovalDate: today,
    consentGivenTag: true
  };
  
  try {
    const response = await fetch('https://api.carerix.com/v1/candidate', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(formData)
    });
    
    if (response.ok) {
      alert('Application submitted successfully!');
      document.getElementById('applyForm').reset();
    } else {
      alert('Error submitting application');
    }
  } catch (error) {
    console.error('Error:', error);
  }
});

HTML Form Template

<form id="applyForm">
  <input type="text" id="firstName" placeholder="First Name" required>
  <input type="text" id="lastName" placeholder="Last Name" required>
  <input type="email" id="email" placeholder="Email" required>
  
  <div style="margin: 20px 0; padding: 15px; background: #f9f9f9; border-left: 3px solid #334bfa;">
    <p><strong>Privacy Policy</strong></p>
    <p>We respect your privacy. 
    <a href="/privacy-policy" target="_blank">Read our full policy</a>.</p>
    
    <label style="display: flex; align-items: center; gap: 10px;">
      <input type="checkbox" id="privacy_agreed" required>
      <span>I have read and agree to the privacy statement</span>
    </label>
  </div>
  
  <button type="submit">Submit Application</button>
</form>

Frequently Asked Questions

Q: When should I capture consent?

A: On application submission — the moment the candidate applies for a vacancy. This is the clearest moment of consent.

Q: What date format for privacyApprovalDate?

A: ISO 8601 format: YYYY-MM-DD (e.g., 2026-07-30). Use today's date when consent is given.

Q: If candidate reapplies, do I capture consent again?

A: Yes. Each application submission should include consent capture with that submission date. Carerix tracks consent per application.

A: You can — but then consentGivenTag would be false or omitted. However, GDPR best practice is to require consent before allowing application.

A: In Carerix, the candidate's Privacy Data tab shows: Consent Status = "Yes", Consent Date = [application date], Retention Period = [default from admin setup], Expiration Date = [auto-calculated]. Recruiters can then monitor and extend/anonymize as needed.

Q: Where do I learn about GDPR workflows in Carerix?

A: See GDPR Flows in Carerix (for admins setting up workflows) and Working GDPR Compliant in Carerix (for recruiters managing candidates).

Related Articles

Questions?

Contact our support team at helpdesk@carerix.com with questions about implementing GDPR consent on your website. We're happy to help!

Did this answer your question?