# Verborgen velden

Geef onzichtbare gegevens door aan formulieren via URL-parameters.

## Verborgen velden

Voeg onzichtbare metadata toe aan elke inzending — verkeersbronnen, CRM-ID’s, verwijzingscodes of andere context die je al over de respondent weet. Verborgen velden leggen gegevens vast via URL-parameters zonder iets op het formulier te tonen.

<h2 id="why">Waarom verborgen velden gebruiken?</h2>

<p>
  Formulieren hebben vaak context nodig die de respondent zelf niet kan (of mag) opgeven. Verborgen velden lossen dit op door je toe te
  staan metadata via de URL aan elke inzending te koppelen. Dit is handig als je al iets over de respondent weet voordat ze het formulier
  openen — waar ze vandaan komen, wie hen heeft doorverwezen, of bij welk record ze horen in jouw systeem.
</p>

<ul>
  <li>
    <strong>Verkeersbronnen bijhouden</strong> — weet of een inzending afkomstig is van een e-mailcampagne, een social media-post of je
    website
  </li>
  <li>
    <strong>Verbinden met je CRM</strong> — geef een contact-ID, deal-ID of account-ID door zodat de inzending teruggekoppeld wordt aan het
    juiste record
  </li>
  <li>
    <strong>Opvolging personaliseren</strong> — leg een naam of e-mailadres vast dat je al hebt, en gebruik dit in conditionele logica of
    e-mailmeldingen
  </li>
  <li>
    <strong>Workflows met meerdere formulieren</strong> — geef gegevens van het ene formulier door aan het volgende, zodat respondenten zich
    niet hoeven te herhalen
  </li>
  <li>
    <strong>A/B-testen</strong> — tag elke inzending met de variant of het experiment dat de respondent heeft gezien
  </li>
</ul>

<h2 id="adding">Een verborgen veld toevoegen</h2>

<p>
  Typ <code>/</code> op een lege regel en kies <strong>Verborgen veld</strong> uit de categorie Lay-out. Het werkt alleen op het hoogste
  niveau van het formulier — niet in een kolom of een herhalende groep. Elk verborgen veld heeft twee instellingen:
</p>

<ul>
  <li>
    <strong>Veldtype</strong> — sla een <strong>getal</strong> of <strong>tekst</strong>waarde op (standaard tekst)
  </li>
  <li>
    <strong>Parameternaam</strong> — de URL-parameter die dit veld vult (bijv. <code>utm_source</code>, <code>contact_id</code>). Dit is ook
    de sleutel van dit veld: het is wat een aanroeper verstuurt en waaronder het antwoord terugkomt. Zie{' '}
    <a href="/nl/requests/field-keys">Veldsleutels</a>
  </li>
</ul>

<h2 id="url-parameters">URL-parameter voorinvullen</h2>

<p>
  Een parameternaam moet URL-veilig zijn zoals geschreven: letters, cijfers en <code>- _ . ~ ! * ' ( )</code> zijn veilig. Schrijf spaties
  en andere speciale tekens percent-encoded, bijvoorbeeld <code>recipient%20name</code>. Een lege, ongeldige of dubbele parameternaam is een
  publicatiefout — de publicatie-indicator in de werkbalk markeert het en publiceren stopt totdat je het oplost.
</p>

<p>
  Wanneer een respondent je formulier opent met een overeenkomende parameter in de URL, legt het verborgen veld die waarde automatisch vast.
  Als de parameternaam van je verborgen veld bijvoorbeeld <strong>utm_source</strong> is, stelt de onderstaande URL het veld in op{' '}
  <strong>newsletter</strong>.
</p>

```
https://form.formstep.io/abc123?utm_source=newsletter
```

<p>Je kunt meerdere verborgen velden tegelijk doorgeven:</p>

```
https://form.formstep.io/abc123?utm_source=newsletter&utm_medium=email&contact_id=12345
```

<ul>
  <li>Waarden worden één keer gelezen, bij het openen van het formulier.</li>
  <li>
    Een lege parameter (<code>?utm_source=</code>) laat het veld leeg.
  </li>
  <li>
    Een numeriek verborgen veld negeert waarden die geen getal zijn, dus <code>?score=abc</code> laat het leeg.
  </li>
  <li>
    <a href="/nl/requests/overview">Aanvraaglinks</a> negeren URL-parameters. Verborgen velden krijgen daar hun waarden in plaats daarvan
    uit de <a href="/nl/requests/creating-requests#context">context</a> van de aanvraag.
  </li>
</ul>

<p>
  Op een deellink: wil je een URL-waarde tonen in een zichtbaar veld dat de respondent kan bewerken — bijvoorbeeld om een naam vooraf in te
  vullen — maak dan het verborgen veld de standaardwaarde van het veld door <kbd>@</kbd> te typen. Zie{' '}
  <a href="/nl/building-forms/field-configuration#default-values">Standaardwaarden van andere velden</a>.
</p>

<h2 id="requests-prefill-directly">Aanvragen hebben geen verborgen veld nodig om vooraf in te vullen</h2>

<p>
  De hierboven beschreven techniek van verborgen veld plus <kbd>@</kbd> bestaat omdat een deellink maar één ingang heeft: de URL. Iedereen
  kan een URL bewerken, dus een deellink kan een waarde alleen via een parameter meegeven, en een verborgen veld vangt die op.
</p>

<p>
  Een <a href="/nl/requests/overview">aanvraag</a> heeft een tweede, afgeschermde ingang. De aanroeper stelt de antwoorden in bij het
  aanmaken van de aanvraag, aan de serverkant, zodat een aanvraag een <strong>zichtbare vraag rechtstreeks</strong> vooraf kan invullen —
  zonder verborgen veld en zonder <kbd>@</kbd>-standaardwaarde. De ontvanger opent het formulier met het antwoord al ingevuld.
</p>

<ul>
  <li>
    <strong>
      <code>prefill</code>
    </strong>{' '}
    — beginantwoorden voor <strong>zichtbare vragen</strong>, aangeduid via de veldsleutel. De ontvanger ziet ze en kan ze wijzigen.
  </li>
  <li>
    <strong>
      <code>readonly</code>
    </strong>{' '}
    — de subset van die vooraf ingevulde sleutels die de ontvanger mag lezen maar niet bewerken.
  </li>
  <li>
    <strong>
      <code>context</code>
    </strong>{' '}
    — waarden voor <strong>verborgen velden</strong>, die de ontvanger nooit ziet.
  </li>
</ul>

<p>
  Die scheiding wordt afgedwongen. De sleutel van een zichtbare vraag meesturen in <code>context</code> wordt geweigerd, met een melding dat
  je hem in <code>prefill</code> moet sturen, en andersom wordt ook geweigerd. Voeg dus een verborgen veld toe wanneer je{' '}
  <strong>gegevens wilt meesturen die je niet wilt tonen</strong>, niet alleen om iets vooraf in te vullen.
</p>

> ⚠️ **Een aanvraaglink negeert URL-parameters volledig**
> <p>
>     Bij een aanvraag worden <code>?param=</code>-waarden helemaal niet gelezen — ze vullen geen verborgen veld, en ze overschrijven niets
>     wat de aanroeper heeft ingesteld. Dit is bewust: de ontvanger heeft de link in handen, dus als URL-parameters gehonoreerd zouden worden,
>     zou de ontvanger de eigen context van de aanroeper kunnen herschrijven. De context van de aanvraag wint altijd, omdat dat bij een
>     aanvraag de enige bron is.
>   </p>

<h2 id="common-setups">Veelgebruikte instellingen</h2>

<ul>
  <li>
    <strong>UTM-tracking</strong> — maak verborgen velden aan met de namen <strong>utm_source</strong>, <strong>utm_medium</strong> en{' '}
    <strong>utm_campaign</strong>. Het formulier vangt ze automatisch op uit de URL, en elke waarde wordt opgeslagen als inzendingskolom.
    Het diagram Verkeersbronnen in Analytics leest utm_source en utm_medium op zichzelf uit de URL, met of zonder verborgen velden. Stel
    standaardwaarden per link in via het <a href="/nl/sharing-publishing/sharing-embedding#query-parameters">Deeldialoogvenster</a>.
  </li>
  <li>
    <strong>CRM-integratie</strong> — geef een contact- of deal-ID door vanuit tools zoals HubSpot, ActiveCampaign of Mailchimp. Wanneer
    inzendingen binnenkomen in je integraties, koppelt het ID alles aan elkaar.
  </li>
  <li>
    <strong>Verwijzingsattributie</strong> — elke partner krijgt een unieke link met hun code in de URL. Je ziet precies wie elke inzending
    heeft gegenereerd.
  </li>
  <li>
    <strong>Vooringevulde context</strong> — geef een klantnaam of plantier door aan een ondersteuningsformulier. Gebruik dit in
    conditionele logica om verschillende vragen te tonen, of geef het door aan de bedankpagina.
  </li>
  <li>
    <strong>Vooringevulde antwoorden</strong> — stuur <code>?email=jane@example.com</code> vanuit je e-mailtool en maak dat verborgen veld
    de standaardwaarde van de Email-vraag van het formulier. De respondent ziet zijn adres al ingevuld en corrigeert het alleen als het
    onjuist is.
  </li>
</ul>

> 💡 **Werkt met elke linktool**
> <p>
>     E-mailplatformen (Mailchimp, ActiveCampaign, HubSpot), advertentieplatformen (Google Ads, Meta) en linkverkorters laten je allemaal
>     URL-parameters toevoegen. Verborgen velden vangen ze op zonder extra instellingen aan de formulierzijde.
>   </p>

<h2 id="viewing-data">Gegevens van verborgen velden bekijken</h2>

<p>
  In de inzendingentabel worden verborgen velden weergegeven als eigen kolommen — Formstep markeert ze met een oog-doorgestreept pictogram
  zodat je ze kunt onderscheiden van zichtbare vragen. Ze verschijnen ook in exports, integraties (Google Sheets, webhooks, enz.) en het
  detailpaneel van inzendingen.
</p>

> ℹ️ **UTM in analytics vs. inzendingen**
> <p>
>     Formstep registreert utm_source, utm_medium en utm_campaign bij de analytics van elk bezoek, en het diagram Verkeersbronnen groepeert
>     inzendingen op bron en medium, maar het slaat ze niet op bij elke reactie. Om de waarde van een parameter per inzending te zien, voeg je
>     een verborgen veld met die naam toe (bijv. utm_source). Het verschijnt dan zowel in de inzendingentabel als in analytics.
>   </p>

<h2 id="with-logic">Verborgen velden gebruiken met logica</h2>

<p>
  Verborgen velden werken als <strong>conditiebronnen</strong> in <a href="/nl/building-forms/conditional-logic">conditionele logica</a>.
  Een logica-regel kan de waarde van een verborgen veld lezen en vertakken — door verschillende vragen te tonen, naar een pagina te
  springen, of een <a href="/nl/building-forms/calculated-fields">berekend veld</a> bij te werken.
</p>

<p>
  Bijvoorbeeld: geef <code>?plan=enterprise</code> via de URL door. Een logica-regel controleert of het verborgen veld "plan" gelijk is aan
  "enterprise" en springt naar een specifieke pagina met enterprise-vragen.
</p>

<h2 id="next-steps">Volgende stappen</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Berekende velden](/nl/building-forms/calculated-fields) — Bereken scores, totalen en dynamische tekst op basis van antwoorden
  - [Antwoord doorvoeren](/nl/building-forms/answer-piping) — Verwijs naar elk antwoord elders in het formulier met @ vermeldingen
  - [Aangepaste bedankpagina](/nl/building-forms/custom-thank-you) — Toon berekende waarden en gepersonaliseerde inhoud na inzending
  - [Inzendingsinbox](/nl/submissions-analytics/submission-inbox) — Bekijk waarden van verborgen velden naast gewone antwoorden
</div>
